关闭

谁动了我的代码(1)

1487人阅读 评论(5) 收藏 举报

  前几天在一家公司看到他们在使用的一个很简单的套打软件,发现那是我写的,仔细一看,又好像不是,认真看过之后,确认是我写的,那个汗啊。那原来是我帮学校写的一个毕业生派遣证的打印,当初应学校的要求,把每个部分都做成了可设置的,结果现在改头换面一下,就成别人的了,我当时那个郁闷啊!!
  不过后来想想,自己也经常“利用”别人的成果,以前做的一些网站都是下载别人的源码,稍微做一些修改就OK了,很多软件的核心技术也是网友的杰作。
  如此看来,大家对代码的保护还很不够,所以我就去图书馆找了几本书,好好地研究了一段时间,现在就来看看,谁会动我的代码,谁动了我的代码!

(本文主要灵感来自清华大学出版社的《Cracker终结者——提供最优秀的软件保护技术》一书,在此对原作者Pavol Cerven和译者韩宏莲致敬!)

  “软件的保护和破解就像是盾与矛的关系,但在这场看不见硝烟的拉锯战中,解密高手却往往成为胜利者。双方在信息与资源上常常存在巨大的不对称性,这也许是战局不平衡的一个重要原因。”

  什么人会对你的代码感兴趣呢?
  首先要看你的Project是哪种类型的。如果是通用的项目,那就意味着很多人可以拿到你的Application,“开发者往往对解密者的能力和人数估计不足,这也是软件保护开发者可能犯下的严重错误。”解密者往往会在解密之后“免费发布解密软件和信息,使你的软件失值,并将利益转给解密软件的用户”,也许你会觉得奇怪,这样做对那些解密者有什么意义呢?大家有没有见过Microsoft Office 2003 绿色中文免安装版,直接复制到任何地方就可以用了,不需要安装,解密者在分发解密软件的时候往往都会添加一些版权信息,这样,他在解密界就名声大躁了!再看微软的操作系统,哪一个不是被人破解的,很多破解版本都修改了注册信息,试想一下,往电子城一走,每三个公司就有一个用的是“你”的操作系统,那种感觉如何?!
  也许你会说,你写的虽然是通用的项目,但是有特定的用户群的,这样的软件应该没有人要破解吧?错了,从使用的角度来讲,软件的核心是数据,如果你的软件被人破解了,那么系统中的机密数据可能也就要成为“公开的秘密”了。这应该不是你所希望看到的吧!
  或者你要说,你写的只是一些实用型的小软件,本身就是免费的,那么OK,你完全可以做成OpenSource的啊,这不是本文讨论的范畴咯。

  那么又是什么人动了你的代码呢?三大帮凶:调试程序、反汇编程序和反编译程序!
  调试程序:设置断点,逐语句(指令)跟踪调试,就跟我们用高级语言编程时所用的各种IDE类似的,所不同的是,调试程序只能看到每一步执行之后内存中对应的值,但是这些对于解密者来说就已经足够了。虽然说编程语言的级别越高,跟踪就越困难,但这是把双刃剑,使用高级语言进行软件保护要显得更困难。
  反汇编程序:反汇编程序就是把程序从二进制代码转化为汇编语言程序,显然,不管你的程序是用什么编写的,它总可以转化成汇编语言程序。
  反编译程序:反编译程序是把应用程序代码转化成原代码,显然不同的语言必然有不同的反编译程序,反编译程序转化得到的原代码虽然不可能跟实际的原代码完全一样,但是有一定经验的解密者,还是可以很容易地看出你的编码思路,从而找到他感兴趣的部分。

  Pavol Cerven在他的书里向我们介绍了几种解密者最常用的程序,我没有用过,但为了能“知已知彼”,还是要了解一下:

软件名称

操作系统

适用语言

官方网站

备注

SoftICE DOS/Windows 9x/NT   www.compuware.com  
TRW2000 Windows 9x      
WinDasm Windows     现已不再更新
SmartCheck   Visual Basic    
IDA Pro     www.ccso.com 全称为Interactive DisAssembler Pro, 交互式反汇编程序专业版
Sourcer DOS   www.v-com.com  
Hex WorkShop     www.bpsoft.com  
Hiew DOS     全称为Hack's View, 黑客视图

 

下一次要讲讲软件保护的几种常用方法。

 

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:2542次
    • 积分:55
    • 等级:
    • 排名:千里之外
    • 原创:2篇
    • 转载:0篇
    • 译文:0篇
    • 评论:5条
    文章存档
    最新评论