- UID
- 633
注册时间2005-4-7
阅读权限20
最后登录1970-1-1
以武会友
 
TA的每日心情 | 开心 2024-7-7 04:30 |
---|
签到天数: 22 天 [LV.4]偶尔看看III
|
交作业
第一篇
我没学过汇编,失误的地方让大虾们笑话了
目标:快刀斩乱麻
工具:Ollydbg_fix,Peid0.93
步骤:
先用Peid0.93查壳,无壳,Microsoft Visual C++ 6.0的,直接用Ollydbg载入,插件Ultra string Refernce查找有用信息,双击“注册
码错误”,来到下面,在00401414按F2设断,F9运行程序,输入用户名:llpplplp,注册码:123456,点注册断下
00401414 |. FF15 580441>call dword ptr ds:[<&USER32.KillTi>; \KillTimer
0040141A |. 8D4C24 10 lea ecx,dword ptr ss:[esp+10]
0040141E |. E8 2FC00000 call <jmp.&MFC42.#540>
00401423 |. 6A 01 push 1
00401425 |. B9 E85B4100 mov ecx,x-cut.00415BE8
0040142A |. 895C24 28 mov dword ptr ss:[esp+28],ebx
0040142E |. E8 AFC00000 call <jmp.&MFC42.#6334>
00401433 |. 8B0D 585C41>mov ecx,dword ptr ds:[415C58] //用户名送入ecx
00401439 |. BE 1E000000 mov esi,1E
0040143E |. 68 585C4100 push x-cut.00415C58
00401443 |. BF 01000000 mov edi,1
00401448 |. 8B41 F8 mov eax,dword ptr ds:[ecx-8] //用户名长度送入eax
0040144B |. 8D4C24 14 lea ecx,dword ptr ss:[esp+14]
0040144F |. 2BF0 sub esi,eax
00401451 |. E8 86C00000 call <jmp.&MFC42.#858>
00401456 |. 8B15 585C41>mov edx,dword ptr ds:[415C58]
0040145C |. 8B42 F8 mov eax,dword ptr ds:[edx-8]
0040145F |. 83F8 1E cmp eax,1E //1E十进制是30,长度与30比较
00401462 |. 7D 3A jge short x-cut.0040149E
00401464 |. 3BF3 cmp esi,ebx
00401466 |. 7E 66 jle short x-cut.004014CE
00401468 |> 68 68504100 /push x-cut.00415068
0040146D |. 8D4424 18 |lea eax,dword ptr ss:[esp+18]
00401471 |. 68 585C4100 |push x-cut.00415C58
00401476 |. 50 |push eax
00401477 |. E8 5AC00000 |call <jmp.&MFC42.#924>
0040147C |. 50 |push eax
0040147D |. B9 585C4100 |mov ecx,x-cut.00415C58
00401482 |. C64424 28 0>|mov byte ptr ss:[esp+28],1
00401487 |. E8 50C00000 |call <jmp.&MFC42.#858>
0040148C |. 8D4C24 14 |lea ecx,dword ptr ss:[esp+14]
00401490 |. 885C24 24 |mov byte ptr ss:[esp+24],bl
00401494 |. E8 CBBF0000 |call <jmp.&MFC42.#800>
00401499 |. 4E |dec esi
0040149A |.^ 75 CC \jnz short x-cut.00401468 //上面这个循环的作用是如果用户名长度不足30则后面加0补满
0040149C |. EB 30 jmp short x-cut.004014CE //往004014CE跳了,屁颠屁颠跟过去
0040149E |> 7E 2E jle short x-cut.004014CE
004014A0 |. 8D4C24 14 lea ecx,dword ptr ss:[esp+14]
004014A4 |. 6A 1E push 1E
004014A6 |. 51 push ecx
004014A7 |. B9 585C4100 mov ecx,x-cut.00415C58
004014AC |. E8 1FC00000 call <jmp.&MFC42.#4129>
004014B1 |. 50 push eax
004014B2 |. B9 585C4100 mov ecx,x-cut.00415C58
004014B7 |. C64424 28 0>mov byte ptr ss:[esp+28],2
004014BC |. E8 1BC00000 call <jmp.&MFC42.#858>
004014C1 |. 8D4C24 14 lea ecx,dword ptr ss:[esp+14]
004014C5 |. 885C24 24 mov byte ptr ss:[esp+24],bl
004014C9 |. E8 96BF0000 call <jmp.&MFC42.#800>
004014CE |> 55 push ebp //ebp入栈
004014CF |. 8B2D 585C41>mov ebp,dword ptr ds:[415C58] //将用户名送入ebp
004014D5 |. 33C9 xor ecx,ecx //清空ecx
004014D7 |> 8A0429 /mov al,byte ptr ds:[ecx+ebp] //取用户名第一位
004014DA |. 83E0 7F |and eax,7F //逻辑与运算
004014DD |. 69C0 3B2E08>|imul eax,eax,82E3B //eax乘上82E3B
004014E3 |. 8BF0 |mov esi,eax //结果送入esi
004014E5 |. B8 E10217B8 |mov eax,B81702E1 //将B81702E1送入eax
004014EA |. F7EE |imul esi //与esi相乘
004014EC |. 03D6 |add edx,esi //edx与esi相加
004014EE |. C1FA 06 |sar edx,6 //算术右移
004014F1 |. 8BC2 |mov eax,edx //结果送入eax
004014F3 |. C1E8 1F |shr eax,1F //eax逻辑左移运算
004014F6 |. 03D0 |add edx,eax //结果与edx相加
004014F8 |. 41 |inc ecx //ecx加1
004014F9 |. 83F9 1E |cmp ecx,1E //比较ecx与1E
004014FC |. 8DBC17 7A07>|lea edi,dword ptr ds:[edi+edx+85077A] //将edi+edx+85077A 装入edi
00401503 |.^ 7C D2 \jl short x-cut.004014D7 //ecx小于1E即跳回004014D7继续循环运算
00401505 |. A1 545C4100 mov eax,dword ptr ds:[415C54] //输入的注册码16进制送入eax
0040150A |. 5D pop ebp //ebp出栈
0040150B |. 3BC7 cmp eax,edi //比较输入的假码eax与运算出的真码edi的值
0040150D |. 74 14 je short x-cut.00401523 //飞向光明之路,相等则跳,否则over~可以在这里爆破~~
0040150F |. 53 push ebx
00401510 |. 53 push ebx
00401511 |. 68 58504100 push x-cut.00415058
00401516 |. E8 AFBF0000 call <jmp.&MFC42.#1200> //调用出错提示框
0040151B |. 393D 545C41>cmp dword ptr ds:[415C54],edi
00401521 |. 75 5C jnz short x-cut.0040157F
00401523 |> 8D4C24 18 lea ecx,dword ptr ss:[esp+18]
00401527 |. 8D5424 0C lea edx,dword ptr ss:[esp+C]
注册名:llpplplp
注册码:277316497
注册机以后写 |
|