动态调试smali代码

Android Killer对应用进行反编译为smali代码,看看Manifest文件中application标签里面是否有android:debuggable="true",没有的话自己添加,在工程管理器中找到smali文件夹,右键打开路径然后将smali文件夹复制出来并重命名为src

为Android Studio安装smaliidea插件

启动android device monitor,AS 3.0+已经不支持内部直接启动ADM了,路径切换至${PATH}\Sdk\tools然后执行monitor.bat即可

Android Killer打开调试的应用,记住包名与入口点,将应用安装到设备

执行adb shell am start -D -n ${PackageName}/${EntryActivityName}开启debug模式,此时设备将显示等待调试

在ADM中打开devices界面,记下debug应用倒数第二列的值与最后一列的第二个值,然后关掉ADM(否则会占用8700端口,一般是8700)

进行端口转发adb forward tcp:${Value2} jdwp:${Value1},其中${Value2}与${Value1}是上面记下来的那两个值

AS里File -> New -> Import Project -> 选中复制出的src的上级目录 -> ok -> 全部next直至finish,项目结构改为Project,对src文件夹右键Make Directory As ->Source Root

配置远程调试选项,Run -> Edit Configurations -> 添加一个Remote配置 -> 改名 -> 改端口为8700,然后OK

然后File -> Project Structure中选择你的JDK,然后OK

再打开src中的smali文件,即可对其下断点

接下来Run -> Debug ${Name}即可进行调试,这里的名称是上方调试选项的名称,Watches窗口中可以查看寄存器什么的值(需要自己添加),然后还可以执行中添加smali断点

猜你喜欢

转载自www.cnblogs.com/seliote/p/9313622.html