-
-
[原创]看雪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期)
赞赏
他的文章
- [原创]C++类成员指针调用 4320
- [原创]VMP3.2授权分析 53956
- [原创]看雪CTF2017 第十二题分析 5079
- [原创]看雪CTF2017 第十一题分析 6217
- [原创]看雪CTF2017 第十题分析 5832
看原图
赞赏
雪币:
留言: