apk动态调试
2024-08-28 07:59:30
- android.os.Debug类提供了isDebuggerConnected()用于检测是否有调试器链接;
- AndroidManifest的application节点中加入android:debuggable="false"是程序不可被调试;
验证方法--检测是否可以被调试:
if( getApplicationInfo().flags&=ApplicationInfo.FLAG_DEBUGGABLE!=0){
System.out.println("debug");
android.os.Process.killProcess(android.os.Process.myPid());
}
用apk2.0.jar:
- 反编译 java -jar apktool-2.0.0.jar d -d test.apk -o test.debug,本机可以用apktool d -d lan.apk -o test.debug
- 找到Activity的onCreate()方法: invoke-super {p0, p1}, Landroid/app/Activity;->onCreate(Landroid/os/Bundle;)V
- 添加invoke-static {}, Landroid/os/Debug;->waitForDebugger()V
- 回编: java -jar apktool-2.0.0.jar b -d test.debug -o test.debug.apk,本机可使用apktool b -d test.debug -o test.debug.apk
- 签名
- 安装
NetBeans7.4:
- 删除test.debug目录下的build目录
- 打开Netbeans,选择““文件”-“新建项目”-“基于现有源代码的java项目”
- 在“项目文件夹处”选择test.debug目录
- 在“源包文件夹”出选择test.debug.smali目录
- 点击完成,项目创建完毕
调试:
- 在模拟器中运行重新打包的test.apk,test.apk会处于挂起状态
- 在netbeans中找到入口activity的oncreate函数,在刚才invoke-static {}, Landroid/os/Debug;->waitForDebugger()V,下一行断点
- 在netbeans中,选择“调试”-“连接调试器”
- 调试器:JPDA
连接器:SocketAttach
传输:dt_socket
主机:127.0.0.1
端口:8700--通过DDMS查看调试端口
超时:[可不填]
- 调试器:JPDA
链接:http://www.colordancer.net/blog/2013/09/16/apktool-2-0-netbeans-7-3-%E8%B0%83%E8%AF%95apk/
最新文章
- Python模块 (xlsxwriter)
- [css] 垂直居中方法
- jQuery制作瀑布流(转)
- 转:MFC创建多线程实例
- MFC实现登录对话框连接access数据库方式
- mybatis自动生成mapper,dao映射文件
- Ubuntu18 的超详细常用软件安装
- oracle自带总页数分页sql
- k8s相关端口表-以及周边工具
- Map相关问题
- javascript实现的拖拽回放
- Android中,利用Intent传递对象值
- JSP相关知识
- Android 知识梳理
- 【Python学习 】Python实现的FTP上传和下载功能
- 使用Ajax内容签名,减少流量浪费
- java — 重载和覆盖
- tomcat8特性
- django-BBS(1)
- SVG路径字符串格式