jeb动态调试,Log插桩
jeb动态调试,Log插桩
1.什么是动态调试
动态调试是指自带的调试器跟踪自己软件的运行,可以在调试的过程中知道参数或者局部变量的值以及履清代码运行的先后顺序。多用于爆破注册码。与静态分析(直接阅读反编译的代码)不同,动态调试允许实时监控内存、寄存器、变量值和执行流程,尤其适合分析复杂逻辑或加密/混淆后的代码。
动态调试 vs 静态分析
特性 动态调试 静态分析 执行状态 程序正在运行 程序未运行,仅分析代码文件 优势 观察实时数据流、内存变化,绕过部分反逆向技术 全面查看代码结构,无执行环境依赖 劣势 需处理反调试机制,依赖运行环境 无法追踪运行时状态,难以分析动态逻辑 典型工具 GDB、LLDB、IDA Pro、Frida、Android Studio JADX、Ghidra、IDA Pro、Binary Ninja
2.动态调试步骤
1.修改debug权限
方法一:在AndroidManifest.xml里添加可调试权限
1 |
|
示例
1.先提取安装包进行后续修改
2.对文件进行修改
3.将权限添加在
application
中4.重新安装完成后即可得到一个可以调试的安装包。
方法二:XappDebug模块hook对应的app
项目地址
方法三:Magisk命令(重启失效)
1 |
|
方法四:刷入MagiskHide Props Config模块
一般来说,在4选项中如果有ro.debuggable那就直接修改
没有的话就选5
修改ro.debuggable的值为1
2.端口转发以及开启adb权限
版本号点击七次开启开发者模式并开启adb调试权限
夜神模拟器:adb connect 127.0.0.1:62001(雷电模拟器自带端口转发)
3.下段点
ctrl+b下断点
4.debug模式启动
1 |
|
adb shell am start -D -n
adb shell am start -D -n 包名/类名
am start -n 表示启动一个activity
am start -D 表示将应用设置为可调试模式
Android修改ro.debuggable 的四种方法-CSDN博客
5.Jeb附加调试进程
激活jeb
在线python运行
使用案例:
1.查询到相关位置
2.将内容编译为JAVA的形式进行分析
3.通过初步分析判断关键点在
chek()
方法对我们输入的字符串进行了怎样的判断。4.双击进入到
chek()
代码,发现它是一个经过一串运算后进行base64编码与字符进行对比5.查找到关键中间字符的代码进行下断点(Ctrl+b)
6.使用debug启动该软件,依次获取包名和启动类名
去掉包名的部分,后边的一串属于是要填写的类名
7.启动后返回界面出现下列提示说明已正常运行debug模式
8.使用jeb对下断点的地方进行调试,我们检查调试端口和报名对应正确且进程存在,点击附上
算号代码:
1 |
|
快捷键:
^F6进入方法
F6跳过方法
F7从方法中跳出来
R运行到光标处
3.Log插桩
定义:Log插桩指的是反编译APK文件时,在对应的smali文件里,添加相应的smali代码,将程序中的关键信息,以log日志的形式进行输出。
调用命令
1 |
|