如何对程序加入试用期处理,难道是加密/加壳?

ERR0RC0DE 2008-06-16 06:32:09
写了一程序,要给别人用,以前用个加密狗,附带加壳,但现在不需要加密狗(成本高了些),想弄个加密模式,类似输入一个CDKEY之类的东西,正确则可使用。
想问一下如何处理的?我现在处理是这样:
char *inputkey; // from user input
char *localkey = encode(机器一些ID + 一些其它信息);
if (CompareMemory(inputkey, key, len) == 1)
{
// OK,
// 去除限制
}

这样的话,我的问题是:验证是在client,那有人反汇编我的代码,不就看出我如何弄的,然后不就再写个程序,弄个KEY就破解了吗?

对这方面实在了解比较少,请各位说说。
...全文
269 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
gyk120 2008-06-17
  • 打赏
  • 举报
回复
说实话,无数的jump并不是个好办法,因为最后你自己都有可能晕了
可以加上一点anti-OD的代码,避免别人反编译
HuWenjin 2008-06-17
  • 打赏
  • 举报
回复
楼主的问题确实存在
我原来做的一个软件放到网上第二天就被破了,和你说的方法一样

现在也没有更好的主意,关注
scq2099yt 2008-06-17
  • 打赏
  • 举报
回复
如果真有人要破解是很难找到绝对的方法的
palmax 2008-06-17
  • 打赏
  • 举报
回复
没有破解不了的

像楼主这样的确实OllyDbg就可以搞定
langzi8818 2008-06-17
  • 打赏
  • 举报
回复
任何形式都不能防止别人破坏你
gyk120 2008-06-17
  • 打赏
  • 举报
回复
楼上所说的就是“爆破”,这种方法比追踪算法来得更简便,想在源头上阻止的话,只有禁止反编译软件加载你的程序,然后加上保护壳(最好是多重加壳那种),来扰乱数据或者PE文件头,这样可能会有点效果
龙凤呈祥焱 2008-06-17
  • 打赏
  • 举报
回复
中国软件的现状.
用于防破解的资源大于用于完善软件功能和易用性的资源.
孤客天涯 2008-06-17
  • 打赏
  • 举报
回复
能加密也能解密,确实没有不破的城墙,现在破解基本上都是反编译,在你加密验证的地址直接用jump指令跳过,根本不用考虑所谓的加密算法,只有防止反编译才能有效的(不是绝对的)制止破解,楼主可以考虑插入反汇编指令试试.
foxhill 2008-06-17
  • 打赏
  • 举报
回复
[Quote=引用楼主 ERR0RC0DE 的帖子:]
写了一程序,要给别人用,以前用个加密狗,附带加壳,但现在不需要加密狗(成本高了些),想弄个加密模式,类似输入一个CDKEY之类的东西,正确则可使用。
想问一下如何处理的?我现在处理是这样:
char *inputkey; // from user input
char *localkey = encode(机器一些ID + 一些其它信息);
if (CompareMemory(inputkey, key, len) == 1)
{
// OK,
// 去除限制
}


这样的话,我的问题是:验证是在clie…
[/Quote]
localkey = encode(机器一些ID + 一些其它信息);
如果加上一个随机数算法是不是会好一些,因为是随机的,每次访问都不相同,因为其不固定性应该很难使用暴力破解。
cppwin 2008-06-17
  • 打赏
  • 举报
回复
我的问题是:验证是在client,那有人反汇编我的代码,不就看出我如何弄的,然后不就再写个程序,弄个KEY就破解了吗?
很遗憾,的确如此.

给些建议:
不要用系统提供的 memcmp之类的函数, 敌人一般首先找这些地方.自己用指针去比较.
使用非对称加密算法,比如MS用椭圆加密算法. 其好处是,敌人不能破解你的key算法,只能暴力破解.
greatws 2008-06-16
  • 打赏
  • 举报
回复
一般的小软件就用长城代码吧,把jmp和call弄一大堆,别人就没心思破解了,因为把算法研究出来的时间还不如自己写一个呢。

jameshooo 2008-06-16
  • 打赏
  • 举报
回复
使用脚本语言来处理,难以被反编译
yjgx007 2008-06-16
  • 打赏
  • 举报
回复
还有种方法是,验证码的返回不要单纯返回True或False.
可以返回程序执行相关的指令代码,每次运行都不一样。
cnzdgs 2008-06-16
  • 打赏
  • 举报
回复
要防别人反汇编,常用的方法是指令无数条各类jump指令,到处乱跳转,经常跳到半条指令的位置(利用指令的操作数构成新的跳转指令),让人无法利用反汇编来查看你的代码,另外跳转指令要相当多,让人无法单步跟踪。
菜牛 2008-06-16
  • 打赏
  • 举报
回复
加密狗都可以模拟,微软的网络激活都可以破解。没有攻不破的城墙。
五秒-CAD图纸文档加密 支持格式:dwg、dxf、dws、dwt、pdf、xls、xlsx、docx、bmp、jpg、jpeg。3ds、obj等三维,plt、hpgl等打印中转,svg、emf等矢量,exe,avi、pm4等主流音视频 电脑要求:无需安装任何对应软件、插件、驱动,裸机装好操作系统,就可以打开查看以上格式的文件 加密途径:不发出任何文件,发出的是一个加密包(多种格式几十个文件也是一个包) 版权保护:背景化以后再发出去的图纸,别人不能修改你的底稿,但是可以继续画图 阅读控制:通过密码来控制保存、打印、去水印 时间控制:文件自带有效期,超期自毁。 试用版本:无需注册您也可以正常小批量使用。 适用场景1:假设你是设计公司或者策划公司,为客户做方案,当完成95%的时候,客户要看图纸(dwg)、报价(xlsx)、施工组织设计(docx)、手绘稿(jpg),你给还是 不给?如果你给了,你很可能白干!通过加密包的方式提交,客户不需要安装任何软件就可以看到,但是客户拿不到任何文件。 适用场景2:假设你是设计公司或者策划公司,需要提交图纸电子稿给甲方或施工方二次设计,最后施工出了问题,如何区分责任?你的原稿保存在加密包里面,抽取出你的 原稿就可以确定责任方在哪边! 适用场景3:假设你的图纸需要其他人二次绘制,但是你的底稿被人修改了怎么办?您只要在图纸交给别人之前执行背景化,别人就无法修改你的底稿。
Zprotect是新一代的软件加密保护系统,拥有多项革命性的创新技术,设计用来保护您的软件产品不被破解,减少由于盗版给您带来的经济损失!此外,Zprotect 拥有简单易用的许可控制系统,您无需更改任何代码,即可为您的软件添加注册机制。与传统软件保护系统相比,Zprotect更加注重对代码的处理,并且拥有良好的稳定性和兼容性,是您配置软件保护系统的最佳选择! Zprotect拥有简单易用、高效灵活的注册和授权管理系统: 一键试用技术. Zprotect 为您提供一键试用技术,您不必修改任何源代码,在短短几分钟之内就可以将您的完整版软件转换为“先试用后购买”的试用版软件,甚至还可以支持带硬件锁定的序列号注册。 内建注册和许可管理系统. Zprotect 内建灵活易用的注册和许可管理系统,您可以轻松创建具有时间限制、硬件锁定、水印信息的注册码。 动态算法生成引擎. 外壳所使用算法均动态生成,随机且唯一,让逆向算法变得困难和高成本。 时间限制注册密钥. 如果您需要限制注册版本的有效期,可以通过创建具有时间限制的注册密钥来实现。 硬件锁定(一机一码). 激活硬件锁定功能的注册密钥,只能在某一特定计算机上使用;您可以通过锁定用户计算机的硬件信息来控制注册码的传播,例如 CPU、硬盘序列号、网卡 MAC 地址等。 密钥黑名单. 如果您的用户泄漏了注册密钥,那么您就可以将该密钥添加进密钥黑名单,这样下一版本更新的时候您就可以锁定该密钥。 启动密码保护. 这种附加的保护可以有效防止软件未经授权的使用,必须输入正确的密码才可以运行程序。 试用次数、天数、日期和运行时间限制. 使用 Zprotect ,您可以轻松为您的应用程序添加试用次数、试用天数、试用日期和试运行时间等限制;这样您的客户就可以全功能评估您的软件产品,增大购买意向
由于限制,分开了 2 个文件,请大家一起下载在解压,请谅解 《完全掌握加密解密实战超级手册》紧紧围绕软件的加密与解密来进行讲解,在详细讲述加密/解密技术的同时,还介绍了相应的实现原理,并配合案例分析,使读者能够系统、深入地了解加密/解密技术,能够更深层次地理解他人的编程思路,从而更好地提高自己的编程水平。全书共分为14章,包括:加密解密技术基础、常用代码分析工具、不同的加密解密算法、静态分析解密工具、动态调试解密工具、辅助工具、壳的不同应用技术、为程序打上补丁、网络验证技术、常用加密工具、不同的注册保护方式、编辑安装包程序、不同软件的保护措施、常用软件加密解密技术等。 《完全掌握加密解密实战超级手册》讲解通俗,深入浅出,注重实践,适用于广大计算机软件加密解密技术新手、爱好者,适用于软件开发从业人员和编程爱好者,也非常适合大专院校相关专业学生,以及有志于从事安全或加解密行业的准专业人员快速掌握实用技术 前言 第1章 初识加密解密技术 1 1.1 加密解密技术基础 2 1.1.1 密码学简述 2 1.1.2 常用汇编语言命令 2 1.1.3 破解密码的常用方式 4 1.1.4 壳的作用和分类 5 1.2 文件读写与动态链接库文件 6 1.2.1 INI文件与自定义文件的读写 6 1.2.2 在Delphi中建立和使用DLL文件 10 1.2.3 DLL文件的调用方法 12 1.3 设计与发布包组件 14 1.3.1 包组件概述 14 1.3.2 设计与发布包组件 15 1.3.3 安装与卸载包组件 17 1.4 解密与注册保护 19 1.4.1 解密方式 19 1.4.2 注册保护方式 19 1.5 试用期限制功能 21 1.5.1 试用次数限制功能 21 1.5.2 试用天数限制功能 25 1.5.3 试用日期限制功能 31 1.5.4 执行时间限制功能 36 1.5.5 NAG窗口提示限制 37 1.6 专家点拨:常见问题解答 42 第2章 常用代码分析工具 43 2.1 初识PE格式文件 44 2.1.1 PE格式文件概述 44 2.1.2 检验PE格式文件 46 2.1.3 PE文件格式的头结构 46 2.1.4 设置Optional Header可执行信息 49 2.1.5 Section Table结构数组 51 2.1.6 Import Table输入表 52 2.1.7 Export Table输出表 53 2.1.8 重定位表 54 2.2 简述代码分析实战 55 2.2.1 虚拟地址与偏移地址 55 2.2.2 搜索程序入口点OEP 58 2.2.3 转储程序与修复输入表 58 2.2.4 用增加重定位项调用引入表函数 62 2.3 常见静态分析工具 63 2.3.1 常见程序类型分析工具 63 2.3.2 常见资源编辑器工具 64 2.3.3 常见反汇编分析工具 66 2.4 常见动态分析工具 67 2.5 常见注册表分析工具 68 2.5.1 注册表编辑器Regedit 68 2.5.2 注册表监控工具Regsnap 71 2.5.3 注册表数据库监视软件Regmon 73 2.5.4 注册表静态比较工具RegShot 74 2.6 专家点拨:常见问题解答 75 第3章 不同的加密解密算法 76 3.1 数据加密的缘由 77 3.1.1 数据加密技术概述 77 3.1.2 为什么要进行数据加密 77 3.1.3 数据加密的原理 77 3.1.4 加密技术与密码分析 79 3.2 Hash算法基础 81 3.2.1 CRC32算法 81 3.2.2 MD5算法 82 3.2.3 SHA算法 85 3.3 对称密码算法基础 87 3.3.1 对称密码算法概述 88 3.3.2 BlowFish算法概述 88 3.3.3 DES算法概述 90 3.3.4 IDEA算法概述 94 3.4 非对称密码算法基础 95 3.4.1 非对称密钥密码概述 95 3.4.2 RSA非对称密钥密码概述 95 3.4.3 DSA数据签名技术 96 3.4.4 Diffie-Hellman密钥交换系统概述 97 3.5 专家点拨:常见问题解答 97 第4章 静态分析解密工具 98 4.1 程序源代码概述 99 4.1.1 基本程序信息 99 4.1.2 反汇编源代码部分 101 4.2 常用反汇编工具 103 4.2.1 反汇编和调试工具W32Dasm 103 4.2.2 国产静态反编译工具C32asm 114 4.2.3 反汇编工具IDA Pro 116 4.3 实战静态分析解密 127 4.3.1 如何实现静态分析解密 127 4.3.2 汇编指令及其机器码值 128 4.3.3 判断真假注册码的方法 128 4.3.4 实例分析:静态破解Crackme3软件 129 4.4 注册机编写器keymake 131 4.4.1 为破解文件打个补丁 132 4.4.2 制作内存补丁 132 4.5 专家点拨:常见问题解答 133 第5章 动态调试解密工具 135 5.1 动态调试工具Ollydbg 136 5.1.1 初识Ollydbg 136 5.1.2 不同的配置选项 138 5.1.3 快速掌握常用功能 138 5.1.4 熟悉必要的插件 141 5.1.5 实现动态调试解密 141 5.1.6 实例1:解密加过UPX壳的Crackme程序 142 5.1.7 实例2:找出真的注册码 143 5.2 内核模式调试器SoftICE 144 5.2.1 配置SoftICE工具 144 5.2.2 实现SoftICE调用 148 5.2.3 激活SoftICE主窗口 148 5.2.4 快捷键与常用命令 150 5.2.5 快速找到程序入口处 157 5.2.6 多次跟踪的设置 158 5.2.7 用PE修改代码属性 158 5.3 动态反汇编调试器TRW2000 159 5.3.1 安装与配置TRW2000 160 5.3.2 呼出TRW2000调试窗口 162 5.3.3 常用命令和功能键 164 5.4 专家点拨:常见问题解答 169 第6章 各显其能的辅助工具 171 6.1 不同的编辑修改工具 172 6.1.1 十六进制编辑工具WinHex 172 6.1.2 十六进制查看器Hiew 175 6.1.3 十六进制编辑器HexWorkshop 179 6.1.4 文本编辑器UltraEdit 182 6.2 不同功效的监视工具 187 6.2.1 文件系统监视工具Filemon 187 6.2.2 API函数监视工具 188 6.2.3 MFC(微软库类)监视工具Mfcspy 190 6.3 编辑程序内部资源工具 191 6.3.1 用FreeRes工具修复资源 191 6.3.2 用工具eXeScope编辑程序内资源 192 6.3.3 用工具Festools管理系统资源 194 6.4 制作破解补丁工具 196 6.4.1 补丁制作工具dUP 196 6.4.2 绿色工具XCell 199 6.5 专家点拨:常见问题解答 200 第7章 揭秘壳的不同应用技术 201 7.1 不同的加壳压缩软件 202 7.1.1 DOS窗口下的文件压缩壳软件UPX 202 7.1.2 压缩各种可执行程序的ASPack 203 7.1.3 软件保护压缩工具Armadillo 204 7.1.4 国产外壳保护工具EncryptPE 207 7.2 查壳工具大放送 208 7.2.1 用Language2000查看加壳情况 208 7.2.2 功能强大的PEiDentifier 209 7.3 各具神通的脱壳工具 210 7.3.1 常用ASPack脱壳软件简介 210 7.3.2 通用脱壳工具UnPECompact 211 7.3.3 通用脱壳工具ProcDump 212 7.3.4 脱壳工具大集合UN-PACK 214 7.4 轻松实现手动脱壳 215 7.4.1 用ImportREC实现手动脱壳 216 7.4.2 重建可编辑资源 220 7.5 专家点拨:常见问题解答 220 第8章 别出心裁:为程序打上补丁 222 8.1 常用补丁制作工具 223 8.1.1 专业补丁制作工具CodeFusion 223 8.1.2 内存动态补丁工具Process Patcher 226 8.2 实例:网络客户端程序补丁 228 8.2.1 程序拦截的验证代码 228 8.2.2 增加自动修改机器号功能 229 8.2.3 用补丁修改程序 232 8.2.4 为程序附带一个动态链接库 234 8.2.5 用补丁加密可执行文件 235 8.3 代码自修改SMC技术 238 8.3.1 SMC函数定义 238 8.3.2 实例:SMC补丁技术应用 239 8.4 用CrackCode2000制作注册机 241 8.4.1 快速找到注册码 241 8.4.2 实现内存直接寻址 242 8.4.3 实现寄存器间接寻址 243 8.4.4 为Decompile Winhelp制作注册机 243 8.4.5 实例:CrackCode的加强模式 245 8.5 专家点拨:常见问题解答 247 第9章 网络验证技术大放送 248 9.1 实现Web服务器网络验证 249 9.1.1 加密客户端 249 9.1.2 控制本地计算机 252 9.2 实现本地服务器验证 256 9.2.1 加密客户端 257 9.2.2 加密服务器端 259 9.3 在线升级验证加密技术 261 9.3.1 在线升级验证实现 261 9.3.2 实例分析:在线升级验证 262 9.4 专家点拨:常见问题解答 268 第10章 各种常用加密软件工具的使用 269 10.1 多媒体文件加密工具 270 10.1.1 多媒体加密工具Private Pix 270 10.1.2 图片软件加密工具CryptaPix 272 10.1.3 图片文件专业加密工具WinXFiles 273 10.2 多功能文件加密工具 276 10.2.1 数据加密和安全通讯工具“文件密使” 276 10.2.2 可加密各种格式文件的BlackBox 281 10.2.3 对称加密算法工具ABI-CODER 286 10.2.4 国产加密工具“加密精灵” 288 10.3 专家点拨:常见问题解答 291 第11章 分析软件的不同注册方式 292 11.1 简单的注册码保护方式 293 11.1.1 追踪简单算法 293 11.1.2 简单注册码的破解 294 11.1.3 API函数常用断点及实例 298 11.2 按钮功能限制 308 11.2.1 按钮功能限制概述 308 11.2.2 突破按钮限制 309 11.2.3 按钮限制解密实例 311 11.3 NAG窗口 312 11.3.1 NAG窗口实例1 313 11.3.2 NAG窗口实例2 317 11.4 加密狗解密 319 11.4.1 判断加密狗类型 319 11.4.2 加密狗解密实例 320 11.5 专家点拨:常见问题解答 325 第12章 编辑安装包程序 326 12.1 InstallShield 327 12.1.1 InstallShield使用介绍 327 12.1.2 编辑CAB压缩包 341 12.2 Wise安装包软件 343 12.3 Setup Factory安装包制作工具 343 12.4 Inno Setup安装制作软件 352 12.4.1 Inno Setup的使用介绍 352 12.4.2 Inno Setup的脚本语法介绍 357 12.4.3 压缩包的编辑 360 12.5 微软MSI安装包 360 12.6 专家点拨:常见问题解答 362 第13章 不同软件的保护措施 363 13.1 对抗不同的破解手段 364 13.1.1 对抗DeDe和动态调试 364 13.1.2 对抗SoftICE 365 13.1.3 对抗静态调试 367 13.1.4 实现磁盘文件自校验 368 13.2 不同软件的保护实现 369 13.2.1 把ASP编写成DLL 370 13.2.2 COM组件的Delphi实现 372 13.2.3 实现软件注册保护的VCL组件 377 13.2.4 利用伪装壳制造虚假信息 379 13.2.5 利用加密锁保护程序 380 13.3 邮件加密软件PGP 384 13.3.1 PGP概述 384 13.3.2 PGP的安全问题 385 13.4 专家点拨:常见问题解答 390 第14章 常用软件加密解密技术 391 14.1 加密解密Word文件 392 14.1.1 Word自身功能加密 392 14.1.2 利用AOPR解密Word文档 393 14.1.3 风语文件加密工具 395 14.1.4 Word Password Recovery破解工具 395 14.1.5 Word密码查看器 396 14.2 Excel文件加密解密 397 14.2.1 实现Excel自加密 397 14.2.2 办公文件密码恢复程序 398 14.2.3 Excel加密文档解密工具Excel Key 399 14.3 PDF文件的加密解密 400 14.3.1 加密PDF文件 400 14.3.2 使用PDF文件加密器 402 14.3.3 Advanced PDF Password Recovery 404 14.3.4 用PDF Password Remover解除PDF文件口令 406 14.4 宏加密解密技术 408 14.4.1 实现宏技术加密 408 14.4.2 宏解密工具VBA Key 411 14.5 对压缩文件实施加密解密 411 14.5.1 实现WinZip自加密 412 14.5.2 解除ZIP文件口令 413 14.5.3 实现WinRAR自加密 413 14.5.4 解除RAR文件密码 414 14.6 加密解密EXE文件 415 14.6.1 用ASPack加密EXE文件 415 14.6.2 用tElock加密EXE文件 417 14.6.3 为EXE文件加口令 419 14.7 解密MS SQL Server保护 420 14.7.1 实现本地用户的帐户登录 420 14.7.2 查询分析器的使用 420 14.7.3 多功能密码破解软件 421 14.8 加密解密网页与脚本文件 423 14.8.1 网页与脚本的加密 423 14.8.2 网页与脚本的解密 428 14.9 专家点拨:常见问题解答 430
在国内软件行业环境混乱,基本上有点优秀的商业软件大部份都会被破解,有许多开发者为了保护自已的软件不被破解,使用很多复杂的加密算法,这样花费了很多精力。今天我为大家推荐一款软件Themida ,它是一个非常强大的软件加密保护系统,专门是为了那些想保护自己的软件不被先进的反向工程和黑客软件破解的开发者而设计的。开发者不需要更改任何的源代码就可以使用Themida轻松的将自已的软件进行加密,防止被黑客轻易破解。Themida使用SecureEngine的保护技术。它能够以最高的优先等级运行,这些保护技巧是从来都没在电脑防御技术领域出现过,Themida能在最大程度地保护你的软件产品。特别适合保护.net程序。 Themida的一些最重要的注册保护措施特点 1、可以创建用来延长试用版本的有效期的特别码。 2、一个用来储藏试用 状态的 强劲的引擎,以避免任何软件破解者尝试重置有效期。可以13、为个别开发者的需要创建不同的注册码。 4、针对特定国家的试用锁定和注册码。 5、机器锁定,使程式只运行在特定的电脑上。 6、自定的试用计算器来控制你试用版本的有效资源。 7、为试用版本和完全版本制定独立的密码。 8、可以使用外部 Themida DLL 来创建你自己的自动化系统。 9、超过 50 种不同函数的完整 SDK 。 10、为试用版和完全版提供 .NET SDK 支援。 11、使用数据库来安全地储存你所有的软件,客户和注册资料。 13、自定义所有的试用 / 注册讯息,也控制是否要展示特定的试用 / 注册讯息 重要提示(设置中文方法): Advanced Options--->localization--->选择simple_chinese.lng

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧