谁动了我的代码(1)
来源:互联网 发布:华为中央软件院官网 编辑:程序博客网 时间:2024/05/01 10:52
前几天在一家公司看到他们在使用的一个很简单的套打软件,发现那是我写的,仔细一看,又好像不是,认真看过之后,确认是我写的,那个汗啊。那原来是我帮学校写的一个毕业生派遣证的打印,当初应学校的要求,把每个部分都做成了可设置的,结果现在改头换面一下,就成别人的了,我当时那个郁闷啊!!
不过后来想想,自己也经常“利用”别人的成果,以前做的一些网站都是下载别人的源码,稍微做一些修改就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, 黑客视图
下一次要讲讲软件保护的几种常用方法。
- 谁动了我的代码(1)
- 《谁动了我的代码》
- 谁动了我的代码?
- 谁动了我的代码
- Android,谁动了我的内存(1)
- Android,谁动了我的内存(1)
- Android,谁动了我的内存(1)
- Android,谁动了我的内存(1)
- Android,谁动了我的内存(1)
- Android,谁动了我的内存(1)
- Android,谁动了我的内存(1)
- Android,谁动了我的内存(1)
- 谁动了我的指针
- 谁动了我的blog
- 谁动了我的浏览器
- 谁动了我的IP?
- C++:谁动了我的指针
- 谁动了我的思想
- 自定义控件的拖动
- RIA 网站收集
- 实战:从3DS MAX7.0 里导出Torque游戏引擎专用的.dts模型文件-系列1(DTS from 3DS MAX7.0 -1)
- File Structure
- 运算符重载
- 谁动了我的代码(1)
- 头痛好了,也不困了
- 一只在IT线上苦苦挣扎,努力奋斗的我
- UserControl的单击事件对鼠标左右键都有效,怎样使之像按钮控件那样只对鼠标左键敏感?
- 开发web应用难于上青天,web开发十八难
- 在ASP.net中,不引用第三方类库的、轻便的、将报表导出到Excel中的方法
- 高考了.
- SoftwareSOA小组任务进度甘特图
- 工作了才知道