Syer 发表于 2013-12-13 22:26

【吾爱2013CM大赛解答】-- loudy 分析

本帖最后由 Chief 于 2013-12-14 17:33 编辑

先一张效果图。

开始分析吧。本人不才,弄了半天才知道算法是什么。。。。

这里很容易就可以找到 而关键跳的上面那个call就是关键call这里要感谢@Shark恒 的教导,让我可以进门! 致以崇高的敬意!




下面就是算法了
004019ED|> /8D7E 07       /lea edi,dword ptr ds:          ;密码。。
004019F0|. |8BC1          |mov eax,ecx
004019F2|. |33D2          |xor edx,edx
004019F4|. |F7F7          |div edi
004019F6|. |33D2          |xor edx,edx
004019F8|. |8BF8          |mov edi,eax
004019FA|. |8BC1          |mov eax,ecx
004019FC|. |F7F6          |div esi
004019FE|. |33D2          |xor edx,edx
00401A00|. |03C7          |add eax,edi
00401A02|. |BF 1A000000   |mov edi,0x1A
00401A07|. |F7F7          |div edi
00401A09|. |8A442E F8   |mov al,byte ptr ds:
00401A0D|. |80C2 41       |add dl,0x41
00401A10|. |3AC2          |cmp al,dl                                                这里是真码和假吗的比较 al为假吗 dl为真码
00401A12   |0F85 AC000000 |jnz KeyGenMe.00401AC4                   ;作者是一位数字一位数字的验证,一旦不同就会让跳转实现,咱们爆破的时候就可以 先nop这里
00401A18|. |46            |inc esi
00401A19|. |8D56 F8       |lea edx,dword ptr ds:
00401A1C   |83FA 04       |cmp edx,0x4
00401A1F    ^\7C CC         jl short KeyGenMe.004019ED                  这里是当四位密码验证完全后 就会往下比较


00401A21      807D 04 2D    cmp byte ptr ss:,0x2D         ;判断第五位数是否为 “-”如果不是的话就跳转。,
00401A25|.74 0A         je short KeyGenMe.00401A31


第二部分四位密码在这里面 方法和上面一样

00401A49|> /8B4424 10   /mov eax,dword ptr ss:
00401A4D|> |8D2C30         lea ebp,dword ptr ds:
00401A50|. |8BC1          |mov eax,ecx
00401A52|. |33D2          |xor edx,edx
00401A54|. |F7F5          |div ebp
00401A56|. |BD 1A000000   |mov ebp,0x1A
00401A5B|. |8BC2          |mov eax,edx
00401A5D|. |33D2          |xor edx,edx
00401A5F|. |03C7          |add eax,edi
00401A61|. |F7F5          |div ebp
00401A63|. |8A06          |mov al,byte ptr ds:
00401A65|. |80C2 41       |add dl,0x41
00401A68|. |3AC2          |cmp al,dl                                     al为假吗 dl为真码
00401A6A   |75 58         |jnz short KeyGenMe.00401AC4
00401A6C|. |43            |inc ebx
00401A6D|. |03F9          |add edi,ecx
00401A6F|. |46            |inc esi
00401A70|. |83FB 09       |cmp ebx,0x9         
00401A73|.^\7C D4         \jl short KeyGenMe.00401A49

00401A75|.8B7C24 1C   mov edi,dword ptr ss:
00401A79|.807F 09 2D    cmp byte ptr ds:,0x2D         ;判断“-” 符号 同上
00401A7D|.74 0A         je short KeyGenMe.00401A89

第三部分

00401A8E|> /8D5E 02       /lea ebx,dword ptr ds:
00401A91|. |8BC1          |mov eax,ecx
00401A93|. |33D2          |xor edx,edx
00401A95|. |F7F3          |div ebx
00401A97|. |8BC1          |mov eax,ecx
00401A99|. |8BDA          |mov ebx,edx
00401A9B|. |33D2          |xor edx,edx
00401A9D|. |F7F6          |div esi
00401A9F|. |33D2          |xor edx,edx
00401AA1|. |03C3          |add eax,ebx
00401AA3|. |BB 1A000000   |mov ebx,0x1A
00401AA8|. |F7F3          |div ebx
00401AAA|. |8A4437 AD   |mov al,byte ptr ds:
00401AAE|. |80C2 41       |add dl,0x41
00401AB1|. |3AC2          |cmp al,dl                                           al为假吗 dl为真码
00401AB3   |75 0F         |jnz short KeyGenMe.00401AC4
00401AB5|. |46            |inc esi
00401AB6|. |8D46 AD       |lea eax,dword ptr ds:
00401AB9|. |83F8 0E       |cmp eax,0xE
00401ABC|.^\7C D0         \jl short KeyGenMe.00401A8E

00401ABE|.807F 0E 2D    cmp byte ptr ds:,0x2D         ;判断 “-” 符号 同上
00401AC2|.74 0A         je short KeyGenMe.00401ACE
最后四位的key

00401AD3|> /8BC1          mov eax,ecx
00401AD5|. |33D2          xor edx,edx
00401AD7|. |F7F6          div esi
00401AD9|. |8BC1          mov eax,ecx
00401ADB|. |8BDA          mov ebx,edx
00401ADD|. |33D2          xor edx,edx
00401ADF|. |F7F6          div esi
00401AE1|. |33D2          xor edx,edx
00401AE3|. |03C3          add eax,ebx
00401AE5|. |BB 1A000000   mov ebx,0x1A
00401AEA|. |F7F3          div ebx
00401AEC|. |8A043E      mov al,byte ptr ds:
00401AEF|. |80C2 41       add dl,0x41
00401AF2|. |3AC2          cmp al,dl    al为假吗 dl为真码
00401AF4    ^|75 CE         jnz short KeyGenMe.00401AC4 控制在这里了。。判断 是否为第十六位是否为C 不是的话就跳转
00401AF6|. |46            inc esi
00401AF7|. |83FE 13       cmp esi,0x13
00401AFA|.^\7C D7         jl short KeyGenMe.00401AD3    最后程序会这里返回回去正确的retn 、key也就得到了!



小小的分析供大家参考如有错误 请指出,感谢!








brack 发表于 2013-12-13 22:35

膜拜小千大牛

hlkiller 发表于 2013-12-13 22:36

看见迁牛我就滚进来了,膜拜会算法的大牛!

1007475557 发表于 2013-12-13 22:56

这是什么,好像有一贴与此一样
页: [1]
查看完整版本: 【吾爱2013CM大赛解答】-- loudy 分析