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点击下一步也就是进入或者跳过
点击进入第一步

不知道在做什么流程可以直接右键解析
可以看到这边是进入了这个函数

然后跳过这个加密流程直接看返回的结果
就运行到这里来了,然后下一步查看加密结果就得到了这个内部进行对比的密钥,然后输入到靶场就能进入正确的流程


总结:
动态调试可以更加直观的去进行代码的跟踪和调试,然后去修改函数的逻辑和返回值达到很多的效果。真实环境下需要很多的时间去寻找一些入口和代码逻辑的判断分析。

posted @ 2023-10-23 23:17  Running_J  阅读(652)  评论(0编辑  收藏  举报