📄 dfcg破解入门.txt
字号:
在这里程序中的代码地址如0167:00408033,其代码段的值(即0167)有可能根据不同的电脑会有区别,不一定一模一样,但偏移值应该是固定的(即00408033不变),所以如果看到破解文章里的程序代码的地址值和自己的电脑里不一样,不要以为搞错地方了,只要你的程序代码正确就不会有问题。
7. 关于如何设置断点的问题:正确恰当的设置好断点对于快速有效的解密非常重要,好的断点设置可以使我们迅速找到关键的程序段,而不恰当的断点则会对解密造成不必要的精力消耗,甚至根本就不能拦截到程序的运行。但是具体什么时候用什么断点比较合适很难说,这需要自己用经验去累积,总的说来bpx hmemcpy这个万能断点对大多数注册码方式的软件都有用,初学者不妨多试试这个断点(通常我也是用这个断点设置,懒嘛^_^,哈哈。。。)。对于那些需要暴力破解的非注册码方式的软件,通常我们应该拦截对话框(如bpx DialogBox)和消息框(如bpx MessageBox(A))等。不论对于哪一类软件,当我们设置的断点均没有效果时,可是试一下bpx lockmytask,这个断点的作用是拦截任何一个按键的动作,具体常用的一些断点设置请参考“破解常用断点设置”一文。另外,在注册码的破解中通常需要输入用户名和注册码,一般说来用户名和密码都可以随意输入,但是根据我自己的经验,很多软件对于注册码都会逐位的进行处理,假如输入“78787878”这串数字,那么在跟踪程序的时候我们就无法知道我们当时所看到的“78”倒底是哪一个“78”,所以我比较喜欢用“12345678”这样的注册码输入方式,这样的话就就能知道程序是在对注册码的哪一位进行运算,同样的对于那些需要输入较长序列号的软件,输入类似“12345-67890-ABCDEF”这样的序列号较好。 不过有一点大家需要特别的注意:上面讲的注册码输入方式“12345678”是针对拦截WIN32 API函数来说的,假如有些时候直接拦截WIN32 API函数难以找到程序的突破口,而要借助于“S”指令在内存中寻找我们输入的用户名或注册码时,就最好不要采用“12345678”作为注册码,因为内存中很可能有许多的“12345678”字符串,这样我们没有办法知道倒底我们要破解的程序使用的是哪一个“12345678”,所以我们应该选择一个不易和内存数据相同的注册码,比如:74747474(本人喜欢用,意思嘛:去死去死。。。哈哈哈^_^),对应的搜索指令为: S 30:0 L FFFFFFFF '74747474' 。当然,以上只是我个人的习惯而已,具体用什么样的输入形式可以根据本人的爱好、习惯来定,不必拘泥于某一固定的模式。
8. 关于如何跟踪程序的问题:初学者在开始学习解密的时候往往不知道怎么样去跟踪程序,怎么样找到注册码比较的地方,当面对长长的一堆程序代码时显得不知所措。通常软件的程序内部都会利用一个子程序(即 CALL ********)去验证我们输入的注册码正确与否,对于注册码显式存在的程序,一般都会将所输入的注册码和正确的注册码放进寄存器,然后调用验证子程序进行判断,将结果返回,应用程序根据子程序返回的结果决定是否注册成功,这样的程序经常具有如下的形式:
****:******** MOV EAX,[********] (或 PUSH EAX等形式)
****:******** MOV EDX,[********] (或 PUSH EDX等形式)
****:******** CALL ********
****:******** TEST EAX,EAX (或 TEST AL,AL,或是没有这一句等形式)
****:******** JNZ ******** (或 JZ ********等形式)
其中EAX和EDX指向的内存区域就是我们输入的注册码和正确的注册码,这里的寄存器EAX和EDX是随意写的,也可以是ECX,EBX,EDI,ESI等等。对于注册码隐式存在的程序,虽然不能直接看到正确的注册码,但是通常也是先将所输入的注册码地址放进某个寄存器,然后调用子程序去验证,破解时就需要进入子程序去分析注册算法。总之,看到子程序(call ********)后面跟着跳转指令(JNZ ********或JZ ********)的地方我们就应该提高警惕,多用 D EAX(或EBX、ECX、EDX、EDI、ESI...等)去看看寄存器指向的内存区域藏着什么东西。有一点大家要提醒大家:看见程序中使用下面这个函数是要注意,即GetDlgItenInt,这个API函数的作用是将输入的文本转化为整数,所以这类程序中是不会有显示存在的注册码的,因为注册码被转换为整数了,程序通常会用 CMP ECX,EDX 这种类型的指令去验证注册码的正确性,这里ECX和EDX中存的就是所输入注册码和正确注册码的整数形式,此时可以用 ? edx 和 ? ecx 看到其十进制形式,即我们输入的形式。
9. 关于软件的反安装问题:经常我们使用某些软件时都会遇到一个问题,就是共享软件过期之后即使删掉原程序重新安装,程序依然不能用,还是一样提醒你试用期已过请注册;或者是你已经破解了某个软件,但是还想继续研究它,但是因为软件已经注册好,没有了注册选项,这时你即使彻底删掉程序再重新安装软件,结果程序运行后还是注册过的。遇到这样的情况,其实原因很简单,因为程序将注册或过期信息存在了系统注册表里,所以简单的重新安装软件是无济于事的。解决的办法就是自己删掉注册表中有关的信息,但是因为注册表是WINDOWS系统工作的基础,如果不小心就很可能会损坏它而引起系统异常,所以如果你对注册表不是很熟的话,应该在修改之前备份一下注册表。不论是修改还是备份注册表都可以使用WINDOWS下的注册表管理工具“REGEDIT”来进行,一种办法是在“开始->运行”下输入“regedit”启动它,也可以直接点击“C:\WINDOWS\regedit.exe”来运行。大部分的应用软件都会将自己的信息存在如下的路径中:HKEY_LOCAL_MACHINE\Software、HKEY_LOCAL_MACHINE\Software\Microsoft、HKEY_CURRENT_USER\Software、HKEY_CURRENT_USER\Software\Microsoft 或 HKEY_USERS\.DEFAULT\Software下,具体是哪个地方依据不同的程序而有所不同,只要按上面的顺序肯定能找到有关应用程序的键,然后将和用户名及注册码有关的键值删掉就搞定了。
10. 关于破解练习的问题:学习破解需要大量的练习,对于破解目标的选择,初学者不宜以大型的、著名的软件为目标,因为这些软件通常加密较为复杂,破解不易,应该选择一些比较不出名的、小型的和早些时候的共享软件来练习,因为加密相对简单的软件有利于初学者快速掌握破解思想和技能。至于习题的来源则很广泛,可以从网上下载,也可以去市面上购买一些共享软件光盘。
TRW 2000 使用之实例精解
开刀对象: 斗地主 V1.1
因为这个游戏软件的加密非常之简单,适合初学者,所以拿它做教程。
首先运行TRW 2000,然后运行斗地主,点击注册按钮,填入注册信息,如图一所示
(图一)
切换到TRW,(按热键CTRL-N键),下断点: bpx hmemcpy
(图二)
备注:图二中看到的用数字标明部分分别是:
1:寄存器资讯
2:记忆体资讯(16进制)
3:记忆体资讯(ASCII形)
4:程序汇编码
5:TRW 操作命令输入平台区
用红线标明的就是记忆体的位址。
用蓝线标明的就是程序码的位址。
然后按F5键回到程序,按下"马上注册"按钮,马上会被TRW拦到,下BD * 命令,屏掉
所有断点,然后按F12直到程序弹出以下信息框:
(图三)
记下你刚才按F12的次数,到此熟悉了一遍过程。别急,第二遍再来一次,从头做起。
只不过有个环节要做个小小的变动,那就是按F12的次数比第一次要少按一次。这就
是破解程序最基本的招数,名日"二拦"。
二拦后,
程序会在15F:0045F3DD MOV EAX,ESI 停下,单步追踪,对,是按F10键,追到那个有
毛病的CALL,什么是有毛病的CALL?就是你运行完那个CALL,它会弹出图三信息框的
CALL,找到吗?我的在:
15F:0045F444 CALL 00433198
OK,往上面找找哪儿可以躲过这个CALL,找到吗?在这里:
15F:0045F438 CALL 00403C3C
15F:0045F43D JZ 0045F44B =>如果把它改为JMP呢?程序不就注册成功吗?
思路完全正确,但是我想知道真正的注册码,该怎么找呢?当然,你运行到
15F:0045F438 上面停住,然后下D EDX 命令,可以看到注册码,有同学要问在哪儿看
到呢?往下面看吧,见图四:
(图四)
16位的注册码是否感觉看得很清楚呢?自己对照着练一遍吧。破解原来是这么EASY。
这里,简单介绍一下怎么暴力破解,方法是使程序直接跳到注册的CALL,避过失败的
CALL的方法就是跳转下功夫。
15F:0045F43D JZ 0045F44B 改为 JMP 0045F44B 就可以了。
那么要记下它的机械码哦,它的机械码是740C,改为EB0C就可以了。有同学问为什么
这样改呢,因为JMP 的十六进制码会是EB,把中间一段机械码抄下来,记得抄多一些,
因为程序中这样的代码也许会很多,会重复,然后就是开启UEDIT打开主程序,然后找
刚才的机械码,改过来,程序就被你强暴了。
本文只以图形的方式表现TRW的每个躯壳的奥秘,以免新手盲人摸象,只不过对于注册
码的具体算法没有挑明,读者有兴趣可以继续深入,很明显45F438的CALL肯定是比较,
而算码绝对是在上面的哪个CALL。
DFCG破解入门第七课
日期:2003年9月9日 作者: 人气:2279 出处:赢政天下整理收藏
--------------------------------------------------------------------------------
用TRW2000破解的步骤和破解经典句式
程式如何生成注册码?
1,一般是通过用你的姓名作KEY,经过一定的算法,计算出注册码.
2,但是也有通过依照随机产生的数字,显示出来,如果你要注册,须交钱给软件作者,并告诉他随机数字,他会给你一个经过按照随机数字产生出的注册码.也就是一机一码.
其实上面两种情况都是一个道理,即程式本身在判断你输入的注册码时都会呼叫算注册码的小程式,只要将这段程式正确找到,就可以破解它.
程式如何注册处理?
1,当输入ID,CODE等,立即进行比对,正确的话则做注册处理,以后也不会再麻烦你,也就是说你已经是注册用户了.不正确的话,当然是输入到你对为止了.
2,同上,但以后一执行程式还是会判断.针对这种情况,想只改机械码是根本不行的,必须把注册码揪出来.
3,输入时不立即比对,只写入资料到某个文件(如 "*.INI"文件)中,程式第二次启动时再比对.例如: flashget,特点是巨麻烦,想破解它们,必须要有足够的耐心. (flashget破解参看我的破解日记)
追注册码的步骤
首先,将程式的注册对话框打开,输入你的姓名和任意的注册码(推荐用87654321)
第二步,按CTRL-N呼叫出TRW2000,然后下中断(一般用bpx hmemcpy),回车,键入g,回车
第三步,返回注册程式,按下注册窗中的"确定"按钮.
第四步,如果被TRW拦到,说明刚才打的中断发挥作用了,可以继续工作.如果出现的是"注册失败"的对话框,说明TRW的中断没有作用,只有重复第二步,换个中断试试.(中断设置,看雪教程很详细,不重复)
一般会用bpx hmemcpy就足够了
第五步,键入bc*,回车,键入pmodule,回车,猛按F12键,等到出现"注册失败"的画面时,记下刚才按F12键的按数
第六步,第二次重复第一步至第四步,这次按(第五步记下的按数减去1)下的按数,停下来.
第七步,开始按F10键单步追寻,找到关键CALL和关键跳转,在这个关键CALL处d eax 及 d edx,多看看,有时就会看到注册码,出现在TRW的右上方(找关键CALL和关键跳转有技巧,见下)
第八步,如果没找到,当然要按F8键进去关键CALL观察了,继续追踪可疑CALL和可疑跳转
当然如果要进入此CALL,必须得再次重复第一步的行动.不要嫌麻烦,CRACK就是这样,要有耐心,才会成功.
*****技巧(非常重要,背50遍)
经典比较组合,常为注册码出现处(我们以后将把下面的1,2称为破解经典句式)
1.(最常用)
mov eax [ ] 这里可以是地址,也可以是其它寄存器 或mov eax [ ]
mov edx [ ] 同上 通常这两个地址就储存着重要信息 pop edx
call 00?????? 关键call
test eax eax
jz(jnz)或 jne(je) 关键跳转
2 (最常用)
mov eax [ ] 这里可以是地址,也可以是其它寄存器 或mov eax [ ]
mov edx [ ] 同上 通常这两个地址就储存着重要信息 pop edx
call 00?????? 关键call
jne(je) 关键跳转
3
mov eax [ ]
mov edx [ ]
cmp eax,edx
jnz(jz)
或者
begin mov al [ ]
mov cl [ ]
cmp al,cl
jnz(jz)
mov al [ +1]
mov cl [ +1]
cmp al,cl
jnz(jz)
cmp eax ecx (eax为计数器)
jnl begin
mov al 01
4
lea edi [ ]
lea esi [ ]
repz cmpsd
jz(jnz)
5
mov eax [ ] 这里可以是地址,也可以是其它寄存器
mov edx [ ] 同上 通常这两个地址就储存着重要信息
call 00??????
setz (setnz) al (bl,cl…)
6
mov eax [ ] 这里可以是地址,也可以是其它寄存器
mov edx [ ] 同上 通常这两个地址就储存着重要信息
call 00??????
test eax eax
setz (setnz) bl,cl…
7
call 00?????? ***
push eax (ebx,ecx…)
……
……
call 00??????
pop eax (ebx,ecx…)
test eax eax
jz(jnz)
这个形式比较特别,它的关键比较地方不在第二call中,而在第一call中
其中1,2最为常见和重要,其余的不常用
以上技巧为破解的精髓所在,以后无非是大量的破解练习,提高经验和功力
破解的大门由此而开,破解入门的障碍所在,祝早日突破这一关
***几种常见情况的不同处理方法***
1.像那种一个字符一个字符验证的软件(输入不正确没有“确定”按钮)
bpx hmemcpy
g就会中断,如:音乐无限,其教程后面的课里有
2.输入注册码不正确,点确定没有反应,不关闭注册窗口
bpx hmemcpy
g 点确定,就会中断
3、那种乱输入注册码点“确定”但什么提示也没有就消失了的
属于不直接比对注册码,重新启动时再比对,破解起来比较困难
具体情况具体分析,没有统一的方法。
TRW2000下写破解教程截取部分汇编代码的方法
u 起始行地址,结束行地址 >c:\dfcg.txt 如上面的是
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -