反编译自己的程序
扫描二维码
随时随地手机看文章
先说说来由。
反编译自己的程序是应为一个叫做SkyPE的即时聊天工具。
它有着最好的网络语音聊天质量
怎么比较呢?
就拿QQ开刀吧,使用了SkyPE的语聊以后,你就再也不会使用QQ的语音聊天功能了。
然而他却是用Delphi写的。
在他的安装文件夹下,有两个exe文件:(新版2.0)
一个主程序,另一个程序居然还是Delphi7的那个默认的图标 :)
心里一想,牛,全是用Delphi写的。
有很多人说Delphi快死了,其实,我觉得,
到了目前为止,人们对Delphi的认识,才更进一步的加深了,知道她擅长做什么
现在网络上满天飞的共享软件不乏有她的优秀作品,
例如,让你感觉不到网络存在的在线音乐播放器——KuGoo
当然,商业软件中也不乏她的存在——WPS Office 2005 和 金山毒霸(2002) 的界面。
不过这都是后话。
SkyPE的优秀让我的好奇心想知道,它到底是怎么做的。
于是乎,就找到了闻其名,而很少用的 DeDe 3.50.02
一个文件好办,直接反编译,三四分钟后
结果出来了,我认为,能得到的信息就是每个窗体的类名
还有一些事件的名字,其他的自行添加的方法连名字都得不到。
我这个人不太懂汇编,不过看看它反编译后的注释,
也只知道,某个方法内用到了什么类,至于做什么我就不太明白了。
hoho,转念一想,为什么不反编译我做的程序呢?
说干就干,就是经过三四分钟,结果出来了。
凭着类名,我找到了我程序中的一个比较关键的类,里面有着一些隐蔽的信息。
打开后,心里平静了一下,
因为我的那些方法的名字都显示不出来,呵呵
然后我对每个方法的汇编码进行察看,
依稀找到了关键方法。
早在多年前我就知道有DeDe这个玩意儿了
所以代码里也做了些手脚,
以我那粗浅的汇编水平来,我很难得到一些关键的信息。(仰天长笑中.....)
不过,也不是这么完美,在方法中使用的SQL语句还是部分的暴露了出来。
以后有机会就隐掉它。
最后,我关掉了DeDe,总结出以下几条反DeDe的经验:
一、如果可能的话,关键部分的类名和对象名最好不要那么直白。
二、如果可能的话,代码中事件的生成不要用Delphi的属性编辑器来生成,而要手工生成。
三、如果可能的话,程序中最好不要出现明文的字符串。
四、如果可能的话,不要直接发布Delphi编译好的程序。
五、如果可能的话,不要使用Delphi提供的和那些知名的控件。
六、上面的五条绝对是原创,今后,如果你真的在某个地方看到了,那么你至少可以知道我是在哪儿抄的。呵呵。
最后再来补充一下,如何简单的判断一个程序是不使用Delphi编的。
简单点的,就是在一个程序任务栏按钮里,右键点击,如果弹出菜单只有还原,最小化和关闭那么他60%是用Delphi/C++Builder写的。
复杂点的。
首先,要让你得Windows是动画的,怎么说呢?就是你能看到程序最大化和最小化的动画。
然后,打开一个程序,让它显示在桌面上,然后鼠标点击“显示桌面”。
这时,你应该可以看到桌面了。然后在任务栏里点击刚才的那个程序。
如果,窗口的还原动画,像平常一样,由任务栏飞出,变成原来一般大小,那它97%不是用Delphi写的。(如果是的话,那么它就太不经济了),如果窗口的还原动画是飞向屏幕的正中间的一个点上,然后整个窗口突然出现,嗬嗬,那它99%是用Delphi/C++Builder写的。原因很简单,就是VCL有一个隐藏的TApplication。
OK,就这么多了。