『软件名称』:联众斗地主记牌器 V2.36
『软件大小』:642 KB
『下载地址』:http://www.skycn.com/soft/1436.html
『软件介绍』:可用于联众一副牌和两副牌的斗地主游戏,具有自动记录已出牌、剩余牌和剩余张数的功能,用户注册后不是地主也能看底牌(二副牌时),软件界面美观,使用方便。
『保护方式』:注册码保护
『破解声明』:初学Crack,只是感兴趣,失误之处敬请诸位大侠赐教!
『破解工具』:flyODBG.V1.10 聆风听雨汉化第二版、PeID 0.93,ASPackDie v1.41.HH
『破解过程』:
一、查壳、脱壳 + 去除反调试
PeID 0.93,查壳,ASPack 2.12 -> Alexey Solodovnikov,老壳了,工具手脱都很方便,我是懒人,用ASPackDie v1.41.HH搞定,默认另存为Unpacked.eXe,OD载入,F9运行,晕死,flyODBG被自动关闭了,有Anti-Bebug,搞定它,重新运行OD,命令行下断点 bp TerminateProcess,F9运行,OD中断在:
7C801E16 k> 8BFF mov edi,edi ; Unpacked.0045A7E0
7C801E18 55 push ebp
7C801E19 8BEC mov ebp,esp
7C801E1B 837D 08 00 cmp dword ptr ss:[ebp+8],0
7C801E1F 75 09 jnz short kernel32.7C801E2A
堆栈提示:
0012FDE4 0045ABA0 /CALL 到 TerminateProcess 来自 Unpacked.0045AB9B //来源
0012FDE8 000000A4 |hProcess = 000000A4 (window)
0012FDEC 00000000 ExitCode = 0
Ctrl+G:0045AB9B
0045AB7D . BA D8AB4500 mov edx,Unpacked.0045ABD8 ; ASCII "EXPLORER.EXE"
0045AB82 . E8 219CFAFF call Unpacked.004047A8
0045AB87 . 74 1D je short Unpacked.0045ABA6 ; 修改为JMP,解除Anti-Debug
0045AB89 . 56 push esi ; /ProcessId
0045AB8A . 6A 00 push 0 ; |Inheritable = FALSE
0045AB8C . 68 FF0F1F00 push 1F0FFF ; |Access = PROCESS_ALL_ACCESS
0045AB91 . E8 86BEFAFF call <jmp.&kernel32.OpenProcess> ; OpenProcess
0045AB96 . 8BD8 mov ebx,eax
0045AB98 . 6A 00 push 0 ; /ExitCode = 0
0045AB9A . 53 push ebx ; |hProcess
0045AB9B . E8 CCBEFAFF call <jmp.&kernel32.TerminateProcess> ; TerminateProcess 这里
0045ABA0 . 53 push ebx ; /hObject
0045ABA1 . E8 16BDFAFF call <jmp.&kernel32.CloseHandle> ; CloseHandle
原来是查找父进程啊,修改为JMP或将flyODBG.exe文件名改为EXPLORER.EXE ,即可解除Anti-Debug;
二、注册验证算法分析
脱壳后查得是Borland Delphi 6.0 - 7.0,好办,Dede出马找到注册按钮事件地址0045A570 下断,F9运行,输入试炼码1234567890,点击注册,OD中断在:
0045A570 <>/. 55 push ebp ; <-TForm2@BRegClick
0045A571 |. 8BEC mov ebp,esp
0045A573 |. 6A 00 push 0
0045A575 |. 53 push ebx
0045A576 |. 8BD8 mov ebx,eax
0045A578 |. 33C0 xor eax,eax
0045A57A |. 55 push ebp
0045A57B |. 68 06A64500 push <Unpacked.->System.@HandleFinally;>
0045A580 |. 64:FF30 push dword ptr fs:[eax]
0045A583 |. 64:8920 mov dword ptr fs:[eax],esp
0045A586 <>|. 8B83 04030000 mov eax,dword ptr ds:[ebx+304] ; *RCode:N.A.
0045A58C |. 8B10 mov edx,dword ptr ds:[eax]
0045A58E |. FF52 50