增强Delphi程序安全性的几个想法,提高反破解能力
2004-08-25 00:07
316 查看
“破解”在今天已经大行其道,作为开发者用得较多的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.不要使用明码比较.
如果在程序中使用类似如下代码:
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下破解较容易), 注册不正确时, 服务端不报错, 而是不提供客户端服务.
相关文章推荐
- 增强Delphi程序安全性的几个想法,提高反破解能力
- 通过程序使你的网站具有预防DOS攻击的能力 --提高站点的安全性
- 通过程序使你的网站具有预防DOS攻击的能力 --提高站点的安全性
- 优秀程序员 分析提高能力 程序进阶
- 提高信息系统用户帐户安全的几个增强功能分享
- 写程序10大习惯和如何提高编程能力(不知道被转了几百次了找不到原出处了) 【转载】_beyond yourself--思路决定出路
- 提高个人能力的几个小建议
- Delphi2010中DataSnap高级技术(6)—加强服务程序对访问者的控制能力
- 提高Oracle数据库安全性的几个建议
- 提高程序安全性的方法
- 几个获取Windows系统信息的Delphi程序
- 3年前的小程序:破解需要delphi IDE 环境的vcl 控件
- 在并发编程中使用生产者和消费者模式能够解决绝大多数并发问题。该模式通过平衡生产线程和消费线程的工作能力来提高程序的整体处理数据的速度。
- php下过滤html代码的函数 提高程序安全性
- gcc提高程序性能的几个参数
- 提高程序效率的几个方法
- linux tcp wrappers(对inted端口监视程序生成的服务提供增强的安全性)
- 最新Delphi XE2 正式版破解程序
- 提高信息系统用户帐户安全的几个增强功能分享
- php下过滤html代码的函数 提高程序安全性