令App可調試的幾種方法
來源 http://fancy-blogs.com/2018/01/17/fordebugger/
一般自己編寫的應用安裝到設備上都是可調試的,但是拿到一個發行版本的應用安裝上去,發現在DDMS中看不到,選擇可調試應用也不能選擇,我們就需要讓應用可調試。
修改debuggable屬性
反編譯包修改
一般對於小程序,用apktool反編譯修改<applcation>
標簽,添加android:debuggable="true"
,然后回編譯即可。
解包時只解碼資源文件
1 |
apktool d -s xx.apk -o xxx |
查看AndroidManifest.xml,一般<application>
標簽里沒有debuggable項或者該項為false。
添加debuggable屬性:
1 |
<application android:debuggable="true" ... |
回編譯
1 |
apktool b xxx -o new.apk |
別忘了簽名:
1 |
jarsigner -verbose -keystore name.keystore(證書文件名) -signedjar after.apk before.apk bname(用戶別名) |
一些加殼應用有時候會出現無法回編譯的情況,我們可以不反編譯apk,直接解壓,通過修改AndroidManifest.xml文件來添加屬性。
AXMLEditor
Android中AndroidManifest ARSC 二進制文件修改器AXMLEditor
一般使用sdk中帶的工具aapt,把包里的AndroidManifest.xml提取后移除。利用AXMLEditor向提取出來的AndroidManifest.xml中添加debuggable屬性。
打包好的apk中移除文件aapt r[emove] [-v] file.{zip,jar,apk} file1 [file2 …]
例如:aapt r <你的apk文件> AndroidManifest.xml, 這個就是將apk中的AndroidManifest移除掉
添加文件到打包好的apk中aapt a[dd] [-v] file.{zip,jar,apk} file1 [file2 …]
例如:aapt a <你的apk文件> <要添加的文件路徑>, 這個就是將文件添加到打包好的apk文件中
注意去簽名和重簽名
修改ro.debuggable
通過將default.prop中的ro.debuggable的值置為1來允許系統中應用均可調試。
刷機
通過修改boot.img中的屬性文件,重新生成img,輸入手機。
mprop
init進程會解析default.prop文件,然后把這些屬性信息解析到內存中,給所有app進行訪問使用,所以在init進程的內存塊中是存在這些屬性值的,那么這時候我們可以利用進程注入技術,我們可以使用ptrace注入到init進程,然后修改內存中的這些屬性值,只要init進程不重啟的話,那么這些屬性值就會起效。
adb push mprop /data/local/tmp/
chmod +rx mprop
./mprop ro.debuggable 1
查看內存中該值getprop ro.debuggable
重啟adbdstop;start
利用hook插件
Xposed中下載xinstaller插件,選擇允許應用調試,重啟即可。這種方法最方便。
=============== End