• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

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

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

“破解”在今天已经大行其道,作为开发者用得较多的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下破解较容易), 注册不正确时, 服务端不报错, 而是不提供客户端服务.


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap