增强Delphi程序安全性的几个想法,提高反破解能力

         “破解”在今天已经大行其道,作为开发者用得较多的Delphi,由于有其实现的特殊性,破解方式与MFC大不相同,但是在DEDE出现以后,Delphi程序的破解就变得容易起来. 结合本人在开发与破解中的经验, 将几个提高反破解能力的想法提供出来,请大家指正.

1.不要使用明码比较.

如果在程序中使用类似如下代码:

if edt_SerialNo.Text = '1234567' then ...

else ShowMessage(”Serial No Error!”);

直接使用反汇编工具就可以看到注册码(序列号)了. 所以不能使用明码, 一定要是经过一系列计算.

2.针对DEDE寻找过程/函数入口的功能, 对要发布的程序做"混淆"---将BtnRegister名字修改为cmp_20040101, 这个没有任何意义的名字, 并适当在画面中多增加几个相似的控件.

3.针对DEDE对bpl包中函数地址的参考, 对于关键性程序, 如: 控制注册的程序(在Delphi做得最多的分布式数据库管理系统中常常是一台机器管理注册). 不要使用包含运行期包的方式. 而且可以将这部分VCL源码另存到项目目录下, 适当做一些修改(调整参考地址及调用代码).

4.判断密码可以多Call几个函数, 尤其是字符串作为参数. Delphi对字符串的处理与C/C++不同, 在栈中只保留一个地址指针, 全局字符串与局部方法不同, 而且每多CALL一层函数/过程, 指针就多指一层. 无他, 增加动态调试的复杂度而已.

5.如果是服务端程序(分布式数据库管理系统注册部分), 尽量做成系统服务. 并限制在98下使用(98下破解较容易), 注册不正确时, 服务端不报错, 而是不提供客户端服务.

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值