Android studio动态调试smali代码

余生颓废 提交于 2019-11-27 12:45:40

1.用AndroidKiller把apk反编译成smali文件; 
新建一个文件夹 然后把打开文件路径目录里的smali文件夹复制到文件中并改名为src ; 

反编译后记得查看清单文件,在application标签里面要有 android:debuggable=”true” 这句代码,没有是不能调试apk的,有的apk中没有这句代码要自行添加上,再回编译apk,便于后续安装apk; 
2.安装ideasmali插件,File->Settings->Plugins,下载安装ideasmali插件; 
打开Android Device Monitor,(Tools/Adndroid/Android Device Monitor); 
找到要调试APK的包名和入口的Activity,查看清单文件; 
把自己要调试的APK安装到手机中 并用数据线连接手机 打开USB调试模式,也可以装在模拟器上,adb install pc上apk路径; 
打开命令行 输入命令 adb shell am start -D -n 包名/入口activity, 对apk进行动态调试 这条命令运行后手机屏幕将会进入到调试界面(如果手机屏幕没有进入到调试界面说明USB没有连接好手机 或者USB调试模式 没有打开 或者其他原因); 
查看Android Device Monitor 记住下图圈起来的两个值 然后把Android Device Monitor关掉(这里一定要关掉,因为它会占用8700端口 导致后面转发端口失败); 

è¿éåå¾çæè¿°

如果还遇到 “error: could not install smartsocket listener: cannot bind to 127.0.0.1:port号: 通常每个套接字地址(协议/网络地址/端口)只允许使用一次。 (10048)”这种问题。 
解决:Cmd:netstat -nao | findstr port号,查找占用进程的pid 
然后任务管理器关掉相应pid的进程。

3.用AndroidStudio导入文件夹(里面含有smali文件改名后的src文件夹),next知道finish; 
点击Android选择Project 对之前反编译的 src文件夹右键–>Make Directory As —>Source Root; 
配置远程调试的选项,选择Run–>Edit Configurations 并增加一个Remote调试的调试选项,端口选择:8700; 
选择File–>Project Structure 配置JDK; 

è¿éåå¾çæè¿°
4.下断点 下好断点之后Run–>Debug’smali’,这里的smali是我们之前配置好的调试选项; 
按F8执行下一步 F9运行程序 
可以看到程序执行的逻辑 Watches窗口中可以点+按钮添加寄存器的名字 就可以看到这个寄存器的值。 

è¿éåå¾çæè¿°

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!