没有功劳也有苦劳吧
软件是从360安全卫士的软件库下载的。版本是2010.0411
破解的不是注册码,而是进入日记的密码。
用peid0.94 查壳nSpack v2.x -> LiuXingPing by wynney *
用OD载入 用esp定律 找到oep
00401000 E8 06000000 call 鸿飞日记.0040100B
00401005 50 push eax
00401006 E8 BB010000 call 鸿飞日记.004011C6 ; jmp 到
0040100B 55 push ebp
0040100C 8BEC mov ebp,esp
0040100E 81C4 F0FEFFFF add esp,-110
我觉得这个oep应该是0040100B 我看这这个头好像是也不知道对不对,请高手指点。因为我破解全凭感觉。
然后lordpe拖壳。Importrec修复。
重新载入拖壳后的软件
直接f9运行起来
默认用户名是 鸿飞 我输入pediy 密码7878吧
密码错误
不要点错误提示 在OD中f12暂停 然后alt+k
然后找到 图1
中的错误提示messageboxa 双击
10062C80 FF15 9C360C10 call dword ptr ds:[<&USER32.M>; user32.MessageBoxA
10062C86 5F pop edi
10062C87 83F8 03 cmp eax,3
10062C8A 5E pop esi
10062C8B 75 0F jnz short krnln.10062C9C
10062C8D 8B4C24 68 mov ecx,dword ptr ss:[esp+68]
10062C91 B8 02000000 mov eax,2
10062C96 8901 mov dword ptr ds:[ecx],eax
10062C98 83C4 64 add esp,64
10062C9B C3 retn
来到10062c80 这个call就是调用了错误对话框吧
在他下面下个断点 10062c86 吧
F9继续运行 点 错误对话框的确定 被断下来了
F8单步走 一直走到主线程,模块 出现鸿飞日记本程序(就是我们载入的程序)的时候
也就是来到0063CE7E
0063CE79 E8 96020000 call Unpack_.0063D114
0063CE7E 83C4 28 add esp,28
0063CE81 6A 00 push 0
0063CE83 68 0A7D4000 push Unpack_.00407D0A
0063CE88 6A FF push -1
0063CE8A 6A 08 push 8
0063CE8C 68 58020116 push 16010258
0063CE91 68 55020152 push 52010255
0063CE96 E8 6D020000 call Unpack_.0063D108
0063CE9B 83C4 18 add esp,18
0063CE9E E9 00000000 jmp Unpack_.0063CEA3
0063CEA3 8BE5 mov esp,ebp
0063CEA5 5D pop ebp
0063CEA6 C3 retn
那么上面这个call也就是我们刚刚出来的call了,也就是在这里出现了错误提示,注释一下记住他。
往上找有个jmp 可以无条件跳过去,不可能是这个了,肯定有个跳 跳到jmp跟这个call之间才对啊,继续往上找。
上面的跳太多了,实在是不好找,干脆来到这段程序的开头吧。
0063CC47 55 push ebp
0063CC48 8BEC mov ebp,esp
0063CC4A 81EC 0C000000 sub esp,0C
0063CC50 6A FF push -1
0063CC52 6A 08 push 8
0063CC54 68 57020116 push 16010257
0063CC59 68 55020152 push 52010255
0063CC5E E8 B7040000 call Unpack_.0063D11A
**********************************
**********************************
**********************************
0063CE3A 68 02000000 push 2
0063CE3F BB 60030000 mov ebx,360
0063CE44 E8 CB020000 call Unpack_.0063D114
0063CE49 83C4 1C add esp,1C
0063CE4C E9 52000000 jmp Unpack_.0063CEA3
0063CE51 6A 00 push 0
0063CE53 6A 00 push 0
0063CE55 6A 00 push 0
0063CE57 68 01030080 push 80000301
0063CE5C 6A 00 push 0
0063CE5E 68 00000000 push 0
0063CE63 68 04000080 push 80000004
0063CE68 6A 00 push 0
0063CE6A 68 5DBC5A00 push Unpack_.005ABC5D
0063CE6F 68 03000000 push 3
0063CE74 BB 00030000 mov ebx,300
0063CE79 E8 96020000 call Unpack_.0063D114 ; 错误对话框
0063CE7E 83C4 28 add esp,28
0063CE81 6A 00 push 0
0063CE83 68 0A7D4000 push Unpack_.00407D0A
0063CE88 6A FF push -1
0063CE8A 6A 08 push 8
0063CE8C 68 58020116 push 16010258
0063CE91 68 55020152 push 52010255
0063CE96 E8 6D020000 call Unpack_.0063D108
0063CE9B 83C4 18 add esp,18
0063CE9E E9 00000000 jmp Unpack_.0063CEA3
0063CEA3 8BE5 mov esp,ebp
0063CEA5 5D pop ebp
0063CEA6 C3 retn
程序太多了为了节约,中间部分用**********代替了。
在这段程序的开头0063CC47 55 push ebp 下短
点运行重新注册
中断在0063CC47 55 push ebp
我们一步一步走,每一个跳都在后面标出来,同时注意看寄存器
下面我把表了注释的贴上
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)