-
-
第七题 不问少年crackme Writeup
-
发表于:
2017-6-15 00:13
3702
-
本题主要对输入进行多次置换后,与一固定的表进行匹配,若匹配成功,输入将用于解密一段加密后的shellcode,最后执行这段shellcode。解这题主要是通过逆推得到最初的正确输入。
第一步对输入处理的函数位于sub_411b30,这个函数的内容在执行前是经过加密的,通过与“PEDIY”异或进行解密,解密函数为sub_410dd6。

进入sub_411b30中,首先将输入的每一位与0xcc异或得v1,最后到一个大小为0x40的表中查找v1的偏移offset。表如下所示。

得到偏移offset后,会将offset除以5,得到的商加上5后加上offset得到新的偏移Newoffset。同样还会将Newoffset继续除以5得到商加上5后加上Newoffset得到Newoffset1,如此循环,循环的次数取决于这是输入数据的第几位。循环如下所示。
最后将得到一串值,这串值的每一位将和0xcc进行异或得到v2,并将v2逻辑左移3位的值和v算术右移5位的值进行或运算,得到新的一串值。这些是在函数sub_4116ec中实现的。
[注意]看雪招聘,专注安全领域的专业人才平台!