【Android逆向】Android逆向之使用AndroidStudio4.0动态调试Smali
前言
本来我也不想写这篇文章的,但我百度了各种坑后来得靠自己经验才得以解决。动态调试成功那一瞬间是真的很舒服才发现原来那么简单的事情被他们写的转载的那么复杂。所以今天我不得不写一个博客来描述此次动态调试的所有过程和方法以及遇到的坑。
工具准备
Apktool
AndroidStudio
DDMS
模拟器/手机
ADB
SmaliIdea.jar插件
工具下载
反编译APK
把APK反编译成Smali我这里有两种方法
第一种:用Apktool直接反编译
第二种:用dex2jar后再baksmali
这里因为多dex的原因我就用第一种,以抖音为例子
更改APK调试模式
反编译了Smali后还没完还得把APK更改为调试模式
这里我模拟器用的MT管理器更改的你们也可以用其他可以编辑编译后xml的软件更改。打开AndroidManiFest.xml文件在Application标签中任意添加一个属性
android:debuggable="true"
然后保存重新签名安装,或者如果手机破解了签名验证的可以直接安装
以调试的方式打开APK
这里我以夜神模拟器为例子
1 | #首先ADB连接模拟器 |
ADB可能连接不上是因为5037端口被占用的原因,这里可以添加一个环境变量ANDROID_ADB_SERVER_PORT来设置ADB的端口
安装SmaliIdea插件
在上面的连接下载smali后打开Androidstudio的Settings->Plugins然后如图进行安装
在高版本的AS中自带了一个Smali插件我们需要手动修改一下才能使用我们安装的插件
动态调试方式一 ——转发调试
首先用ps和grep命令找到我们软件的进程id,这里要注意先以调试模式启动APK后才能获取到进程
获取后这里开始进行TCP转发
adb forward tcp:8762 jdwp:进程id
这里的8762记住待会我们要用到
如图就是转发成功,成功后挂后台即可
打开AS导入我们刚刚反编译的Smali,然后如图操作
动态调试方式二 ——DDMS调试
在AndroidSDK的tools目录中有一个monitor.bat双击即可打开,一样的需要先连接ADB才能识别出设备