返回

动态调试无源码的apk

发布时间:2022-03-24 15:30:38 647
# android# android-studio# 技术# 工具# 软件

概览:使用smalidea插件,通过jdwp,用AndroidStudio动态调试smali。

一、所需技能
1、使用AndroidStudio的debug的功能
2、理解smali语法
3、使用apktool反编译apk,并且重新打包

二、方法
1、安装AndroidStudio和smalidea插件
(1)AndroidStudio下载地址:https://developer.android.com/studio/
(2)smalidea插件下载地址:https://bitbucket.org/JesusFreke/smalidea/downloads/smalidea-0.06.zip
插件安装:smalidea-0.06.zip下载完成后,打开AndroidStudio选择
Android Studio -> Preferences -> Plugins -> Install plugin from disk -> 选择 smalidea-0.06.zip 插件 -> 重启,插件就安装好了。

2、使app可调试
(1)假设要调试的apk文件名为androidapp.apk,用apktool d androidapp.apk反编译
(3)在生成的androidapp目录中找到AndroidManifest.xml
(4)用文本编辑器打开并修改里面的<application>标签,如果有debuggable属性,修改为true,如果没有,给<application>标签添加android:debuggable="true"
(5)运行apktool b androidapp,这时候会在./androidapp/dist目录下生成重新打包好的apk。
(6)给这个apk签名。
(7)把这个自签名后的apk安装到安卓模拟器。

3、在AndroidStudio中导入smail源码
(1)打开AndroidStudio后,通过File->Open…选择刚才反编译出来的那个目录“androidapp”,然后等待AndroidStudio建立完索引。
(2)左侧选择Project视图

(3)右键工程主目录:Mark Directory As -> Sources Root

(4)设置sdk,尽量和模拟器的系统版本一致:项目目录->右键->Open ModuleSettings:

4、Android Studio的配置
(1)Run -> Edit Configurations…

(2)点击上面的+符号,然后选择Remote JVM Debug,添加一个远程调试

(3)配置远程调试的端口和一些其他信息

5、打通AndroidStudio和可调试apk之间的通道
(1)在安卓模拟器中运行刚才重新打包并安装好的apk
(2)判断你要debug的那个页面(Activity)在哪个进程里面(信息里面包含了apk的包名):adb shell dumpsys activity | grep mFocusedActivity
(3)命令行运行adb shell ps | grep apk的包名,左边第二列的数字就是apk运行的PID
(4)端口映射:adb forward tcp:5005 jdwp:apk运行的PID
(5)下断点:在刚才找到的Activity页面中的相关代码设置断点
(6)启动debug:点击Attach Debugger to Android Process按钮

(7)选中主进程,然后点击OK按钮

(8)操作apk,使其触发下过断点的代码,AndroidStudio会在相应的代码位置暂停,并显示堆栈和变量等信息

特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(0)
按点赞数排序
用户头像
精选文章
thumb 中国研究员首次曝光美国国安局顶级后门—“方程式组织”
thumb 俄乌线上战争,网络攻击弥漫着数字硝烟
thumb 从网络安全角度了解俄罗斯入侵乌克兰的相关事件时间线