首页
论坛
课程
招聘
[原创]第三题 crackMe
2017-10-28 17:32 1090

[原创]第三题 crackMe

2017-10-28 17:32
1090
 

调试器载入CM,直接运行则退出,显然存在anti,于是考虑附加。
附加后,定位到验证函数,又有一堆anti,有一个影响到程序进行的anti call

010A5132    push edx
010A5133    call <crackme.异常111> //nop
010A5138    add esp,C

接着无视弹出的异常,跟到这里

if ( !j__memcmp(v10, &v5[-v6], v4) )//这里跟进去
    {
      sub_42D0B4();
      if ( sub_42D9AB((int)&unk_49B000, (int)v13) == 1 )
        MessageBoxA(0, "ok", "CrackMe", 0);
    }

找到段尾

010A7EFE           | xor ecx,ebp                                  |
010A7F00           | call crackme.109D1E5                         |
010A7F05           | add esp,1B4                                  |
010A7F0B           | cmp ebp,esp                                  |
010A7F0D           | call crackme.109DE51  //CALL1                
010A7F12           | mov esp,ebp                                  |
010A7F14           | pop ebp                                      |
010A7F15           | ret                                          |

CALL1处将会在未nop<crackme.异常111>时出现明码比较,于是nop该call,在下方构造一个死循环,并下断点,重新运行程序,输入0x40个c,再附加断下,得到明码:
key:183920f00e15a0433ee3a8fc90dd9ac164c4142ccf63ca189a8f645ec96ff8de
再来看这里:

if ( !j__memcmp(v10, &v5[-v6], v4) )
    {
      sub_42D0B4();
      if ( sub_42D9AB((int)&unk_49B000, (int)v13) == 1 )//这里跟进去
        MessageBoxA(0, "ok", "CrackMe", 0);
    }

发现存在多解,举几个例子:

123deadbeef183920f00e15a0433ee3a8fc90dd9ac164c4142ccf63ca189a8f645ec96ff8de

123a183920f00e15a0433ee3a8fc90dd9ac164c4142ccf63ca189a8f645ec96ff8de

%d...%d%x...%x183920f00e15a0433ee3a8fc90dd9ac164c4142ccf63ca189a8f645ec96ff8de

[培训]12月3日2020京麒网络安全大会《物联网安全攻防实战》训练营,正在火热报名中!地点:北京 · 新云南皇冠假日酒店

收藏
点赞0
打赏
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回