您的位置:首页 > 其它

北京理工大学信息安全与对抗竞赛----crackme02分析

2012-05-20 08:28 204 查看
不知道为什么 ,最近睡眠不好,晚上睡不着,早上醒得早。看吧,今天早上又被鸟吵醒了。

醒了,看着无事来破解下这个,在测试过程中发现,这个crackme有个搞笑的地方。

就是注册码只要是1234,无论你输入或者不输入用户名,都会提示成功(当然有例外,这也是本题的所在),到官方一提交,夷,错了,我勒个去,居然没看题目就做了。

原来是要求用户名必须是2012,得,你牛。

看我怎么搞定你!

当然,首先还是找到按钮事件。

00401004   .  55            push    ebp
00401005   .  8BEC          mov     ebp, esp
00401007   .  81EC 10000000 sub     esp, 10
0040100D   >  6A FF         push    -1
0040100F   .  6A 08         push    8
00401011   .  68 11000116   push    16010011
00401016   .  68 01000152   push    52010001
0040101B   .  E8 D7010000   call    004011F7                         ;  获取注册码
00401020   .  83C4 10       add     esp, 10
00401023   .  8945 FC       mov     dword ptr [ebp-4], eax
00401026   .  68 04000080   push    80000004
0040102B   .  6A 00         push    0
0040102D   .  8B45 FC       mov     eax, dword ptr [ebp-4]
00401030   .  85C0          test    eax, eax                         ;  注册码输入是否为空
00401032   .  75 05         jnz     short 00401039
00401034   .  B8 509B4600   mov     eax, 00469B50
00401039   >  50            push    eax
0040103A   .  68 01000000   push    1
0040103F   .  BB 60124000   mov     ebx, 00401260
00401044   .  E8 A8010000   call    004011F1                         ;  eax为注册码的十六进制形式
00401049   .  83C4 10       add     esp, 10
0040104C   .  8945 F8       mov     dword ptr [ebp-8], eax           ;  注册码放入XXX
0040104F   .  8B5D FC       mov     ebx, dword ptr [ebp-4]
00401052   .  85DB          test    ebx, ebx
00401054   .  74 09         je      short 0040105F
00401056   .  53            push    ebx
00401057   .  E8 8F010000   call    004011EB
0040105C   .  83C4 04       add     esp, 4
0040105F   >  E8 AF000000   call    00401113                         ;  关键call,其实就是读取用户名的值
00401064   .  3945 F8       cmp     dword ptr [ebp-8], eax           ;  注册码与XXXXX进行比较
00401067   .  0F85 40000000 jnz     004010AD                         ;  关键跳
0040106D   .  68 04000080   push    80000004


来看看关键call中的一部分。

0040118F  |.  8945 FC       mov     dword ptr [ebp-4], eax
00401192  |.  8B45 FC       mov     eax, dword ptr [ebp-4]
00401195  |.  E9 00000000   jmp     0040119A
0040119A  |>  8BE5          mov     esp, ebp


如果你仔细看,你会觉得真他妈脑残。

就像看a=b; b=a;一样。而且还jmp到下一句。

反正总的来说,关键call就是把用户名,也就是2012放入堆栈中,等着对比就可以了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: