爆破的几个条件。
1、爆破工具:十六进制编辑器任一款(推荐用HEX Workshop)。WIN32DASM反汇编器。有这两样就可以,初学者万不要贪多求全。精通一两件,其它触类旁通、举一反三。
2、爆破手会使用以上工具。一个爆竹不会点引就想当爆破手,还是去下载MP3,看DVD去吧。jney2相当怀念当年用PCTOOL改《三国志IV》,哈哈,张飞的智力、魅力都是100。一两个小时就征服全国了。可惜现在有许许多多的游戏工具,还有变速器。东东越先进,人就越懒,学到的知识就越少。我不是说有好东东就不用哟。
3,爆破手必须会汇编。实在不会,也不要紧,依葫芦画瓢总会吧,几个最详细,最完美,最经典的教程练一把。成功了!!!哈哈,有兴趣了吧,有信心了吧,好了好了朋友赶紧学汇编吧。如果你试了N次都没成功,我的结论是:在其它方面更适合发挥你的聪明才智。
4,信心、耐心、恒心你都得有一点吧。
有了上面的几点,你就可以进入CRACK的初级阶段了。事实上,jney2的水平也就这些。jney2的现状是:97年大专毕业时,算是一个DOS高手吧,学校的唯一一本有关中断调用大全的书我硬是霸占了一年才还。用SR分析过NATAS4744的源代码。所以8086指令系统的汇编功底还是有的。毕业后几年一直干着与电脑无关的事,又没充电。学校学的那点老底早没了。所
以到了现在,VBVCBCPBDELPHIASP我是一门都不会。记忆力是一天不如一天了,惭愧呀!真羡慕那些还在学校学习的小弟妹!
废话少说,还是说几点近来当爆破手的几点经验吧。
一,如何快速确定爆破物。
1,确定目标有没有加壳。没有最好了,有的话看是不是常见壳,可不可以用现有脱壳软件快速脱掉。搞不定的话,暂时放弃它。我吃定你了!,不要这样,老兄。不就是一壳么,不要和他一般见识。记着,你今天的重点是爆破。不要主次不分、本末倒置,这也是初学者最易犯的错误。
这方面,我用PEID。它可以整合到资源菜单,非常方便。
2,确定用什么语言编写。我的经验是,DELPHI的程序结构清晰、紧凑,最好分析。其次是VCBCASM,比较难的是VB,要有一定的经验才可搞定一两个。VB P-CODE的我就真的一窍不通了,用DEXC反编译出来的代码我一名也看不懂。VF的我也不插手。
这方面,我用LANGUAGE2000,把待查软件的图标拖到LANGUAGE2000的快捷方式上就OK了。
3,确定爆破物有没有防爆破技术。大多数的软件还是没用的。如果你修改文件后再运行有
病毒感染提示或重新安装提示就表示你暂时可以放弃它了。记得我上面说过的,不要和它一般见识。
我遇到很毒的就有 斗地主5.4 脱壳后,能运行,但结果是自动关机,看来用它作关机软件倒是蛮好的。
二,如何快速到爆破点。
1,用Win32DASM反汇编并保存工程文件。
IDA PRO虽说功能强大,个头大不说,也没有完美版,给我的感觉一个字:慢!我不推荐初学者使用。
2,在反汇编文件中到可疑点。
经典语句自不用说,比如,恭喜注册成功注册码错误
无效的注册码“Thank You","Sorry"...到后,一般向上不远处就可看到条件转移语句JZJNZJLE什么的。
事实上,只有极少极少的软件只修改注册判断就OK的。所以我们要把更多的注意力转到其它的可疑点。如未注册标识,过期警告,次数标识,NAG对话框...,熟练使用各种工具的搜索功能是基本功之一。到后再向上不远处条件转移语句。
如果不到:
3,利用EXESCOPE中的对话框或字符串的ID号和地址指针,通过一定的转换,可在反汇编文件中到相应的提示。
一般的有这样的参数入栈:
PUSH 00000064 64即为ID号为100,当然不要遇到这样的语句就是,要凭自己的经验和感觉判断。还有,Win32DASM里的提示也不是完全对,它的解释很清楚,“Possible"可能是
4,在十六进制编辑软件中搜索到提示信息的起始地址,把它换成程序运行时的偏移地址。如你得到地址是004DE356,那么回到Win32DASM中搜索6856E34D00,(它就是:PUSH 004DE356,我用这个方法曾对付个花指令)如果能到一处或两处就表示对了。有很多程序蛮狡猾的,不一定行得通。
5,到注册判断函数CALL(子程序)
一般在条传转移语句的上面,如果你到的CALL在程序中被调用了二三十次,那肯定不是了,顶多是字符串比较函数罢了。只一次的程序少,我见过的一般在三到六次之间。
6,通过以上可疑点,最好能准注册标志变量,一种是固定内存变量,在程序中事先就定
义好的。一般有以下几种比较形式:
mov eax, dword ptr [00401078]
cmp eax, 00000001
jz ...
mov eax, dword ptr [00401078]
test eax, eax
jz ...
mov eax, dword ptr [00401078]
mov ebx, dword ptr [eax]
cmp ebx, 00000000
jnz ...
还一种是利用堆栈偏移的临时变量;如
mov eax, dword ptr [ebp+50]
cmp eax,00000001
jz ...
.
..还有几种与前面的几种类似,不一一举例。
7,最好能分析一下程序的结构和流程。
到这里,准爆破点应该没问题了。
三,如何爆破。
当你准爆破点后,你会发现有很多种爆破的方法都可以达目的。
1,修改转移语句。
我一般这样改:
不需要跳,我就把74XX,75xx,中的xx,xxxxxxxx(偏移量)改为0000000000
需要跳,我就把7475改为EB,0F84,0F85改为90E9。这可避免万一你有正确的注册码反而会出错的事情发生。
2,修改注册标志变量,如变量为1则为注册,为0则为未注册,那么你只要搜索所有将该变量置0的语句改为置1就行了。
mov eax, 00000000
mov dword ptr [00401078], eax
这种好改。但大多是这样:
xor eax, eax
mov dword ptr [00401078], eax
这种有些难度,它不是简单地送值,而是异或置0xor eax, eax的机器码是33C0,只有两个字节,而mov eax, 00000001的机器码是B801000000有五个字节,这可不好玩。我们可这样改,把CC30改为vb采用什么的编程机制B001B001是什么?就是mov al, 01啦!一般情况下这样改都不会有问题。
3,修改判断函数CALL
如果这个函数只是判断注册是否正确,并返回AX的值,我一般会这样改。在CALL入口处就改为B801000000C3,就是
mov eax, 00000001
ret
这样可少执行代码,并且不访问注册表。甚至可把后面死码都置为00
4,修改次数限制。
我在爆破亿虎软件时,我上面的方法都用了,看上都象正式的了,什么注册提示都没了,但
用起来还是有30的限制。我实在分析不出暗桩在哪儿,我就只好改这里了。当然不是改次数。改判断使程序一直认为低于30就行了。
四,对于爆破的几点认识。
1,爆破不是最简单的。
如果一个软件采用明码比较,不管它有没有加壳,都可用OllyDbg之类的动态调试工具在很短的时间内获得,并做成内存注册机,速度之快有时令人惊讶,我曾五分钟之内到注册码。爆破往往要试N次,改N处才可成功,还要测试。
2,爆破时要注重分析编程者的思路和判断机制,这样才可以学他人的长处,了解他的不足。这样才可在初级阶段学到一些有用技术。我觉得这一点比分析算法更重要。作者在升级或作同类软件时,他的注册算法肯定都是不一样的,而他的流程和判断机制基本都是一样的。我遇到一个软件要求注册但压根儿就没输入注册码的地方。它是通过注册文件注册的。
3,爆破还可把有不作用的功能屏蔽掉,做真正的完美版,如上网自动更新等等。当然高手还可加些功能,像我们用的Win32DASM 10.0
五,几点其它经验。
1,在Win32DASM中,右键双击CALL上面的调用地址,就可转到被调用处。同样右键双击
转移入口上面的地址,就可转到开始跳的那一句,这功能相当有用哟!
2,搜索时可用如下的表示:
X, 0000001D  (因为程序不一定只用EAX
+00000050]
只取一部分特征值有想不到的妙处,并且一般不会漏。
3,一个击破,各各击破。对于多产作者或同一公司的不同产品一般都有效,对于以后的升级版本也一样。
4,拿来主义。
我的第一个破解就是借来的。 DivX Subtitle Displayer是一个很小很实用的播放软件。前几月我一直用它看电影,我用的是4.44破解补丁,后来网上出了4.5。我就用FC32比较破解前后差异,然后再到修改点,提取该点的特征值。再在4.5中搜索该值,运气好得很,就一处,改它!再运行!成功!再也没有烦人的NAG。从此踏上了我的爆破手生涯。作为初学者我建议不要用此种方法。

爆破不苦码字苦!以上高手见了也许不屑一顾,但作为像我一样的菜鸟应该有一定的帮助。
由于我是边想边码,没有准备很详细的例子。所以不到之处和错误一定请各位指正。不然有谁因我而误入歧途我实担当不起。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。