APP渗透-JEB动态调试
Jeb环境准备
1、首先进行jeb的激活,前提是准备好java环境,最好是11
然后根据以下这个链接进行激活使用
https://www.52pojie.cn/forum.php?mod=viewthread&tid=1598242
2、安装配置adb工具
注意是这里的adb.exe
然后把这个路径设置好环境变量即可
3、模拟器设置
还要开启root模式
还得进入虚拟机进行开发者模式的打开
就是进入设置里面然后找到关于平板电脑这个选项,然后进入点击版本号一直点,直到显示开发者模式已经打开
验证是否真的开启,点击系统-->高级里面这边就会有一个开发者选项
显示开启就已经打开了
最后滑到最下面的USB调试,点击开启即可
到此这个调试环境就准备好了
调试
首先使用adb工具进行测试是否能链接上
命令
adb devices //如果没有卡其USB调试的话就会显示offline,反之显示的在线
第一次运行的话第一次不会显示设备需要第二次运行就有了
1、开始调试
首先在APP里面加上动态调试的代码
android:debuggable="true"
在AndroidMainfest.xml里面加上可调式权限也就是上面的代码
首先利用MT或者NP管理器对APK进行反编译
反编译这个文件
在里面的application下面加入以上的代码
然后重新打包拿出来到jeb环境的主机
之后重新安装到模拟器里面,然后直接将apk拖入jeb工具中就可以了
使用靶场进行演示
输入密钥来判断是否是正确的
首先判断代码的逻辑
首先在jeb里面搜索关键字"密钥"
然后查看能进入这个正确的逻辑
点击解析,就能直接解析为java代码
这个就是对输入的数据进行内部比较,所以跟进函数check,双击进入即可
这边的代码逻辑就是去判断输入是否是以flag{}格式来输入的
最后返回的是进行输入的对比的结果,那么如果这个返回值是true的话那么就能直接进入正确的逻辑
那么右键解析定位到对应的源代码
返回的p1,这里在上面的数据编码这个流程可以打个断点然后进行运行调试,因为那个p1是返回的结果的,所以对比数据只能是在上面,而且就是encode这个函数进行获取的,所以我们直接选中这行代码Ctrl+B打上断点,然后在模拟器中打开靶场,自后在jeb点击开始
点击附上
之后看这边的变量的变化进行调试
我们输入数据
flag{6356}
然后jeb点击下一步也就是进入或者跳过
点击进入第一步
不知道在做什么流程可以直接右键解析
可以看到这边是进入了这个函数
然后跳过这个加密流程直接看返回的结果
就运行到这里来了,然后下一步查看加密结果就得到了这个内部进行对比的密钥,然后输入到靶场就能进入正确的流程
总结:
动态调试可以更加直观的去进行代码的跟踪和调试,然后去修改函数的逻辑和返回值达到很多的效果。真实环境下需要很多的时间去寻找一些入口和代码逻辑的判断分析。