爱技术

 找回密码
 注册会员

QQ登录

只需一步,快速开始

微信登录

微信扫一扫,快速登录

搜索
查看: 7172|回复: 0
收起左侧

Patch常用小工具--我的一点经验

[复制链接]
发表于 2005-8-7 00:00:00 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册会员 微信登录

x
            Patch常用小工具
           --我的一点经验  远帆

题记:
  很早就说过要写一下我的Patch经验,然而,自觉了解甚少,所以迟迟不敢动笔。现在,更由于学习上的原因,后面的几个月不能再做补丁了。然而,常常有朋友发邮件或留言给我询问制做补丁的有关问题,我想,与其一个一个的解答,不如写篇文章,能够让更多的朋友参与。限于时间和水平,我决定将之称为经验,而非教程。
  依据目前我所了解的知识,我准备写这么一些内容:1、Patch常用小工具;2、使用IDA反汇编;3、C166 cpu基本知识;4、C166汇编指令;5、小试身手,简单移植;6、成长,编写简单程序;7、终极大法,程序跟踪。不过,依据以前的经验来看,预期总是赶不上变化,是否能够实现预期,我也不知道:)
  我常想,制做补丁的基本条件是什么?也许,条件可以列出很多:充足的时间,极大的耐心与信心,一点点相关知识和经验,还有好的运气。不过,如果你有强烈的爱好,相信上面的条件都不成问题,否则,建议你去做一些更有意义的事,比如看电视,比如陪陪女友:)
  如果想转贴,请保留完整信息,谢谢!

  OK,废话一大堆,现在言归正传开始正题:

  首先需要推荐的工具是SFE(Siemens Flash Explorer)。
  SFE下载:[upload=rar]viewfile.asp?ID=16523[/upload]

  SFE由RizaPN编写,目前我使用的是2.01版本,它有二进制拷贝,文件比较,反汇编,模糊查找,读文件信息,读语言包,菜单解析,Patching Stuff(我没有用过本功能,所以不清楚其意义),查找空闲空间,汇编,总共10种功能。如果你经常查看本论坛,你可能还下载过fmenu、fbyte之类的工具,实际上这些工具是sfe的早期版本,sfe已经将上面这些工具包含了进来,并且加入了帮助信息,所以没有必要再下载先前的那些小工具了。
  SFE是一个控制台类型的程序,所以需要在DOS Command方式下执行(我不知道这是不是有些朋友说SFE在XP下不能执行的原因,如果是这样,建议这样的朋友恶补计算机知识),然而这并不是说SFE是一个DOS程序,相反,它是一个真正的Windows可执行程序,如果你在MS-Dos下运行它,它是不可执行的。
  运行SFE之前我们先得进入Dos Command,在win9x平台下,方法是运行“command”;在nt平台(包括2000、xp)下是运行“cmd”,虽然在nt平台下也可以用command命令进入Dos Command,但这两种方式是有区别的。这里要说一下,如果你做开发包括这里的Patch,强烈建议使用Nt平台,特别是2000Server,具体原因,后面也会提及。上面这种方法在进入Dos Command之后,我们还得一步一步转到工作目录,比较麻烦。大家可以导入下面的这个“Dos Here”注册表备份,
  “Dos Here”下载:[upload=rar]viewfile.asp?ID=16524[/upload]

  以后就可以使用文件夹右键菜单命令“Dos Here”直接进入相应目录,就方便了很多。
[upload=gif]UploadFile/200441512542354829.gif[/upload]
  这个“Dos Here”注册表备份仅用于NT平台,9x平台的朋友需要做相应修改。

  如果直接运行SFE,SFE会给出下面的提示信息(为方便起见,后面将不再给出截图,而以文本表示):
[upload=gif]UploadFile/20044151523283852.gif[/upload]
  这是很多Dos(控制台)软件的特点,如果不带参数运行或者给出了错误的参数,程序会给出命令行参数提示。还有一些程序需要加上/?或/h参数(如“sfe /?”),才能给出提示信息。

  先来尝试一个比较简单的命令“sfe m”,sfe将给出提示:“Usage : sfe menu ”也就是其后还应该接一个文件名,这里指的就是你备份的S57的FullFlash,它有12M(如果你的是M55,将为14M)。
  好,运行“sfe m s57.bin”,结果屏幕快速滚动,显示了大量的信息,在Nt(以后的Nt专指2000及XP系统,不包括nt4,因为我很少用nt4,不够熟悉)下,虽然有滚动条(9x系统没有),但是也只能看到部分信息(你可以将缓冲区设大,但那不是推荐的方法)。这种情况下,我们需要使用管道符“>”,例如“sfe m s57.bin>menu.txt”,那么系统将生成menu.txt文件,其中就是原先屏幕上将显示的内容。

  如果你用的是M55,你会发现sfe给出的菜单不正确,这可能是因为M55比较新,sfe不能正确处理。你可以使用Smelter工具来取得菜单,在取菜单这一功能上,sfe与smelter基本类似。
  Smelter下载(zxczxc提供的地址):[upload=rar]viewfile.asp?ID=16526[/upload]


  在论坛中泡久了,相信大家对IDA这一反汇编工具耳熟能详,然而尺有所短,寸有所长, IDA那庞大的身躯并不适合对小文件,例如将其它人写的补丁反汇编为代码。而sfe就比较适合做此工作,sfe的D命令可以对文件进行反汇编。然而,sfe只能处理二进制文件,而我们的补丁是字符串,所以我们不得不进行一番转换。

  我们可以使用UltraEdit来完成这项工作。UltraEdit是我推荐的第二个工具,它的功能比较齐全,特别是其通用二进制编辑功能非常强大。由于UltraEdit比较大,这里就不提供下载了。
  先用UltraEdit新建一个Bin文件,随便输入几个字符,然后按Ctrl+(以后以^代替)H(你也可以在编辑菜单中找到该命令),切换到Hex编辑功能,然后像下面这张图这样进行输入。
[upload=gif]UploadFile/200441611454278296.gif[/upload]

  在输入的过程中,你应该还需要进行“Hex插入/删除”

  在进行了几次这样的操作之后,我厌烦了这种既无聊又容易出错的工作。我编写一个转换程序Translate来完成这项工作,只需将代码写在“code.txt”文件中,并放置于程序所在目录,程序可以将它转换为“code.bin”。
  Translate下载:[upload=rar]viewfile.asp?ID=17082[/upload](本贴后面有其它朋友写的转换工具,大家可以跟据自已的喜好使用)
  由于Translate只是一个自用的小程序,并未做很多的异常处理,所以希望大家不要考验Translate对各种异常情况的处理能力:)

  虽然方便了不少,可我们仍然需要一行一行将新代码拷贝出来,这可不是一个让人心动的工作。我们可以让EditPlus来帮忙,EditPlus是第三个被推荐的程序。同样的,由于比较大,这里不提供下载。EditPlus是一个非常强大的文本编辑器,如果不是它没有二进制编辑功能,我们差不多可以把UltraEdit丢到垃圾堆里去了,在这里,我们主要是要用到它矩形选定功能,你只要先按住Alt键,然后再用鼠标拖动,就可以得到一个矩形区域,其后自然就是复制粘贴了。就像下面这张图显示的那样:(本贴后面有其它朋友介绍UltraEdit也是可以进行矩形选择的,具体方法请看相应回贴)
[upload=gif]UploadFile/200441611454969331.gif[/upload]










[此贴子已经被作者于2004-4-19 9:20:44编辑过]

webGIar5.rar

39.26 KB, 下载次数: 95

Patch常用小工具--我的一点经验

DmNXPq7D.rar

271 Bytes, 下载次数: 68

Patch常用小工具--我的一点经验

您需要登录后才可以回帖 登录 | 注册会员 微信登录

本版积分规则

小黑屋|Archiver|手机版|爱技术 ( 沪ICP备08115260号-3 )

GMT+8, 2025-6-7 22:30

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表