how to crack component 续1(0分)

  • 主题发起人 主题发起人 chenke
  • 开始时间 开始时间
C

chenke

Unregistered / Unconfirmed
GUEST, unregistred user!
===========
破"D"实战录 01 --- DAO Database Collection 3.2 破解法 !!!
===========

Dao Database Collection 3.2
(http://www.cybermagic.co.nz/winsoft)
是一款通过Dao 3.5而不需BDE管理Forpro,Dbase,Text文件的数据库data aware控件,具体怎么用,俺也不大清楚,但看它的注册费无源码$120,带源码$270,想必是个好东东。试用版的限制为显示谢谢使用视窗。

第一步:crack Exe文件
1.安装Dao Database Collection在Delphi 3.0(我用的是Delphi3)下,选
New Application,加入一个DaoDatabase控件,生成Project1.exe.

2.关闭Delphi(免受干扰),Ctrl-D 切入S-ICE...下bpx hmemcpy指令
(其实下什么中断无关紧要,只要在显示提示框前能激发中断即可),
按F5切回,运行Project1.exe.

3.S-ICE拦下後...BD * 把拦中断的功能关掉
按几次F12...跳回Project1领空...(soft-ice有状态栏提示)

4.然後一直按F10....直到下面:

XXX:00403438 MOV,EAX,[EBX*8+EDI]
XXX:0040343B INC EBX
XXX:0040343C MOV [0042D490],EBX
XXX:00403442 TEST EAX,EAX
XXX:00403444 JZ 00403448
XXX:00403446 CALL EAX
^^^^^^^^
XXX:00403448 CMP ESI,EBX
XXX:0040344A JG 403438
按F2显示寄存器窗口,运行到这时,程序循环了好几遍,
EAX的值不断改变,当EAX值为42B788时,CALL EAX显示视窗,
由此可见CALL 42B788 这是显示视窗的CALL.

4. u 42b788
下code on指令.(察看机器码)
XXX:0042B788 55 PUSH EBP--改为ret(C3)即可.
XXX:0042B789 8BEC MOV EBP,ESP
XXX:0042B78B 33C0 XOR EAX,EAX
XXX:0042B78D 55 PUSH EBP

整理一遍:查 558BEC33C05568 -> C38BEC33C05568

第二步:改DCU文件
察看uses单元,发现引用DaodS.Dcu,Dao.Dcu,Daopared.dcu单元,
如何知道?把Dao*.dcu删除再试不就知道了.查找558bec33c055发现
有几个地方相同,逐一试验,发现修改Daods.dcu,558BEC33C0556857
->C38BEC33C0556857就可以了.

第三步:改dpl文件
为了去除设计时讨厌的提示视窗,修改DaoDsp.dpl,
558BEC33C0556817E9400064FF30
C3--------------------------

大功告成!!!( for delphi 3)
Good Luck !!!

^___^

project1.exe 可到
http://skyscraper.fortunecity.com/dos/597/delphi/project1.exe

chenke 1999/1/4,这是小弟初次写破解文章,不知有没人看?
 
高!! 很精彩! 只是如果其中有逻辑炸弹怎么办?
 
打开Delphi,关闭Delphi两种情况下一试不就知道了吗?
 
To yysun:
我的自动邮件系统用不了?
 
to yysun:
You could change the datetime your self or make a program to do such
things
for d := fromdate to enddate
begin
StartProgram(yourprg,WaitUntilDone);
inc(d);
end

Is there any other logical bomb?
 
这好像是判断试用版是否过期的例程吧,不象逻辑炸弹。
而且好像是这种写法:
fromdate:=从某个地方读出安装日期,可能编到Exe文件中去了。
enddate:fromdate+试用天数;
if 系统时间>enddate then 退出
else 执行程序。
恕我冒昧。
 
这好像是判断试用版是否过期的例程吧,不象逻辑炸弹。
而且好像是这种写法:
fromdate:=从某个地方读出安装日期,可能编到Exe文件中去了。
enddate:fromdate+试用天数;
if 系统时间>enddate then 退出
else 执行程序。
恕我冒昧。
 
=========================================================
破"D"实战录 02 --- TRenderDX1.1 破解法 !
=========================================================
Description
This component - TRenderDX is a complete 3D gaming engine.
This version is for Delphi 2 or Delphi 3.
If you need the ActiveX version for Visual Basic or Visual FoxPro,
then please access our homepage: www.eldermage.com.
3维游戏加速引擎,效果还不赖喔,它的限制为只能运行在IDE中。
对于这一类的东东,在程序中应该有这样的判断:if Ide=运行
then 运行主程序 else begin 显示提示信息;退出 end;翻译成
机器码就是Call 判断IDE是否存在;Jz(或Jnz) 跳到主程序
我们的目标:Jz(或Jnz)->Jmp。但是直接找哪一个Call是判断IDE
比较困难,而找哪一个Call是显示提示信息就比较简单。因此,
常用的做法是找出显示提示信息的Call,再往前或iret回去寻找
判断语句。但是如何找出显示信息的Call呢?
我有一个土方法(仅对IDE限制适用),Post出来,高手看了不要笑得太大声噢。
1.bpx hmemcpy ;在提示框出现之前能中断即可。
2.BD *,按F12 I次出现提示框,再按F5退出
3.BE *,重进入主程序,BD *,按F12 I-1次,再按F10 J次出现提示框,在J-1次设断点,再按F5退出
4.重运行程序,刚才设的断点激活时,按F8进入断点,再按F10开始走,如此反复进行,直到找到显示提示信息的Call为止。
但问题来了,这样找到的Call也可能主程序也在其中,不能随便的把它跳转过去。因此,必须再加入一项判断条件,

if (IDE=运行 && 此过程不执行) && (此过程的父过程在关闭和打开IDE都被执行) then 此过程为显示提示信息。

注意:IDE=运行只要运行Delphi即可,不需要再把程序放到Delphi中编译运行.
最后应该找到两个Call:Call1(执行显示提示信息),Call2(Call1的父过程,
判断是否调用Call1,IDE运行和关闭时都应被执行).然后,分析一下Call2,就可以找出修改方法了.
这个方法是不是很苯?不过,我觉得很有效,因为Dcu文件不可能很大,一般查找十几次就到头了.
有循环怎么办?在循环外设断点,如果Call1在循环内发生,观察循环次数,次数少直接找,次数多用二分法设断查找就行了.
以下是破解TRenderDX1.1的过程:

第一步:crack Exe文件
1.安装TRenderDX在Delphi 3.0下,选
它的演示程序一,生成Demo1.exe.

2.Ctrl-D 切入S-ICE...下bpx hmemcpy指令
(其实下什么中断无关紧要,只要在显示提示框前能激发中断即可),
按F5切回,运行Demo1.exe.

3.找出Call2 xxx:40DDDF CALL [EAX+24];IDE开或关都应被执行,按F8进入直到下面:

XXX:0042F33C TEST EBX,EBX
XXX:0042F33E JZ 0042F34E;为0跳到42f34e
XXX:0042F340 TEST ESI,ESI
XXX:0042F342 JZ 0042F34E;为0跳到42f34e
XXX:0042F344 CMP DWORD PTR[EBP-10],00
XXX:0042F348 JZ 0042F34E;为0跳到42f34e
XXX:0042F34A TEST EAX,EAX
XXX:0042F34C JNZ 0042F352;EAX不为0,跳到主程序
XXX:0042F34E XOR EAX,EAX ;AL清0
XXX:0042F350 JMP 0042F354
XXX:0042F352 MOV AL, 01
XXX:0042F354 TEST AL, AL
XXX:0042F356 JNZ 0042F3EE;AL为1到主程序,为0往下走
.....
XXX:0042F393 CALL 0042F24C ;call1 呼叫视窗,game over
.....
XXX:0042F3EE 主程序

可见当EBX,ESI,EAX,DWORD PTR[EBP-10]不为0时,程序才能正常执行,因此要改4处:
XXX:0042F33E JZ 0042F34E;改为NOP NOP
XXX:0042F342 JZ 0042F34E;改为NOP NOP
XXX:0042F348 JZ 0042F34E;改为NOP NOP
XXX:0042F34C JNZ 0042F352;改为JMP 0042F352

5. 下code on指令.(察看机器码)
找 85DB740E85F6740A837DF000740485C07504 -> 85DB909085F69090837DF000909085C0EB04

第二步:改DCU文件
察看uses单元,发现引用RDX.DCU,DXINT.DCU单元,
如何知道?把Dao*.dcu删除再试不就知道了.在RDX.DCU中找到
85DB740E85F6740A837DF000740485C07504
->85DB909085F69090837DF000909085C0EB04就可以了.
因为机器码中没有用到直接物理地址,所以可以在DCU中直接查找,
如有的话,要改为00查找,或用??查找.

chenke 1999/1/6,请高手指正.
To Another_eYes:怎么扔下300分,就不理了
 
继续(300分不好赚啊)
 
接受答案了.
 
后退
顶部