关闭

反编译自己的程序

标签: delphi汇编聊天任务网络office
1532人阅读 评论(0) 收藏 举报
分类:

先说说来由。

反编译自己的程序是应为一个叫做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,就这么多了。

0
0

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