Android實現免安裝外掛程式 二

2021-08-20 18:49:03 字數 1770 閱讀 2564

在啟動activity中出現activitynotfoundexception有兩種可能,一種是該activity的應用未安裝,一種是該activity未在androidmanifest中申明。在外掛程式化中,屬於情況一。所以在startactivity中需啟動activity實際是系統中不能找到的,我們又該如何騙過系統,正常啟動外掛程式中的activity呢?這裡就要引入hook的機制了,我們用乙個正常的activity代替這個外掛程式activity騙過系統服務,然後再在自己的程序中拉起外掛程式activity,而這個activity就像乙個殼一樣,幫助我們完成這次欺騙活動。

然後hook的地方需要注意了,在startactivity的流程中找乙個單例,確保這個單例物件在每次startactivity都會被用上,而不會被其他物件代替。在這裡,我們看到流程中activitymanager裡剛好有個單例(基於android o框架)

public

static iactivitymanager getservice()

private

static

final singletoniactivitymanagersingleton =

new singleton()

};

我們想辦法把iactivitymanagersingleton.get() hook掉,來看下singleton是什麼

public

abstract

class singleton

return minstance;}}

}

到這裡可以分析得到,我們只要把minstance 替換掉就可以了。如下:

public

void

hookactivitymanager() , new activityinvokehanlder(am));

instance.set(object, proxy);

} catch (classnotfoundexception e) catch (nosuchfieldexception e) catch (illegalacces***ception e)

}

到這裡雖然我們startactivity中雖然指定的是外掛程式activity,但是在流程中我們用乙個殼activity代替了,系統認為可以正常處理它。

private

class

activityinvokehanlder

implements

invocationhandler

@override

public object invoke(object proxy, method method, object args) throws throwable

if (loaddexutils.plug_activity_name[0].equals(intent.getcomponent().getclassname())

|| loaddexutils.plug_activity_name[1].equals(intent.getcomponent().getclassname())) }}

}return method.invoke(mbase, args);

}}

到這裡,我們開始傳的intent對應activity雖然是外掛程式中的activity,但是在把它交給系統之前,我們做了乙個偷梁換柱的動作,告訴系統乙個已經在androidmanifest中註冊的activity。最終系統經過檢測,這是乙個合法的intent。

Android實現免安裝APK外掛程式 三

雖然startactivity正常了,但是這不是要啟動的activity,豈不是做了無用功。然而事情往往沒那麼簡單,既然系統服務那關已經過了,我們得自己做點事情了。activity的建立及生命週期都是在自己程序中完成的,所以activitythread這個類似乎可以幫我們做事情。注意到activit...

Android實現免安裝APK外掛程式(四)

在獲取資源時,有三個重要的類resources,assetmanager,theme,我們通過context獲取它們的物件 override public assetmanager getassets override public resources getresources override p...

zencart 免登入購買外掛程式安裝

文章出處 134.8 kb,585 次 2.解壓後,將admin includes optiondarrows拷貝到zencart 的對應目錄。注意your template改正為自己的模板名。3 安裝sql指令碼 cowoa.sql 4 在後台啟動cowoa 後台後台 商店設定 cowoa 選擇相...