-
-
[原创]看雪CTF2017 第八题分析
-
发表于:
2017-6-17 11:39
4625
-
od加载crackme,通过main函数跟踪发现如下:
这里是个switch循环,循环到A3结束,case地址如下:
操作码如下:
通过上述特征,可以确定这是一个小型虚拟机,继续跟踪分析操作码,其主要对应的功能为:
下面主要分析load sn,A9这条指令,其对应的函数为 00402700
继续分析00402450,
首先,对sn进行base64解码
解码后长度必须为5A,sn分为3部分中间以‘--’分隔
这里通知另一线程处理,通知的全局变量为99B6EC,通过这个变量发现3处线程函数:
其作用是分别对运行中的代码进行修改,修改地址可以在线程函数中找到。
下面分析 sn1的处理过程,即00401EC0
对sn1进行异或解码,其中key如下:
sn2的解码也使用了上述key,
大数乘法运算,即sn1*98765432109876543210123==13095069099216326605010245808779535277211541324456558063162414338128147458401
下面分析 sn1的处理过程,即00402090
同样大数运算,sn2*sn2 == 13095069099216326605010245808779535277211541324456558063162414338128147458401
下面分析 sn3的处理过程,即004021D0
首先对sn3进行了编解码,之后进行进制转换,再之后进行大数幂模运算即RSA运算,获取的数据如下:
已知N,E,M,通过rsa工具分解出D,使用D和N解密M可以求的明文C
编码的时候C必须足够大,才能符合sn长度为5A的要求,这也是该题多解原因。
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)