思路:APK–>反编译为Smali文件–>导入Android Studio里进行动态调试
一、自己新建一个APK
使用Android Studio新建一个包含有用户名和密码的最基础的APK,把这个APK下载到自己的手机里,并连接好数据线
二、把这个APK拖进AndroidKiller里,反编译为Smali文件
点击工程管理,右键Smali—>打开方式—>打开路径
找到smali文件夹
在C盘里新建一个app-debug文件夹,复制上一步的smali文件夹,并重命名为src
三、在AndroidKiller里查看包名和MainActivity
记住下面方框里的路径
四、导入smali文件夹到Android Studio
在Android Studio里打开app-debug文件夹:File—>Open—>C:\app-debug
五、配置JDK
选择File->Project Structure
六、要用AndroidStudio动态调试smali代码,首先要安装ideasmali插件
安装ideasmali插件,File->Settings->Plugins,下载安装ideasmali插件。
ideasmali下载链接:https://pan.baidu.com/s/1htl26qS 密码:0pre
七、设置需要调试的smali文件。
app-debug/src文件夹右键–>Make Directory As —>Source Root
设置调试器:run–>edit configurations
+–>Remote,新建一个debug
八、打开命令行 输入命令
1)adb shell am start -D -n com.example.myapplication/com.example.myapplication.MainActivity
对apk进行动态调试,这条命令运行后手机屏幕将会进入到调试界面,千万别点手机上弹出来的对话框(不要点Force Close),它是在等待debug接入
2)查看Android Device Monitor 并记住下面红框里的两个值
新版本的AndroidStudio已经淘汰了Android Device Monitor功能,我们不能在AndroidStudio菜单上直接打开Android Device Monitor
找到了新的方法,我的 Android Device Monitor的路径为:C:\Users你的用户名\AppData\Local\Android\Sdk\tools下打开monitor.bat
然后把Android Device Monitor关掉(这里一定要关掉,因为它会占用8700端口 导致后面转发端口失败)
3)开启转发
C:\Users\zhang>netstat -aon |findstr 8700
TCP 127.0.0.1:8700 0.0.0.0:0 LISTENING 16324
看看有没有哪个进程占用端口,就kill掉占用端口PID为的17000进程,没有就直接开启端口转发:
C:\Users\zhang>taskkill /PID 16324 /F
成功: 已终止 PID 为 16324 的进程。
然后输入以下命令开启转发(这里jdwp是自己Android Device Monitor中要调试app的Online值,tcp为debug值)
C:\Users\zhang>adb forward tcp:8700 jdwp:18335
adb server version (41) doesn’t match this client (39); killing…
* daemon started successfully
九、动态调试
在灰色框内点击左键
Run–>Debug ‘Smali’进行调试
手机界面会打开APK,你输入的用户名和密码会显示在AndroidStudio里
按F8执行下一步,F9运行程序
可以看到程序执行的逻辑 Watches窗口中可以点+按钮添加自己想看的寄存器的名字 就可以看到这个寄存器的值了
注意:要先设置进程debug,然后再打开DDMS查看端口,这样进程的PID就不会改变,不会出错。
没有回复内容