分享
 
 
 

怎样为程序打补丁(一)―――基础篇

王朝other·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

注意:不知道为何好多乱麻,修改后也不行,请大家到下面看原文

http://people.os.org.cn/zoudan/doc/patch_2.htm

怎样为程序打补丁(一)―――基础篇

声明:

一.本文实用于初学者,需要具备一定的汇编和系统底层的知识。

二.本文只是为了让广大网友共同提高一些基础知识,本人决无卖弄之意,只供需要这方面知识的读者阅读,如果你是高手,或者不需要这方面知识,请跳过。

三.本文的实例均为普通程序,如有雷同,敬请谅解。

四.本文欢迎传抄转载,如果是商业用途,请联系本人。http://www.zoudan.com zoudan@sina.com

打补丁是常见的一种软件升级和更新手段。打补丁的形式很多,本文所述的方式基本上为修改原程序二进制代码的方式,适用于Windows95之后的平台(Win32)。

Windows95(Win32)以后的可执行文件都是PE格式,.exe、.ocx、.dll.等等都是常见的PE格式的文件映像,看一个文件是否为PE文件,不是看它的扩展名,而是看它的文件头中是否有PE文件头标示和具体的文件内容。比如常见的软件"追捕"中那个wry.dll,就不是一个PE格式的Dll(动态连接库)文件,通常用16进制编辑软件打开文件首部观察便可得知。关于PE文件的具体格式和教程不是本文的描述范围,大家可以查阅相关的资料,我网站上那篇"关于95下的可执行文件加密研究"中也有比较详尽的描述。

PE文件是一个程序代码、数据的集合。其中的程序代码是该执行文件本身的,它可能通过动态连接的形式访问其他附属的程序或者动态连接库,通常一个程序文件中包含了大量的系统调用和对其他程序及动态连接库的调用。

言归正传,无论是破解,程序改良或者程序升级,在改动不大,且没有源程序参考的情况下,最直接的方法就是更改执行文件。大家都知道我制作的补丁程序,基本上就是直接修改程序文件,使之达到我们需要得到的功能。

一个PE可执行文件中通常有很多段(section),分别描述不通的数据结构和代码。最基本的几种段有.code(.text)(代码段)、.data(数据段)、.rdata、.rscs(资源)等等,这些段的名称可以是程序自定,决定它们属性的不是他的名称,而是PE文件头中的描述。有很多查看PE文件结构和内容的软件,我向大家推荐Borland C自带的一个叫Tdump的小软件,很简单和方便,在现在的Borland C++ Builder和Borland C中都有,大家可以用他来了解PE文件的内部信息。

来说,修改资源段中的东西最为简单。那些对话框、字符串、位图等等。修改这些资源很容易,因为有很多这方面的软件,最常见的就是VC++,只要用VC用资源修改方式打开程序文件,所有这个程序相关的资源就会很容易的修改了。大家可以随便找几个程序来试试手,挪挪对话框,改改属性,编辑文字,画画位图,很容易上手和熟悉。

修改程序文件的其他地方就没有修改资源段容易了,程序当然都是汇编机器代码,数据也是未知的结构。关于怎样看懂、跟踪、了解程序的运作就是一件非常经验的事情,不同的程序不同的方法,没有定式,它们唯一的共同点就是都是汇编代码,都能用软件反汇编和动态调试。这也已经超出了本文的范畴,我想它需要扎实的汇编基础,系统底层知识以及丰富的程序调试经验,不可能在很快的时间内掌握。这需要耐心,长时间的实战以及积累。在此我向大家推荐我常用的工具,静态的反汇编可以用IDA pro,使用该软件你会发现枯燥乏味的汇编代码变得井井有条,且多了很多帮助理解的注释,当然还有很多重要程序库的符号,比如MFC库类,标准C库等等。该程序是最好的反汇编工具,为我们读懂苦涩的机器指令提供了良好的互动环境。光静态分析汇编代码无疑是极其困难的,光靠眼睛看不可能看到寄存器,内存单元数据等等和程序运行息息相关的东西。关键是汇编代码苦涩难懂,动态的调试就成了我们深入了解程序、调试程序、探测程序的最重要的手段。我所提到的动态调试是汇编级别的,并非任何高级语言。值得提到的是有些程序带有调试符号信息,那会为我们动态调试提供很大很大的便利,不过一般Release版本都不会把调试信息链接到最终的程序文件中,粗心的程序员有可能犯这个错误。总之,汇编级的调试一般来说都非常的艰苦,不过动态调试和静态阅读相结合还是会使效率提高很多。动态调试的软件很多,而且都支持汇编级别的调试。一般集成变成环境都带有这种工具,比如VC++,C++ Builder等等。专业调试软件有W32dasm、Trw、Soft-ice等等,在这个领域里,Soft-ice无疑是绝对的佼佼者。我觉得几乎没有Soft-ice触及不到的深度,Soft-ice为我们了解系统的任何一个细节提供了可能,从DOS时代到windows时代,Soft-ice无疑是动态调试领域最重要的工具。好话说得够多了,我不是在为它打广告,实事的确如此,网上很容易下载到它的各种版本。Soft-ice虽然很厉害,但是对初学者来说的确不容易掌握,且更需要扎实的底层基础。掌握了它就为掌握了系统的最底层提供了可能,这无疑是个核武器。

关于具体怎么放置补丁程序,用DLL动态连接库方式编制复杂的补丁程序等等细节问题我将在以后的文章中介绍,请各位网友密切留意。

本篇总结:

1. 本系列文章讨论的主要话题和范围。

2. PE文件是Win32平台的可执行文件。

3. 关于修改资源段的问题。

4. 其他一些相关知识的介绍。

5. 几种工具的推荐及其简要介绍。

邹丹 于 2001年7月2日

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有