Android逆向 Android Studio动态调试smali代码

生也有涯,知也无涯。这篇文章主要讲述Android逆向 Android Studio动态调试smali代码相关的知识,希望能为你提供帮助。
工具:
android Studio版本: 3.0.1
smalidea插件: https://github.com/JesusFreke/smali/wiki/smalidea。
反编译工具:本节先用Android Killer,后面介绍apktool。
一 配置插件
下载smalidea插件,然后打卡Android Studio,点击File-> Setting-> Plugins-> Install plugin from disk,选择下载的smalidea.zip文件,安装成功后显示重启Android Studio生效。
二 反编译apk
把第一节编写的激活码程序apk拖入Android Killer中
1 记录apk的包名(com.jhm)和入口Activity(com.jhm.MainActivity)
2 设置该apk的调试属性,改成可调试:AndroidManifest.xml中application标签中设置android:debuggable="true"  (不改是不能调试apk的)
三 手机准备
1 修改完调试属性后在Android Killer里,点击Android-> 编译,成功后生成apk,把这个可调试的apk安装到手机,手机连接电脑打开usb调试。
2 命令行中输入adb shell am start -D -n com.jhm/com.jhm.MainActivity。 开启入口Activity。如图:

Android逆向 Android Studio动态调试smali代码

文章图片

  四 转发端口
1 Android Studio中点击Tools-> Android-> Android Device Monitor,如图,监视器监听到了我们的程序com.jhm。
Android逆向 Android Studio动态调试smali代码

文章图片

看到,Online值是23635,端口值是8700,记录下,关闭Android Device Monitor。(不要关闭手机里的程序,重新打开后Online值会变的,需要重新转发端口)
2 打开命令行,输入命令转发端口
输入adb forward tcp:端口值 jdwp:Online值,即adb forward tcp:8700 jdwp:23635,结果如图:
Android逆向 Android Studio动态调试smali代码

文章图片

说明8700端口被占用了,查找对应的是哪个进程关掉就可以了。
①命令行输入netstat -ano | findstr "8700",回车
Android逆向 Android Studio动态调试smali代码

文章图片
,被1220占用了
②查找1220对应的是哪个进程,命令行输入tasklist | findstr "1220",回车
Android逆向 Android Studio动态调试smali代码

文章图片
看到是studio64.exe,在任务管理器关闭即可。
占用8700端口的进程关掉了,重新命令行输入adb forward tcp:8700 jdwp:23635,回车即可转发成功。
五 导入smali工程
1  AndroidKiller反编译完成后,点击工程管理器标签页-> 右击smali目录-> 打开方式-> 打开文件路径,在E盘新建Jhm文件夹,把smali文件夹拷贝到Jhm文件夹下,并且重命名smali文件夹为src。
2 Android Studio中点击File-> New-> Import Project,找到E:\\Jhm路径,选中Jhm文件,点击Next一路到Finish。
2 在AndroidStudio打开的新工程里选择浏览模式为Project格式,右击src-> Make Directory As-> Sources Root设置为根目录。
六 配置远程调试选项
在Android Studio中点击Run-> Edit Configurations。点击左上角绿色加号-> Remote,Name设置为DebugSmali吧,端口Port设置为8700,点击OK。
Android逆向 Android Studio动态调试smali代码

文章图片

七 配置JDK
Android Studio中点击File-> Project Structure,选中对应java版本,点击ok。
Android逆向 Android Studio动态调试smali代码

文章图片

  八 开始调试
1 找到MainActivity, 下几个断点。
Android逆向 Android Studio动态调试smali代码

文章图片

2 在Android Studio中点击Run-> Debug ‘DebugSmali’,此时程序跑起来,如图:
Android逆向 Android Studio动态调试smali代码

文章图片

输入激活码,点击验证,程序断在我们的断点处,F8单步步过,F7单步步入,F9往下执行。OK可以动态调试了。
 
 
 
       
【Android逆向 Android Studio动态调试smali代码】 

    推荐阅读