這是一篇老文章今天拿來翻譯一下,我的水平很差~請指正!for新手 (4千字)

看雪資料發表於2015-11-15

用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第一篇文章~~~~!・#・%……#¥%―……%……―……**廢話一大篇懶得翻譯

相關文章