谁动了我的代码(1)

原创 2006年06月07日 02:39:00

  前几天在一家公司看到他们在使用的一个很简单的套打软件,发现那是我写的,仔细一看,又好像不是,认真看过之后,确认是我写的,那个汗啊。那原来是我帮学校写的一个毕业生派遣证的打印,当初应学校的要求,把每个部分都做成了可设置的,结果现在改头换面一下,就成别人的了,我当时那个郁闷啊!!
  不过后来想想,自己也经常“利用”别人的成果,以前做的一些网站都是下载别人的源码,稍微做一些修改就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, 黑客视图

 

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

 

JavaScript谁动了你的代码

到目前为止,同学你知道了JavaScript的历史,也了解其“你想是啥就是啥”的变量系统。相信凭借你深厚的Java或者C++功底,再加上程序员特有的自傲气质,你肯定会信心满满:自信写JavaScrip...

不同人对BUG的反应,程序员:谁动了我的代码?

代码女神镇楼! Bug 是个很有趣的东西,有代码的地方就有它,不同人对待 Bug也有不同的反应,一起来看吧~ 程序员:谁动了我的代码? 这确实是一种似曾相识的感觉,我...

程序猿利器(一) 批量替换 为妹子写了个批量替换内容的代码,无奈友好性和可操作性太渣,能改的给改提示好看点,功能性就别动了

如题,最近发现页面同功能的不少,遂写了个批量替换的程序,今天下班前,一妹子说想用用,无奈友好性太差,烂成渣,遂今天晚上抽出了两个小时在改友好性提示,无奈 感觉还是渣, 有这方面经验的 提示信息给改改,...
  • Asa_Jim
  • Asa_Jim
  • 2015年07月24日 00:03
  • 457

地震无情,代码有爱 ,程序员在行动,你行动了吗?

    地震无情,人间有爱,大大小小的天灾人祸,仿佛都集中在了一个点上,不停的爆发,不断的宣泄,看着那些地震灾区,一座座倒塌的房屋,瞅着那群天真可爱,一张张失宠的小脸,作为一个人,作为一个中国人,作为...
  • winc_co
  • winc_co
  • 2011年03月12日 13:05
  • 2631

JavaScript谁动了你的代码

谁动了我的代码?谁动了我的代码?谁动了我的代码?奇怪的事说三遍!
  • hjwen
  • hjwen
  • 2016年11月30日 21:09
  • 87

JavaScript谁动了你的代码

达人科技 2016-12-02 00:34 到目前为止,同学你知道了JavaScript的历史,也了解其“你想是啥就是啥”的变量系统。相信凭借你深厚的Java或者C++功底,再加上程序员特有的自...

Android,谁动了我的内存(1)

http://winuxxan.blog.51cto.com/2779763/512179  一、 Android的内存机制    Android的程序由Java语言编写,所以Android的内存管理...

谁动了我的奶酪.pdf

  • 2017年05月22日 11:02
  • 10.16MB
  • 下载

谁动了我的电脑.doc

  • 2013年10月14日 09:51
  • 364KB
  • 下载

谁动了我的C盘---vs2010中IntelliTrace调试

Normal 0 7.8 磅 0 2 false false false Microsof...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:谁动了我的代码(1)
举报原因:
原因补充:

(最多只允许输入30个字)