令App可调试的几种方法
一般自己编写的应用安装到设备上都是可调试的,但是拿到一个发行版本的应用安装上去,发现在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插件,选择允许应用调试,重启即可。这种方法最方便。