首页
论坛
课程
招聘
[讨论]安卓CTF-爬楼梯-动态调试-反调试分析
2022-6-13 09:07 4023

[讨论]安卓CTF-爬楼梯-动态调试-反调试分析

2022-6-13 09:07
4023

【1】关于逆向破解简述

程序界面,点击按钮"爬一层楼"则已爬的楼层+1
按钮"爬到了,看FLAG"无法点击
图片描述
1.分析清单文件,获取包名,以及入口类
图片描述
2.分析入口类
图片描述
3.AndroidKill修改并重新编译
图片描述
图片描述
此时,重新安卓编译后的APK,点击一次已爬楼层按钮后,则能够点击出现FLAG了
虽然此时已经告破,但是想研究一下so层的反调试和so层的方法具体做了什么

【2】静态分析so文件

1.发现不是静态加载方法,那么应该是JNI_onLoad动态注册;发现在JNI_onLoad前还有_init函数,所以分析顺序:_init->初始化数组->JNI_onLoad->注册方法
图片描述
2.分析_init
图片描述
2.1但是奇怪了,动态调试了好几次,都在fork()后就出错了,提示:got SIGCHLD signal (Child status has changed)

2.2只能将fork()nop掉,才能跑起来(这里是为什么呢?求指教

图片描述
3.接下来就能够断在JNI_onLoad函数
图片描述
3.1通过动态调试JNI_onLoad的注册方法的参数,获得注册方法位置是0xF90
图片描述
分析传入参数,通过算法便能计算除FLAG

【3】求助疑问

3.1但是很奇怪,找到注册方法后,并且下了断点,放开程序运行,结果加载失败,程序并不会运行起来,而是就卡在那,但是IDA动态调试页面却又是运行状态
3.2是否是在_init的时候nop那句fork出现了问题?导致无法加载成功?
3.3分析_init具体是如何反调试的呢?
图片描述

 

上传示例apk,以上几个问题还望有大神能够解惑!


[2022夏季班]《安卓高级研修班(网课)》月薪两万班招生中~

上传的附件:
收藏
点赞2
打赏
分享
最新回复 (3)
雪    币: 1071
活跃值: 活跃值 (1618)
能力值: ( LV3,RANK:25 )
在线值:
发帖
回帖
粉丝
Forgo7ten 活跃值 2022-6-13 11:17
2
0
ida动调 我使用的时候也会出现奇奇怪怪的问题。。。可以使用frida将init反调试函数置空

请问楼楼哪里还有这样的安卓CTF题目呢?
雪    币: 492
活跃值: 活跃值 (871)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
shmilyaxy 活跃值 2022-6-13 13:46
3
0
我试试看frida Hook掉init试试看,现在奇怪就是找到了native层的方法,没办法调试,程序压根黑屏,点击不了按钮下不了触发不了断点。
关于安卓CTF的题目,目前没有好的途径,都是网上看到有资源就拿下来练手
雪    币: 360
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
安小白MCY 活跃值 2022-7-6 01:41
4
0
有没有系统的Android 反调试教程呢?
游客
登录 | 注册 方可回帖
返回