【免责声明】 :纯属技术交流
为hb****写的破解笔记
破解一软件,名字是厨卫XXXXX,主要是去除自校验的思路。
查壳,ASPack 2.001 -> Alexey Solodovnikov
应该没多大问,手动脱壳。无法运行,修复是一个习惯。
修复后,一看是Borland Delphi 6.0 - 7.0,运行后更很郁闷,一闪,程序没了,退出了,
肯定有自校验。晕晕。
OD载入已脱壳的程序,开始的时候用CreateFileA,找不到他的自校验跳转的地方。
试试bpx hmemcpy,找找他的读取文件大小的GetFileSize。
Intermodular calls,项目 808
地址=00402EA0
反汇编=call <jmp.&kernel32.GetFileSize>
目标=kernel32.GetFileSize
对GetFileSize全部下断点。运行跟踪他(记得要隐藏OD哦,不然OD也会退出)。
00403215 /77 23 ja short dumped_.0040323A
00403217 |6A 00 push 0
00403219 |8B03 mov eax,dword ptr ds:[ebx]
0040321B |50 push eax
0040321C |E8 0FE1FFFF call <jmp.&kernel32.GetFileSize>
00403221 |8BF0 mov esi,eax
00403223 |83FE FF cmp esi,-1
00403226 |75 07 jnz short dumped_.0040322F
00403228 |E8 B3F7FFFF call dumped_.004029E0
0040322D |EB 15 jmp short dumped_.00403244
0040322F |8BC6 mov eax,esi
00403231 |33D2 xor edx,edx
00403233 |F773 08 div dword ptr ds:[ebx+8]
00403236 |8BF0 mov esi,eax
00403238 |EB 0A jmp short dumped_.00403244
0040323A /B8 67000000 mov eax,67
0040323F E8 8CF7FFFF call dumped_.004029D0
00403244 8BC6 mov eax,esi
00403246 5E pop esi
00403247 5B pop ebx
00403248 C3 retn //下一步到00530C37
00403249 8D40 00 lea eax,dword ptr ds:[eax]
0040324C 57 push edi
到这,慢慢跟踪他。
00530C37 E8 741DEDFF call dumped_.004029B0
00530C3C 8BD8 mov ebx,eax
00530C3E 8D85 B4FEFF>lea eax,dword ptr ss:[ebp-14C]
00530C44 E8 1324EDFF call dumped_.0040305C
00530C49 E8 621DEDFF call dumped_.004029B0
00530C4E 81FB 00E00C>cmp ebx,0CE000
00530C54 74 05 je short dumped_.00530C5B //就这,将je改成jmp,跳走,就OK了
00530C56 E8 813BEDFF call dumped_.004047DC / /就他,该死的,会退出的。
00530C5B 33C0 xor eax,eax
00530C5D 5A pop edx
00530C5E 59 pop ecx
00530C5F 59 pop ecx
00530C60 64:8910 mov dword ptr fs:[eax],edx
00530C63 68 7B0C5300 push dumped_.00530C7B
00530C68 8D85 B0FEFF>lea eax,dword ptr ss:[ebp-150]
00530C6E E8 DD3CEDFF call dumped_.00404950
00530C73 C3 retn
00530C74 ^ E9 7735EDFF jmp dumped_.004041F0
修改后,将文件保存,一运行,不会退出了。
去除自校验OK。剩下的是破解了,由于是网络验证的方式,我选择的是暴力破解。改几下跳转就行了。