逆向五、用AndroidStudio动态调试smali-Android&iOS论坛-自我提升-淘源码网

逆向五、用AndroidStudio动态调试smali

思路:APK–>反编译为Smali文件–>导入Android Studio里进行动态调试
一、自己新建一个APK
使用Android Studio新建一个包含有用户名和密码的最基础的APK,把这个APK下载到自己的手机里,并连接好数据线
二、把这个APK拖进AndroidKiller里,反编译为Smali文件
点击工程管理,右键Smali—>打开方式—>打开路径

d2b5ca33bd20240621225025

找到smali文件夹

d2b5ca33bd20240621225043

 在C盘里新建一个app-debug文件夹,复制上一步的smali文件夹,并重命名为src

d2b5ca33bd20240621225103

三、在AndroidKiller里查看包名和MainActivity

       记住下面方框里的路径

d2b5ca33bd20240621225119

d2b5ca33bd20240621225132

四、导入smali文件夹到Android Studio

      在Android Studio里打开app-debug文件夹:File—>Open—>C:\app-debug

d2b5ca33bd20240621225159

五、配置JDK

    选择File->Project Structure

d2b5ca33bd20240621225231

 

六、要用AndroidStudio动态调试smali代码,首先要安装ideasmali插件
安装ideasmali插件,File->Settings->Plugins,下载安装ideasmali插件。
ideasmali下载链接:https://pan.baidu.com/s/1htl26qS 密码:0pre

d2b5ca33bd20240621225256

 

找到ideasmali插件的位置(不需要解压压缩包)
 
    然后重启AndroidStudio即可

d2b5ca33bd20240621225318

七、设置需要调试的smali文件。

        app-debug/src文件夹右键–>Make Directory As —>Source Root

d2b5ca33bd20240621225336

 

设置调试器:run–>edit configurations

    +–>Remote,新建一个debug

d2b5ca33bd20240621225353

d2b5ca33bd20240621225404

八、打开命令行 输入命令
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

d2b5ca33bd20240621225438

然后把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

九、动态调试
在灰色框内点击左键

d2b5ca33bd20240621225500

Run–>Debug ‘Smali’进行调试

d2b5ca33bd20240621225519

手机界面会打开APK,你输入的用户名和密码会显示在AndroidStudio里

d2b5ca33bd20240621225534

按F8执行下一步,F9运行程序 

可以看到程序执行的逻辑 Watches窗口中可以点+按钮添加自己想看的寄存器的名字 就可以看到这个寄存器的值了

d2b5ca33bd20240621225550

 

注意:要先设置进程debug,然后再打开DDMS查看端口,这样进程的PID就不会改变,不会出错。 

请登录后发表评论

    没有回复内容