reverse之第六更

本题同样也涉及到反调试技术,题目提供一个exe和一个dll,用IDA分析程序:

loc_402000是验证flag是否正确的函数,点开一看。。。一脸懵逼

应该是SMC,所谓SMC就是相当于把某些重要函数在二进制文件中进行加密,这些函数在程序执行的时候会动态解密。然而OD中会出现反调试。

接下来运行程序,然后将之debugger attach到IDA上,加密数据段就解密了,不过可能是我的IDA的问题,这个过程十分漫长。。。。。。。

加载完成之后

在loc_402000位置创建一下函数,F5反编译。发现这个函数首先为得到re1DLL.dll的Trololololololol数组,然后不断将用户输入与Trololololololol数组中的某些元素进行比较,前面一些比较指令相对比较简单,得到了flag的前半部分ISCC{N3v3r_7r4apped_6y_4nt!_XXXXX}
最后的XXXXX是通过re1DLL.dll的Derpaherp函数进行set的

Derpaherp是有三个参数的,这里只有一个是IDA F5的锅,调到汇编仍然可以看到调用Derpaherp之前push了三个参数,最后会有一个strcmp,v13和unk_405048比较,我把unk_405048导出来发现其为ad42f6697b035b7580e4fef93be20b4d,是Md5,拖入cmd5.com跑了一下,跑出来是debug。由此也可以断定Derpaherp内部其实是实现了Md5计算,所以最后的flag为ISCC{N3v3r_7r4apped_6y_4nt!_debug}

有钱的捧个钱场
0%