App动态调试

APK使用反编译工具AndroidKiller进行反编译后,在AndroidManifest.xml没有设置android:debuggable属性,没有该属性下debuggable默认是关闭,但是在模拟器或设备系统属性ro.debuggable为1(可以使用命令"adb shell getprop ro.debuggable"来检测该值)可进行动态调试。

1.先查看AndroidManifest.xml是否有设置android:debuggable属性,发现没有有设置android:debuggable属性,可以添加属性为true重打包再进行调试,或者直接使用模拟器直接调试。

2.使用ps看看进程pid值,再通过adb jdwp查看可调试进行有没该pid值。(建议使用网易模拟器)

findstr后面的字符是apk的包名,或者是这个app的关键字

App动态调试_第1张图片

3.使用adb forward tcp:1234 jdwp:1766进程pid值 //将pc机上的1234端口重定向到PID值为1766的手机进程。

E:\Desktop\adb>adb forward tcp:1234 jdwp:1766

4.通过jdb命令连接进行调试jdb -connect com.sun.jdi.SocketAttach:hostname=localhost,port=1234

E:\Desktop\adb>jdb -connect com.sun.jdi.SocketAttach:hostname=localhost,port=1234
设置未捕获的java.lang.Throwable
设置延迟的未捕获的java.lang.Throwable
正在初始化jdb...
>

查看classes:

App动态调试_第2张图片

可以进行动态调试

危害:应用存在被破解篡改和被注入代码等风险

加固建议:

1.加入设置android:debuggable属性;

2.检测调试器,当检测到软件调试器链接时,终止软件运行;

3.检测模拟器

你可能感兴趣的:(App动态调试)