首页
社区
课程
招聘
[原创]看雪CTF2017 第十二题分析
发表于: 2017-6-25 12:06 5078

[原创]看雪CTF2017 第十二题分析

2017-6-25 12:06
5078

先说一下如何过反调试,调试环境为ida和android模拟器,ida卡到不行啊,羡慕有真机的。

模拟器启动程序后使用ida附加,注意先不要点check按钮,不然so后启动。

ida在exit处下断点,继续执行程序,点check按钮加载so,不出意外ida会断在exit函数处。

在ida的threads窗口找到当前线程,将其挂起即可,去除反调试功能。

在check函数中依然有反调试检查,由于程序有cache检查的bug,可继续调试,真机还不确定。


使用工具dex2jar和jd-gui反编译java代码,主要函数如下:

首先,对输入sn进行编码,分别为ca.a,ba.a,ab.a完成后组成字符串传给ua.check,并且返回1

ua.check是个so库,通过ida进行反编译,其check入口为:

继续跟踪do_check函数

输入sn长度必须为36,且后面补4个4

上面是设置des密钥,这个过程被作者修改过,我们可以把扩展后key直接拿出来用。

对sn进行des加密

上面是更新rc6的key(替换key后4字节为des加密结果+32处4字节),并且进行rc6加密。加密结果与必须为:

rc6扩展key也被修改过,如下:

逆向方法如下:

1. 作者给出了前8个字符为kxuectf{,猜测最后一个字符为}。前8个字符正好是des块长度,也就是说,我们知道了rc6的部分明文和密文,可以通过rc6解密穷举出rc6后4位key和全部rc6的明文。

作者的rc6算法效率真的很低啊。穷举过程非常漫长。。。。


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

收藏
免费 1
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//