在软件的破解方法里,“暴力破解”(俗称“暴破”)算得上最为普及且行之有效的方式了。经过“暴破”后的软件拥有授权版本才具备的所有功能。笔者也是一位软件开发者,对于这种盗窃“知识产权”的行为深恶痛绝,因此将一些个人的防“暴破”经验共享出来,与大家交流和学习。
一、认识“暴破”手段
首先探讨一下破解组织的“暴破”手段。无论是技术多么精湛的组织,他们都会遵守以下的基本步骤来完成“暴破”。
1.判断软件是否加“壳”。
2.运行“暴破”工具,显示软件的源程序。
3.进行软件源程序的分析,找到注册信息语句。
4.修改注册信息的源程序,让注册功能不再生效,或者让注册码显示出来。
从上面的步骤中不难看到,软件之所以被轻易地“暴破”,主要还是因为开发者粗心大意,或者编译技术不完善导致源程序存在诸多漏洞而造成的。只要开发者在编写源程序时设置多层障碍,便可以在一定程度上防止“暴破”(笔者并不敢夸下“海口”,说自己的方法可以完全杜绝“暴破”,但起码可以增强软件的注册保护性能)。
二、防止“暴破”的方法
给软件“加壳”和添加反跟踪代码
1.软件发布前需要将可执行程序进行“加壳”处理,使其他人无法直接修改源程序。“加壳”可以利用很多优秀的“加壳”工具,且最好采用两种以上的工具对程序进行“加壳”。此外,还应尽可能地利用这些工具提供的反跟踪功能。
小提示:
开发者最好是设计自己的“加壳”方法。如果采用现成的工具,建议不要选择流行的,因为这些工具已被广泛研究,有了通用的“脱壳”办法。
2.除了“加壳”处理外,最好在软件开发的过程中嵌入反跟踪代码,防止“暴破”工具找到软件的注册漏洞。
软件的反跟踪方式较多,比较常见的有利用花指令随机改变关键代码的内存地址。下面看一个例子。
程序最初的源代码如下:
start_:
xor eax,1
add eax,2
jmp label1
label1: xor eax,3
add eax,4
xor eax,5
end start_
先将源程序进行编译,然后用W32Dasm进行反汇编,得到的反汇编结果与源代码相同。接着我们将上述源程序作如下修改:
start_:
xor eax,1
add eax,2
jnz label1 \\注意这里,用两句条件跳转代替了:jmp label1
jz label1
db 0E8h \\注意这个无用的字节和源程序的区别
label1: xor eax,3
add eax,4
xor eax,5
end start_
再把源程序进行编译,然后用W32Dasm进行反汇编。由此得到如下结果:W32Dasm反汇编的结果和事先写的汇编指令不一样,从反汇编的结果中已经无法理解程序的“真实”功能了。这是因为上述改动在W32Dasm的反汇编工作中做了“错误指引”,从而使得它犯下错误。
| Vista+谷歌拼音输入法重现输入法 | 04-06 | |
| 45种可以拿到Webshell的技巧 | 04-02 | |
| 0起步接触黑客--实用价值相当高 | 04-02 | |
| 普通文件的欺骗手法 | 03-21 | |
| 黑客技术-ARP欺骗 | 03-19 | |
| 跨站Script攻击和防范 | 03-19 | |
| 超级兔子+WinRAR轻松破解收费加密 | 03-16 | |
| 浏览器执行exe文件的探讨 | 03-15 | |
| 菜鸟"搜"大量Web Shell的思路 | 03-14 | |
| 轻松录制在线网络电视的方法 | 03-14 | |
| 突破单位网管封杀QQ、MSN 端口的 | 03-14 | |
| 菜鸟找漏洞—渗透网站的“反思” | 02-06 | |