用DeDe破解-第一次
Published by
Tsehp April 2000
翻譯:WiNrOOt
宣告:因原作者使用的dede版本較早,功能設定有很多和現在的不一樣。於是我就用
現在的功能設定重新描述。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
序言:
首先我們要感謝+DaFixer為我們做了這麼好的軟體。他使cracker在對付delphi
程式十分方便。我不去說明怎麼去用dede(因為他很容易上手而且+DaFixer已經
把一些重要的操作在readme.txt中說得很清楚)如果需要我會寫一些步驟個新手。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
如何進行crack?
第一步我們總是來確定.exe的型別。確定了型別後加上我們使用特定工具
往往使我們的工作起到事半功倍的效果。當然我們也要看他是否加了保護等等。
我們的目標和使用的工具
1。目標:ExeScope 5.12
2。破解的型別:Serial number
3。如果不註冊程式會有什麼表現:我們編輯過檔案後,不能儲存。
4用到的工具:DeDe and TRW
5還有大約10分鐘的時間(如果沒有dede你將花更長的時間)
開工!!!!!!!!!!!!!
執行dede,選擇目標。點選 Process按鈕,等待處理…………
dede是很容易上手的,現在我們選擇Forms.這一塊展示給我們的是
delphi程式的文字資訊。找到TFReg這一項,並察看他的caption,oh這是我們
要找的"Regist" caption。不要擔心那些奇怪的字元(因為ExeScope的作者是
日本人)。
下面我們繼續:
我們點procedure在左邊的視窗我們會發現屬於TFReg的部件
在右邊的視窗選擇event(RegBtnClick)雙擊滑鼠左鍵。
WOW那是什麼???
完美的解析展現在我們的面前~~~Not 10 MB 也不是大量的彙編程式碼(那些
無用的,與破解無關的)
他展示給我們的是我們所需要的------當我們點選
註冊按鈕時程式中發生的事件的程式碼,而且還帶函式說明!!!
在進行完分析後我們看到的情形(最為重要的部分)
* Possible Reference to Control 'NameEdit:TEdit'
0047D12A 8B83DC010000
mov eax, [ebx+$01DC]
* Reference to: Controls.TControl.GetTextBuf()
0047D130 E89B5FFAFF call 004230D0
0047D135 8B55FC mov edx,
[ebp-$04]
0047D138 A1EC804800 mov eax, dword ptr [$4880EC]
* Reference to: System.LStrCat()
0047D13D E83A68F8FF call 0040397C
0047D142 8D55FC lea edx, [ebp-$04]
* Possible Reference to Control
'IDEdit:TEdit'
0047D145 8B83E0010000 mov eax, [ebx+$01E0]
* Reference to: Controls.TControl.GetTextBuf()
0047D14B E8805FFAFF call
004230D0
0047D150 8B55FC mov edx, [ebp-$04]
0047D153 A19C804800
mov eax, dword ptr [$48809C]
* Reference to: System.LStrCat()
0047D158 E81F68F8FF call 0040397C
0047D15D 8B159C804800 mov edx, [$48809C]
0047D163 8B12 mov edx, [edx]
0047D165 A1947F4800 mov eax,
dword ptr [$487F94]
0047D16A 8B00 mov eax, [eax]
* Reference
to published proc: TFMain.CheckCode <- 看這裡:今天的分析程式還沒有能分析到這種地步的
0047D16C
E8DB780000 call 00484A4C
0047D171 84C0 test al, al
0047D173
0F848D000000 jz 0047D206 <- 這是一個關鍵跳。我們改一下就好了
但是這樣不好,程式中可能還有檢查serial的地方。換句話說我想展示一下
dede的威力
有了dede分析程式碼將十分方便
還有說明一點delphi在處理全域性變數和區域性變數是採取下面這種方式
[ebp+xy]表示全域性變數指標
[ebp-xy]表示區域性變數指標
00484A6C 8B45FC mov eax, [ebp-$04]
<- 區域性變數指標在eax
| or: System.LStrOfChar()
00484A6F E830F1F7FF
call 00403BA4 <-
00484A74 83F80A cmp eax, +$0A <- 我們的code必須是10個字元
00484A77 7527 jnz 00484AA0 <- 如果不就死
00484A79 8B45FC mov
eax, [ebp-$04]
00484A7C 803841 cmp byte ptr [eax], $41 <- 第一個字元 ‘A’
00484A7F 751F jnz 00484AA0 <- 死
00484A81 8B45FC mov eax,
[ebp-$04]
00484A84 0FB64008 movzx eax, byte ptr [eax+$08] <-取eax中第8個字元
00484A88 8B55FC mov edx, [ebp-$04]
00484A8B 0FB65209 movzx edx,
byte ptr [edx+$09] <-取edx中第9個字元
00484A8F 03C2 add eax, edx <- eax=eax+edx
00484A91 B90A000000 mov ecx, $0000000A
00484A96 99 cdq
00484A97 F7F9 idiv ecx <-除以10
00484A99
83FA04 cmp edx, +$04 <-如果餘4就成功!建議:用像A23456708這樣的serial
($30+$38)/$A 餘4
$30 和 $38 are 是 0 和 8 的16進位制
00484A9C 7502 jnz 00484AA0 <- 死
00484A9E B301 mov bl, $01
00484AA0 33C0 xor eax, eax
00484AA2
5A pop edx
00484AA3 59 pop ecx
00484AA4 59 pop ecx
你也可以
bpx $00484A99 在Ice, Trw, TD32 或者其他的 windows debugger,
但是要記住code的第一個字母是A 還要有10個字元,
最後, ExeScope不會顯示‘Thank you or something’, 但是輸錯了就會出現
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
結尾:
這是關於dede第一篇文章~~~~!・#・%……#¥%―……%……―……**廢話一大篇懶得翻譯