扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
在本页阅读全文(共3页)
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的反汇编工作中做了“错误指引”,从而使得它犯下错误。
注册认证部分的源程序是“破解组织”进行“暴破”的突破口,注册认证算法的难易度直接影响软件被“暴破”的几率。增加注册认证算法的难度可以从以下方面入手。
1.选择相对复杂的算法进行注册开发(现行的加密算法中可以选择RSA算法)。当然,最好的方法还是自己编写算法。如果采用一些常见的密码学的算法,这跟引狼入室没有多大的区别,毕竟这些常见的算法已经被“暴破”高手们研究透彻了,哪里还有安全可言,而采用自己设计的算法就不同了,人的思维有所区别,这就在很大程度上增加了破解的难度。
2.检查注册信息代码编写得越分散越好。如果将注册模块编写到一起,就好比将财宝放在保险箱里,虽然非常坚固难以打开,但对于开锁高手而言,一旦打开它,里面的财宝尽失。具体的操作方法是:软件在注册时,不要让其调用同一个函数或判断同一个全局标志。
3.在检查注册信息的时候插入大量的无用运算代码。这样做的目的是误导解密者,让他们以为找到了真正的破解方法,在尝试以后却发现无效。这好比战场上的士兵用“迷彩服”与稻草来伪装自己一样,敌人很难发现他们到底在哪里。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者