首页
社区
课程
招聘
[讨论]安卓CTF-爬楼梯-动态调试-反调试分析
发表于: 2022-6-13 09:07 10827

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

2022-6-13 09:07
10827

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

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

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


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

上传的附件:
收藏
免费 4
支持
分享
最新回复 (6)
雪    币: 1810
活跃值: (3367)
能力值: ( LV3,RANK:25 )
在线值:
发帖
回帖
粉丝
2
ida动调 我使用的时候也会出现奇奇怪怪的问题。。。可以使用frida将init反调试函数置空

请问楼楼哪里还有这样的安卓CTF题目呢?
2022-6-13 11:17
0
雪    币: 2208
活跃值: (3350)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
我试试看frida Hook掉init试试看,现在奇怪就是找到了native层的方法,没办法调试,程序压根黑屏,点击不了按钮下不了触发不了断点。
关于安卓CTF的题目,目前没有好的途径,都是网上看到有资源就拿下来练手
2022-6-13 13:46
0
雪    币: 755
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
4
有没有系统的Android 反调试教程呢?
2022-7-6 01:41
0
雪    币: 117
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
5

可以用frida hook (需要设置frida为spawn模式启动,可以绕过ptrace反调)

android.widget.Button.setClickable()

修改参数为true即可

启动参数:frida -U -f com.ctf.test.ctf_100 -l palouti.js

脚本如下

function hookSetVisibility() {
    Java.perform(function () {
        let Button = Java.use("android.widget.Button");
        Button.setClickable.implementation = function (arg) {
            console.log("button clicked");
            return this.setClickable(true);
        }
    })
}
setImmediate(hookSetVisibility)


2023-5-2 20:46
0
雪    币: 11011
活跃值: (7424)
能力值: ( LV12,RANK:219 )
在线值:
发帖
回帖
粉丝
6
init_array里把0x00003E64 nop掉就可以调试
2023-5-8 14:03
0
雪    币: 16533
活跃值: (6519)
能力值: ( LV13,RANK:923 )
在线值:
发帖
回帖
粉丝
7
fork的时候因为是拷贝了进程的内容,你下了断点在那个地方,因此子进程会把你的断点的指令会拷贝过去,并且还与arm的三级流水有关
2023-5-8 14:35
0
游客
登录 | 注册 方可回帖
返回
//