导出smali代码
将被调试的apk(此处使用的是吾爱-教我兄弟学Android逆向中的例子)拖入
AndroidKiller
,等待反编译好在
工程管理->smali
上右键打开文件路径
,将smali文件夹复制出来,并更名为src
设置Android Studio
下载ideasmali插件
插件下载:链接:https://pan.baidu.com/s/1htl26qS 密码:0pre(同样来源于吾爱那位兄弟)安装插件
打开File->Setting->plugins
,在右边会看见一个齿轮图标,点击然后选择Install Plugin from Disk...
,选中下载的文件即可完成安装
- 用Android Studio打开src文件夹,右键
Project中的src
,选择Make Directory as–Sources Root
进行调试
打开虚拟机,将被调试的apk装入虚拟机
打开Android Device Monitor
点击sdk->tools->monitor.bat
在AndroidKiller中打开AndroidManifest.xml
在其中找到android:debuggable="true"
,若为false
则改为true
,若无则添加记录下包名和入口的Activity名(我这包名hfdcxy.com.myapplication,入口的Activity名:hfdcxy.com.myapplication.MainActivity)
打开命令行,输入命令
adb shell am start -D -n hfdcxy.com.myapplication/hfdcxy.com.myapplication.MainActivity
,此时虚拟机进入Waiting For Debugger
模式记录下类似下图的两个值,然后关掉
Android Device Monitor
;或者通过adb shell ps
进行查看(进程名为包名的PID)打开命令行,输入命令
adb forward tcp:8700 jdwp:4414
(这里 jdwp是自己Android Device Monitor中要调试app的Online值 )配置
Android Studio
的SDK
在File->Project Structure->Project SDK
中进行选择打开
Run–>Edit Configurations->+->Remote
,设置名称(任意,我设置为了Smali),端口(8700),点击OK
下好断点,点击
Run->Debug "Smali"
或者右上方的绿色小虫子图标虚拟机会运行起来,进行操作后(我这是输入账号、密码后按下按钮)会停在断点处
可通过点击
Run->Debug "Smali"
或者右上方的绿色小虫子图标进行反复调试,F8
为下一步点击
Variables
中的眼镜
按钮即可打开Watches
窗口,在其中点击+并输入寄存器的编号即可查看寄存器当前的值
遇到的问题
打开
Android Device Monitor
时弹框Could not open Selected VM debug port (8700). Make sure you do not have another instance of DDMS or of the eclipse plugin running. If it’s being used by something else, choose a new port number in the preferences.
解决办法:关掉Android Studio重新打开AndroidKiller无法连接模拟器的问题
在cmd中进行adb devices
也没有反应
解决办法:将android-sdk-windows->platform-tools
下的adb.exe、AndroidKiller->bin->adb
下的adb.exe以及模拟器下(我用的是逍遥,在Microvirt->MEmu
下)的adb.exe全替换为一个adb.exe(我用的是android-sdk-windows->platform-tools
下的adb.exe,因为比较新)对于有些软件有反编译、签名验证或者有壳,则进行修改
AndroidManifest.xml
中的android:debuggable="true"
无法实现根据android的官方文档,如果调试一个APK,必须满足以下两个条件中的任何一个:
1APK的AndroidManifest.xml
文件中的Application标签包含android:debuggable="true"
2
/default.prop
中的ro.debuggable=1
(修改boot.img等)因此当1不生效的时候可考虑2方法