跟着无聊兄学习一下,第一个照着可以成功脱掉
至于第二个带KEY的,我多做了一步,就是在输入KEY之后改了AL标志位
具体步骤:
OD载入程序,下断:bp MessageBoxA BP ThunRTMain SHIFT+F9
程序被断下,是程序的NAG提示,我们不管它,点确定,出现要输入KEY,
我们任意输入,然后点击OK,OD中,MessageBoxA已成功断下,F9,ALT+F9
找断首然后下断
代码如下:''bbs.pediy.com" 是我输入的假KEY
0132C010 53 push ebx 段首
0132C011 8BD8 mov ebx, eax
0132C013 B8 04983401 mov eax, 1349804 ; ASCII "bbs.pediy.com"
0132C018 BA 00010000 mov edx, 100
0132C01D E8 82A1FDFF call 013061A4
0132C022 B8 04993401 mov eax, 1349904
0132C027 BA 00010000 mov edx, 100
0132C02C E8 73A1FDFF call 013061A4
0132C031 68 00010000 push 100
0132C036 68 04983401 push 1349804 ; ASCII "bbs.pediy.com"
0132C03B A1 389A3401 mov eax, dword ptr [1349A38]
0132C040 50 push eax
0132C041 E8 A2A0FDFF call 013060E8 ; jmp 到 USER32.GetWindowTextA
0132C046 68 00010000 push 100
0132C04B 68 04993401 push 1349904
0132C050 A1 3C9A3401 mov eax, dword ptr [1349A3C]
0132C055 50 push eax
0132C056 E8 8DA0FDFF call 013060E8 ; jmp 到 USER32.GetWindowTextA
0132C05B B8 04983401 mov eax, 1349804 ; ASCII "bbs.pediy.com"
0132C060 E8 53B5FDFF call 013075B8
0132C065 85C0 test eax, eax
0132C067 74 0E je short 0132C077
0132C069 B8 04983401 mov eax, 1349804 ; ASCII "bbs.pediy.com"
0132C06E E8 45B5FDFF call 013075B8
0132C073 85C0 test eax, eax
0132C075 75 04 jnz short 0132C07B
0132C077 33C0 xor eax, eax
0132C079 EB 02 jmp short 0132C07D
0132C07B B0 01 mov al, 1
0132C07D A2 B4263401 mov byte ptr [13426B4], al
0132C082 803D B4263401 0>cmp byte ptr [13426B4], 0
0132C089 74 15 je short 0132C0A0
0132C08B 6A 01 push 1
0132C08D 68 04993401 push 1349904
0132C092 68 04983401 push 1349804 ; ASCII "bbs.pediy.com"
0132C097 E8 1CFAFFFF call 0132BAB8
0132C09C 85C0 test eax, eax
0132C09E 75 04 jnz short 0132C0A4 //我改的是这个跳转,目的是让他执行MOV AL,1
0132C0A0 33C0 xor eax, eax
0132C0A2 EB 02 jmp short 0132C0A6
0132C0A4 B0 01 mov al, 1
0132C0A6 A2 B4263401 mov byte ptr [13426B4], al
0132C0AB 803D B4263401 0>cmp byte ptr [13426B4], 0
0132C0B2 75 18 jnz short 0132C0CC
0132C0B4 6A 30 push 30
0132C0B6 A1 682A3401 mov eax, dword ptr [1342A68]
0132C0BB 05 E9010000 add eax, 1E9
0132C0C0 50 push eax
0132C0C1 68 D4C03201 push 132C0D4 ; ASCII "Key is not valid, please try again!"
0132C0C6 53 push ebx
0132C0C7 E8 44A0FDFF call 01306110 ; jmp 到 USER32.MessageBoxA
0132C0CC A0 B4263401 mov al, byte ptr [13426B4]
0132C0D1 5B pop ebx
0132C0D2 C3 retn
修改之后,我们继续F9,然后程序就在ThunRTMain上断下来了,看EAX的值就是OEP
其它的就可以照无聊兄做了!
如果不更改AL标志,我这里断不到ThunRTMain
放个脱过壳的,无聊兄的是第一个的,我放第二个,呵呵