爲毛上次寫了多開器的思路,沒幾天APP就升級了,而且之前的方式也不管用了。。
IDA看了so裏面的變化,NND,這次除了檢查簽名,還會檢查packageName,並且後續的其他操作也會用packageName來組合路徑。
這樣之前的方式就不行了,直接傳目標的context,會導致它所有數據操作都不是用的自己的/data/data/packageName下的,而失敗。
我想要什麼?
1.我要目標的簽名,也就是說用調用context.getPackageManager().getPackageInfo().signatures時返回的是目標APP的簽名。
2.在檢查包名的地方,context.getPackageName()返回目標的packageName。
3.在操作數據的地方,用我自己的packageName來生存路徑。
如何實現?
想到的一種方式是修改so中的getPackageManager()函數名字,比如獲取簽名地方的getPackageManager()修改爲getPackageManagxx1(),
獲取檢測包明的修改爲getPackageManagxx2()。
開始修改....
最後將獲取簽名的getPackageManager)(改爲了getPackageManagyc()....
將獲取檢測包明的getPackageManager()改爲了getPackageNayc():
替換掉原來的Application:
在我自己的Application中加上這兩個函數:
這兩個函數就會去獲取目標的內容,這樣就能繞過它檢測了。