AS无源码调试APK
AS无源码调试APK
https://www.usmacd.com/2020/03/19/apk_debug/
Apk无源码调试的方法有很多,现在发现使用Android Studio 结合 JEB 感觉良好,
主要是参考 http://www.jianshu.com/p/c7899e5ea182 这篇记录下了具体步骤。
1. 下载 smalidea
https://bitbucket.org/JesusFreke/smali/downloads/smalidea-0.03.zip
在Android studio的插件仓库中没有找到这个插件,需要下载本地安装
File -> Settings -> Plugins -> Install plugin from disk 选择下载的插件,重启后生效。
2. apktool 输出源码文件
https://github.com/iBotPeaches/Apktool/releases/download/2.2.0/apktool_2.2.0.jar
1
|
java -jar apktool_2.2.0.jar d -f xx.apk -o xx
|
如果正常的将输出 smali 源码文件
3. Android Studio 导入源码
File -> New -> import project 选择刚才导出的xx文件夹
4. 增加Android Stuido的调试选项
Android Studio 界面上选择 Run-> Edit Configurations,点击+号,新建remote类型调试
器,默认的监听端口为5005,如果默认端口被占用则需要修改端口号。
5. 以调试模式启动应用
1
|
adb shell am start -D -n aa.bb/.activity
|
进程将挂起,aa.bb是package name,.activity 是要启动的activity 一般指定MainAcvitiy即可
6. 建立调试通道
1
|
adb shell ps | grep aa.bb
|
获得调试进程的pid
1
|
adb forward tcp:5005 jdwp:debug_process_pid
|
执行命令后,可以看到adb监听本地5005 端口。
1
|
> netstat -antp | grep 5005
|
7. 设置断点,调试
点击源码左侧栏可以设置断点,点击工具栏上的debug (一个小虫的按钮),开始调试。在
这个步骤上我遇上了一个错误。
java.io.IOException “handshake failed - connection prematurally closed”
这个错误是因为adb版本问题,取消Android内部的adb集成就可以了。具体方法是
Tools -> Android -> Enable adb integration 取消掉前面的勾就可以了。
如果看到Connected to the target VM, address: ‘localhost:5005’, transport: ‘socket’ 就大功告成了。
8. 其他一些说明事项
要调试apk程序是有一些要求的,下面几种情况可以调试apk程序。
- /default.prop ro.debuggable=1
我的手机就属于这种情况
1
|
getprop | grep ro.debug
|
- APK 中AndroidManifest.xml 有这句 android:debuggable=true
=================== End
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
2018-08-14 Oracle-RAC原理
2018-08-14 ASP.NET跨平台实践:无需安装Mono的Jexus“独立版”
2018-08-14 Oracle与Sql server的区别
2018-08-14 Oracle数据库中心双活之道:ASM vs VPLEX
2018-08-14 使用Visual C ++和Open Folder自定义环境
2018-08-14 vscode Variables Reference