用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第一篇文章~~~~!·#·%……#¥%—……%……—……**废话一大篇懒得翻译