导读:
反汇编有什么用?一般是用来破解软件。当然,如果你技术过硬的话 ,你可以反汇编大部分代码,窃取别人的技术和秘密,可以自己学习,也可以贩卖给别人!
引言:
如果你反汇编学的牛b,说明你的汇编也不差,而且还可以做些一些违|法的行为(lz不建议)。但是技术不成熟之前还是老实点,不然后果严重。
一、注册机
大部分注册算法的原理是:软件或者用户自己触发了软件的注册模块-》软件跳转到注册认证模块。-》弹出注册窗口-》用户输入注册名+注册码A,把它们存放在内存中。然后软件的注册码验证部分根据用户输入的注册名生成正确的注册码B并和用户输入的注册码A做对比。如果结果为相同则注册通过,并运行“注册成功”后面的程序分支,比如解除各种软件限制。如果不相同则提示“无效的注册码,请重新输入!”或者“Invalid key!”等等警告。
知道了原理,我们只要用SOFTICE和TRW2000等汇编调试软件去做软件的动态反汇编。来找到软件注册部分的入口(这个过程就不细说了,有兴趣去看看汇编调试和软件破解的资料)
破解: 这时候后如果我们在软件的注册失败的那段代码前面加一个跳转,说得容易理解一点就是:跳过软件注册码验证失败后应该运行的分支,而将它转到注册成功的那个分支上。那么这时候不管你输入的注册码是对是错,都会提示注册成功。直接将它跳到注册通过的那个程序分支上。这是一种破解方式。还有一种就是直接屏蔽注册窗口,这个最简单,在那段窗口代码前面加一个跳转指令。这个适合于那种频繁弹出注册窗口但软件功能并没有限制的注册软件
注册机: 通过反汇编和调试器跟踪来得到软件的注册码验证部分的汇编代码,然后根据它写出来的逆向算法生成的注册程序。就是注册机了
内存注册机: 跟简单了,因为经过上面的步骤,你已经知道的那个软件的注册算法。知道它会在做注册认证的时候将用户输入的注册码和正确的注册码做对比。把正确内存里的注册码取出来就OK了。所以内存注册机的使用方法都是:先开注册机,用注册机载入软件。然后你随便输入一个注册码,按确定。软件会提示注册失败,因为你的注册码是错误的。不过这个时候正确的注册码已经被内存注册机截取到了。
二、Delphi语言
1、用PEID等工具查看程序有没有加壳,一般都会有壳的,有专用脱壳工具的就省得麻烦了,直接用工具搞定。没有的话就只能在Ollydbg等动态调试工具中手动脱壳了,建议先到Google或是百度上搜索一下有没有前人脱类似壳的例子。具体过程不多说了。
2、运行脱壳后的程序,看有无自校验,有的话要先解除。一般是在Ollydbg中下CreateFileA、GetFileSize、ReadFile等断点来找到程序的自校验处,可以同时开两个Ollydbg来分别调试脱壳前后的程序,找到关键跳转处修改之。对于一些变态的程序要考虑使用代码Patch技术,即在壳解压完进入OEP前一刻运行自己的patch代码,此是后话。
3、标题中提到了Delphi程序ÿ