破解FAQGenie (4千字)
破解FAQGenie[软件简介]
FAQGenie是一个专门用来作FAQ网页的软件。不注册30天限制。
在www.inhua.com有下载。
[破解工具]
DeDe 2.50
trw2000
W32Dasm
[破解经过]
简单的发现:
(1) FI报告是Delphi程序。
(2) 启动软件,没有发现输入注册码的地方,只告诉你,NOT LICENSED(没有注册)。
用DeDe处理一下,看到下面的东东:
procedure TfrmMain.LogoMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X: Integer; Y: Integer);
begin
{
00491158 55 push ebp
00491159 8BEC mov ebp, esp
0049115B 53 push ebx
0049115C 8BD8 mov ebx, eax
0049115E 80F901 cmp cl, $01
00491161 7523 jnz 00491186
00491163 803D505A490000 cmp byte ptr [$495A50], $00
0049116A 741A jz 00491186
0049116C B201 mov dl, $01
* Reference to control TfrmMain.edtRegCode : TEdit
|
0049116E 8B83E8020000 mov eax, [ebx+$02E8]
* Reference to: controls.TControl.SetVisible(TControl;System.Boolean);
|
00491174 E843CEF9FF call 0042DFBC
00491179 B201 mov dl, $01
* Reference to control TfrmMain.lblRegCode : TLabel
|
0049117B 8B83E4020000 mov eax, [ebx+$02E4]
* Reference to: controls.TControl.SetVisible(TControl;System.Boolean);
|
00491181 E836CEF9FF call 0042DFBC
00491186 5B pop ebx
00491187 5D pop ebp
00491188 C20C ret $0C
}
end ;
这是什么?我猜是鼠标对logo进行操作后,便出现可以输入注册码的东东了。
开始试验,经过数分钟的乱试,发现只要先对滚动字符的地方双击,然后用鼠标右键点击logo,
注册码输入的地方就显示出来了。
如何拦住输入的注册码呢?用hmemcpy试了一下,没成功。
正在苦恼之际,看了一下W32Dasm里面的stringlist,发现有几处关于RegCode的地方。这是其中一处。
* Referenced by a CALL at Addresses:
|:0048A371 , :0048A3B8 , :0048A57B , :0048CFF8 , :0048DDBD
|:0048E632 , :00490158 , :00490AD4 , :004911D9
|
:00490B78 55 push ebp
:00490B79 8BEC mov ebp, esp
:00490B7B 6A00 push 00000000
:00490B7D 6A00 push 00000000
:00490B7F 53 push ebx
:00490B80 56 push esi
:00490B81 33C0 xor eax, eax
:00490B83 55 push ebp
:00490B84 681D0C4900 push 00490C1D
:00490B89 64FF30 push dword ptr fs:[eax]
:00490B8C 648920 mov dword ptr fs:[eax], esp
:00490B8F 33DB xor ebx, ebx
:00490B91 C705485A49008DECA200 mov dword ptr [00495A48], 00A2EC8D
:00490B9B 8D45FC lea eax, dword ptr [ebp-04]
:00490B9E 50 push eax
:00490B9F 33C9 xor ecx, ecx
* Possible StringData Ref from Code Obj ->"RegCode"
|
:00490BA1 BA340C4900 mov edx, 00490C34
* Possible StringData Ref from Code Obj ->"Software\Virdi Software\FAQGenie"
|
:00490BA6 B8440C4900 mov eax, 00490C44
:00490BAB E8F04BFFFF call 004857A0
:00490BB0 B201 mov dl, 01
* Possible StringData Ref from Code Obj ->"TBase64SV勔t兡痂叮?嬟嬸3覌畦仩?艶嬈勠t?
->"颍?d?"
| <------ 注册码变成base64编码后放入注册表里面去?
:00490BB2 A1808C4800 mov eax, dword ptr [00488C80]
:00490BB7 E81881FFFF call 00488CD4
:00490BBC 8BF0 mov esi, eax
:00490BBE 8D4DF8 lea ecx, dword ptr [ebp-08]
:00490BC1 8B55FC mov edx, dword ptr [ebp-04]
:00490BC4 8BC6 mov eax, esi
:00490BC6 E86584FFFF call 00489030
:00490BCB 8BC6 mov eax, esi
:00490BCD E8CE21F7FF call 00402DA0
:00490BD2 33D2 xor edx, edx
:00490BD4 8B45F8 mov eax, dword ptr [ebp-08]
:00490BD7 E86C73F7FF call 00407F48
:00490BDC A34C5A4900 mov dword ptr [00495A4C], eax <------ ? eax可以看见假注册码
:00490BE1 A1485A4900 mov eax, dword ptr [00495A48]
:00490BE6 3B054C5A4900 cmp eax, dword ptr [00495A4C] <------ ? eax就是真注册码了。假的和真的作比较。
:00490BEC 7514 jne 00490C02
:00490BEE A1105A4900 mov eax, dword ptr [00495A10]
:00490BF3 8B8048040000 mov eax, dword ptr [eax+00000448]
:00490BF9 B201 mov dl, 01
:00490BFB E8BCD3F9FF call 0042DFBC
:00490C00 B301 mov bl, 01
输入注册码后,需要退出程序然后重新进入,就会发现是注册版了。
