DEDE的作用
----網際飛鷹之極速FTP1.0 keygen
主程式為NetEagle.exe。據說用language知道這個程式是delphi編譯的,但fileinfo不能識別。用dede2.5可以反編譯。
dede反編譯成功後,在Forms欄,有如下:
Classes Info Offset
-----------------------------
TAboutForm 000d81dc
TChangeDirForm 000da4b0
.....
......
.....
......
TInputSerialForm 000ea244
......
......
很明顯,TInputSerialForm視窗與處理註冊碼有關,滑鼠點選,顯示這個視窗的細節。由執行NetEagle.exe知道,註冊窗有edit1(使用者名稱),edit2(序列號),button1(註冊),button2(取消)等元件,所以在TInputSerialForm視窗中找“button1(註冊)”,發現
object FlatButton1: TFlatButton
Left = 72
Top = 80
Width = 73
Height = 25
Caption = '注 冊(&R)'
TabOrder = 2
OnClick = FlatButton1Click <--“註冊”按鈕按下後的事件。
end
然後,回到dede的Procedures欄,這包括了Forms欄所有視窗的事件程式碼。
Unit Name Class
Name
--------------------------------------
AboutFrm
TAboutForm
......
......
......
......
InputSerialFrm TInputSerialForm
......
......
滑鼠左鍵點選InputSerialFrm,展示此視窗內包含的所有事件。其中有
Event
RVA Hint
------------------------------------------
FlatButton1Click 004a1b7c
0017
FlatButton2Click 004a1b84
0017
......
......
......
......
滑鼠雙擊FlatButton1Click,顯示事件的反編譯程式碼:
......
004A1BBD E83A000000 call 004A1BFC <--關鍵
004A1BC2 84C0 test al, al
004A1BC4 740E jz 004A1BD4
......
滑鼠雙擊004A1BBD E83A000000 call 004A1BFC進入:
* Possible String Reference to: 'NE-' <-------
|
|
004A1C7F BA341E4A00 mov edx, $004A1E34 |
|
* Reference to: system.@LStrCmp;
|
|
|
004A1C84 E85723F6FF call 00403FE0 <--註冊碼起始部分為“NE-”
004A1C89 750F jnz 004A1C9A
004A1C8B 8B45EC mov eax, [ebp-$14]
* Possible String Reference to: '-EWD' <--------
|
|
004A1C8E BA401E4A00 mov edx, $004A1E40 |
|
* Reference to: system.@LStrCmp;
|
|
|
004A1C93 E84823F6FF call 00403FE0 <--註冊碼結束部分為“-EWD”
004A1C98 740D jz 004A1CA7
004A1C9A 8B45FC mov eax, [ebp-$04]
004A1C9D E8A6010000 call 004A1E48
004A1CA2 E92B010000 jmp 004A1DD2
......
......
......
004A1CFF 81FB00E1F505 cmp ebx, $05F5E100 <--註冊碼數字部分必須在
004A1D05 7C08 jl 004A1D0F
| 100000000至
004A1D07 81FBFFC99A3B cmp ebx, $3B9AC9FF | 999999999之間
004A1D0D 7E0D jle 004A1D1C
<--
004A1D0F 8B45FC mov eax, [ebp-$04]
004A1D12 E831010000 call 004A1E48
004A1D17 E9B6000000 jmp 004A1DD2
004A1D1C 8BC3 mov eax, ebx
004A1D1E B94D000000 mov ecx, $0000004D
004A1D23 99 cdq
004A1D24 F7F9 idiv ecx
<--註冊碼除以77
004A1D26 05C0169430 add eax, +$309416C0<--商+815011520
004A1D2B B94D000000 mov ecx, $0000004D
004A1D30 99 cdq
004A1D31 F7F9 idiv ecx
<--和除以77
004A1D33 85D2 test edx, edx
004A1D35 0F858B000000 jnz 004A1DC6 <--餘數為0,註冊碼數字正確。
隨後就是寫序號產生器了,用窮舉辦法,我用delphi5.0及控制元件KOL&MCK0.82編譯。序號產生器介面中有editbox1(輸入使用者名稱),editbox2(註冊碼),button1(生成註冊碼),button2(退出)等元件。
keygen.pas中:
var code:integer;
procedure TForm1.Button1Click(Sender: PObj);
begin
if length(editbox1.text)=0 then editbox2.text:='請輸入使用者名稱!'
else begin
Randomize;
code:=random(800000000)+100000000;
while (((code div 77)+$309416c0) mod 77)<>0 do
begin
code:=code+1;
end;
editbox2.text:='NE-'+int2str(code)+'-EWD';
end;
end;
procedure TForm1.Button2Click(Sender: PObj);
begin
form.close;
end;
end.
誰說dede沒用?dede有大用!