首页
社区
课程
招聘
[转帖]怎么防止软件被破解(转自:http://www.gezehua.com/xgteach/encrypt.htm)
发表于: 2006-3-20 21:24 3983

[转帖]怎么防止软件被破解(转自:http://www.gezehua.com/xgteach/encrypt.htm)

2006-3-20 21:24
3983
怎么防止软件被破解
    Visual CHM 推出已经3个月了,2.0版后我见过几个破解版本,但是到现在都没有一个成功的破解版本,很多朋友问我是怎么加密的,我现在决定公布一下2.X(每个版本的加密方法都是一致的)采用了什么方法防破解。算是对中国共享软件作的一点点微小贡献吧!
   
首先要防止被写出注册机, 你的软件的注册机一旦被发表, 那你完全有理由做成免费软件了。防止被写出注册机 最简单的方法就是保护你的校验算法,具体的做法就是千万别使用校验函数,把你的校验算法嵌入功能代码里是比较保险的,这样破解者至少要花很多精力去研究那一部分是校验算法。当然这还不够,你还可以把检验算法分散到2个地方,当然更多地方效果会更好,只是将来代码维护起来会很麻烦的。 我想如果不是象WinZIP、ACDsee这样的大牌软件,很少会有人去找出检验算法了(太头疼了)。做完了这些, 你还可以用Aspack,upx之类的压缩执行文件工具做进一步的保护。完了吗?还没有,我这里还有一些更用的东西。 现在的脱壳工具太多了,可以说是没有脱不掉的壳。那怎么办?我这里有一段Delphi5代码更进一步的保护你的软件:
procedure TForm1.FormCreate(Sender: TObject);
Var
  exefile :file of byte;
  ConstStr:byte;
begin
  AssignFile(exefile, Application.ExeName);
  reset(exefile);
  filemode := 0;                //读写属性设置为只读,这样才不会出错!
  seek(exefile,5);      //exe文件的第5+1个位置(自己设要查找的位置)
  Read(exefile,ConstStr);
  //showmessage(inttostr(ord(constmi)));//看看实际是多少(假定为56)
  closefile(exefile);

  if ConstStr <> chr(56) then exit;//如果第5+1个位置的值不是56退出(说明你的软件被改动了)

end;

    这段代码随时随地都可以加入,真的非常方便。 不过你要注意的是,万一用户的机器染上了病毒怎么办。 保护了检验算法,还要保护什么呢?校验算法只是让Cracker很难写出注册机,但是这还防止不了软件被破解(也就是常说的暴破)。暴破的原理很简单:你的软件写完后编译成可执行文件,当Cracker得到这个软件就可以进行反编译,得到汇编代码。你的那段“If 检验不成功 Then ...”,就变成了cmp xx,xx,jp xx,xx。稍微改动一下变成cmp xx,xx,rop,rop,rop,rop。整个前面的校验算法也就作废了。我想应该是没有太好的方法,只是千万不要用明文比较。再想保护深一点就加入一些冗余代码,让Cracker在这堆代码里转的头晕脑涨,你的目的就达到了。
    最后,有些话不吐不快。1.(引用别人:)加密是救不了共享软件业的!在好的加密技术也有人能解开的!与其花费时间去加密,不如把自己软件的功能增强些! 这样可能会有更多的人支持您的!!(整天跳出窗口是谁也烦了)! 2.我认为Cracker们其实挺可爱。

[课程]Android-CTF解题方法汇总!

收藏
免费 0
支持
分享
最新回复 (8)
雪    币: 44229
活跃值: (19960)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
2
呵~
Visual CHM作者datm是论坛的老朋友了
2006-3-20 21:42
0
雪    币: 21
活跃值: (40)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
最初由 无梦徽州 发布
我想应该是没有太好的方法,只是千万不要用明文比较。再想保护深一点就加入一些冗余代码,让Cracker在这堆代码里转的头晕脑涨,你的目的就达到了。


这里指的是花指令吗?具体怎样操作没有说明!
2006-3-20 23:36
0
雪    币: 671
活跃值: (723)
能力值: ( LV9,RANK:1060 )
在线值:
发帖
回帖
粉丝
4
原来作者用delphi,其实编程也是一门学问!
2006-3-21 08:30
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
qsm
5
难啊.我看的幸苦.老学不会.命苦
2006-3-21 10:12
0
雪    币: 721
活跃值: (350)
能力值: ( LV9,RANK:1250 )
在线值:
发帖
回帖
粉丝
6
其实,我早些时候也是爆破的,现在人很懒,不想再动那个软件了。
2006-3-21 19:03
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
这作者也挺可爱的:)
2006-3-21 22:25
0
雪    币: 207
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
2006-3-21 22:31
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
为什么用upx这样的弱壳啊,弄一个强壳不是更让人麻烦一点
2006-3-22 08:50
0
游客
登录 | 注册 方可回帖
返回
//