DDR公布迅雷修改版源代码和技术细节[转]

转自:http://www.cnbeta.com/articles/40006.htm

ugmbbc发布于 2007-09-27 16:29:23|7260 次阅读 字体: 打印预览

迅雷

感谢凯迪辣客的投递
新闻来源:DDR
迅雷5.7.2.371 DDR1.5版去广告版源代码说明
Thunder5.7.2.371 DDR Ver1.5 SourceProject ReadMe
我今天公布我写的源代码,目的是起到交流学习的作用,因为在未来的一段时间里面,我将要参加一场很重要的考试,虽然考试的结果对于我来讲并不十分重要,但是我一定要去努力。所以我不会有时间来维护这些东西,与其让它在硬盘里躺着,不如拿出来,这样我就可以心思坦坦的去复习所有的功课了,要不然的话总放不下心。

好了,有关软件的东西,是包括文档与代码,对于我自己,我是有详细的调试记录与大量的文档记载的,不过可惜的都是写在稿纸上,所以我无法上传,但是我可以把所有的代码都上传上来,虽然对于理解起来可以会稍有困难,但是我在下面稍加解释,以便有个全局的概念。
本地下载:
http://bbs.happyhome.name/upload/DDR_371Project_Source.rar
微软网络硬盘下载:
http://cid-778609f9f4685429.skydrive.live.com/self.aspx/Public/DDR_371Project_Source.rar
源代码目录与文件的概括解释:
………这个是主目录
371Project         ………这个是迅雷5.7.2.371版的目录
LinkSimulate         ………这个是模拟链接的ATL框架支持的ActiveX源代码
s_parselink          ………模拟链接解密静态库源代码(即base64解码编码库)
setup371             ………这个是5.7.2.371安装脚本和迅雷安装文件
ThunderSetting       ………这个就是大家熟悉的”DDR迅雷设置中心”的源代码了
tpatch371            ………细心的人一定知道DDR迅雷program目录里面有个tpatch.dll文件, 这个就是那个文件的源代码
iTargetAD_Re            ………这个是我改写的iTarget.dll文件的ASM源代码,为什么用asm写,你打开看就知道了。 
编译环境:
Visual Studio 2005
masm32(这个是win32 ASM编译器,只有iTargeAD_Re目录里面的一个文件编译需要它)
Inno Setup5 (脚本编译程序,setup371目录打包需要它)
  如果你想实践一下,编译运行的话,就需要上面的三个软件。我可以保证都是完全可以通过编译的,如果你对其中某些部分不理解或者某些编译环境不够熟悉,也不用太担心,你可以先看看源代码,在理解的基础上然后用自己熟悉的环境去改写。
  当然我承认其中有些代码写的似乎不是很优雅,但这不是我的真实水平,我只是让代码可以运行起来,而没有想办法让代码变得更加漂亮,因为家里人都不支持写程序,所以我只能在空隙之间穿插着写点东西,虽然这种手法相当糟糕,但也是一时权宜之计,不过我仍然加了许多注释,你们在文件中所看到的注释都是我当时加的,这些注释将是分析代码的路灯,它们没有任何改动和删节(同样你们一定也会发现注释中有不少错别字^_^)。
  欢迎大家研究改写,也可以提出问题和看法,但是我可能不能做解答,因为上网时间要有控制,所以不要对我抱有太大期望。但我还是会在偶尔有时间的时候回来看看的:-)
  然后要讲的就是,前一段时间有很多网友来访问我的空间,我很高兴,我经常告诉我的朋友,我的访问统计是呼呼呼的向上涨,几乎接近tan(x) 从(0到PI/2)那段曲线,不过未来的100多天里,可能不能再继续出我的版本了,因为我又有了新的奋斗目标。现在是07.9.27 8:55,我不知道新版本的迅雷什么时候会出,其实我很想给大家一个全新的380版(暂且这样称呼吧)修改后的源代码,但是我等不及了,这也不能不称得上是件遗憾的事情,但我希望在我回来的时候能看到更多更有趣更酷的版本……
  当然光给源代码是不够的,有些东西我希望你们用OllyDbg或者其他调试软件调试,其实这个难度并不大,充其量只是一个简单的CrackMe而已,但是要有一定的耐心,还要多记录结果综合分析。
  tpach371目录下的文件是屏蔽广告的关键所在,可以用LordPE或类似工具软件插入到迅雷程序里面,因为用的是改写内存的方式,希望可以结合 OllyDbg,观察改写前后内存中代码的变化。否则的话,你直接看这部分代码,可能会觉得云里雾里,因为有些地方要用asm才能解释清楚。再给一点提示,关于如何调试,我建议你在调试器里面下WriteProcessMemory函数断点,这样你将会获得所有改动过的信息,并且我也发现逆向MFC框架搭建的软件是学习MFC的一个有效途径(汗……)。
  ThunderSetting目录下的文件是”DDR迅雷设置中心”,其实是一个改写ini文件的GUI Shell,没什么实质性的内容,不过却方便了设置。LinkSimulate是模拟链接的关键,虽然是关键之笔但是却异常的简洁明了,看我的IDL文件描述,一个COM替换而已,我把得到的所有的参数都扔到迅雷的COM里让它去干活,而我呢则呼呼大睡去了。
  s_parselink是静态库,LinkSimulate和tpatch371都会调用它,里面有两个base64解码和加密函数,和一些专用链接的转换函数,不要被专链吓怕了,我这里有全部的转换方法。
  iTargetAD_Re最为简单,我还加了makefile文件,这样你编译的时候就不会太累了,呵呵….
  然后是setup371目录,有编译脚本的代码,和去除社区互动的OCrack_XLCommunity.dll.bak文件,你可以把它与正版的XLCommunity.dll用文件对照工具对比一下,就一处更改哦,当然光看到一些16位数字串的不同是没有任何意义的,你要到OllyDBG 下面去实践一下到底改成了什么,为什么这么改,这样才会有收获….
  其实我应该把所有项目都放到一个工程项目里面,但是我当时就没有这么做,导致现在目录比较乱,但我已经尽最大的力量把所有的都解释了一遍。
  对于高手来讲看这些东西都十分的轻而易举,也会发现我讲的也十分明白。但是对于部分新手可能会有些困难而又迫不及待的想弄清楚所有的一切,我希望你们可以先了解一些调试工具和开发环境的使用,然后再慢慢深入理解,同时把我上面讲的话语当中的关键字提取出来然后用Baidu或Google去搜集一些对你有用的信息。当然你也不需要去刻意弄懂一切,其实这些东西全然是一些雕虫小技,并不值得去消磨那么多时间,你应该把精力放到更有意义的地方,比如数学、英语啊,计算机组成、体系啊、数据结构、软件工程的学习,虽然短期内不会有突出成效,但这些是真正的屠龙刀,而我以前就是好大喜功,杀鸡取卵,等不及了,先学了一大堆所谓的API和其他各种标榜着”提高生产力”的语言,而对真正理论的东西学的不深不透,现在自食其果,后悔不及,不过亡羊补牢,犹未为晚,同样我也不希望后来者重蹈覆辙。不管怎么讲,到时候功到自然成,其他的都是衍生出来的附加产物。
  好了,我已经把所以的关键点都挑明了,剩下的就靠你自己了,你愿意怎么添啊改啊删啊都可以,最好的方式是消化掉所有的一切,然后Ctrl+Delete,再重新创造自己的。
  最后我想引用新东方老师的一句话做结尾:从绝望中寻找希望,人生终将辉煌……………………
Date: Birthday
by DDrMsdos

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据