爱技术

 找回密码
 注册会员

QQ登录

只需一步,快速开始

微信登录

微信扫一扫,快速登录

搜索
查看: 853|回复: 5
收起左侧

使用WinHex制作图片补丁等

[复制链接]
发表于 2006-8-4 20:44:37 | 显示全部楼层 |阅读模式

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

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

x
初到贵论坛不久,小弟在此献丑了~

因为之前一直在玩三*的缘故,因此对WinHex / UltraEdit这类直接处理源代码的软件情有独钟。因为习惯用WinHex,所以本文以其为例,说说如何用WinHex实现替换某些图片。

SPC不是可以直接替换图片吗?为什么还要用到这样的办法?SPC功能固然强大,不过也会有些问题,例如我在做1100GPRS图标透明补丁的时候,试过用SPC直接替换图片,结果替换上去的图片根本就不是透明的,于是用WinHex打开替换过图片的bin一看,明明是从1102里面提取出来的GPRS图标,替换到1100里代码竟然跟在1102里的不一样!于是干脆直接用WinHex替换代码的方法,虽比不上SPC来得直接,但是不会出现要透明时不透明的问题。

所需软件:1. WinHex / UltraEdit (该类软件到处都有下载) 用于查看和提取源代码
          2. Smelter660 (http://mobile.0110.cn/soft/x55/Smelter660.rar) 用于获取图片在bin中的位置
          3. V_Klay (http://mobile.0110.cn/soft/x55/v_klay33.zip) 用于生成补丁,如果你只想记录在记事本里那就不用这个软件了

原理:用Smelter660获得要替换的图片在bin中的位置,然后用WinHex来提取源代码

本文以给24136151制作1102来电图片还原到C11官方初始图片的补丁为例
步骤:
1.        确定要替换的图片,用Smelter660打开,找到要替换的图片的开始位置,也就是Offset对应的那一列,以及要替换的图片的结束位置。结束位置在Smelter中没有列出,不过我们可以通过用开始位置加上大小(Size那一列)减去1(因为开始位置算多了一次所以要减1)来得到图片的结束位置。
例如在替换第92张图片的时候,用Smelter660打开1102的bin,从中我们可以得到该图片的开始地址是208000,于是我们可以算出其结束位置是 208000+3F6 (1014的16进制) -1 =2083F5。记下这个开始位置208000和结束位置2083F5。
同理,我们要用Smelter660打开C11的bin,找到第92号图片的开始位置为21578E,于是可以算出其结束位置为215B83,记下这两个数值。
2.        用WinHex打开1102的bin,选择编辑菜单下面的定义选块那一项,然后在弹出的对话框中分别输入第一步中记录的开始位置和结束位置,按确定就可以选中我们需要的源代码了,当然我们还要把这些代码复制出来,不能直接用Ctrl + C,而要用 Ctrl + Shift +C 或者使用编辑=>复制选块=>复制16进制数值这项。然后到V_Klay中普通补丁下面的窗口中粘贴刚才COPY出来的16进制字符串,到这里,我们已经完成了一半工程。
同理,用WinHex打开C11的bin,重复上述工作:定义选块=>输入记录的开始位置与结束位置=>复制,到V_Klay中粘贴。工作几乎完成了。
3.        到V_Klay的普通补丁窗口里,在文本的最前面加上1102图片的开始位置并加个冒号,本例为:208000:
然后保存补丁就行了。

注意:
1.        第二步中复制的内容不要颠倒顺序了,本例为改1102的图片为C11的图片,则要复制1102的源代码在前面,而C11的源代码在后面;
2.        第二步中两次复制的内容之间一定要有空格,这是V_Klay识别补丁的原理;
3.        注意第三步中输入的开始位置,是你要改的bin中图片的开始位置,本例为1102的。
4.        第三步中开始位置后要有冒号,也是V_Klay补丁原理。

补充:
1.        替换多个连续图片时,只需记下第一张图片的开始地址以及最后一张图片的结束地址即可。本例中92号到97号这6张图片刚好是连在一起的,所以能这样使用。前提必须是在bin中位置连续的图片,位置不连续的不行,如C11中的98和99之间是不相连的,而99到103这5张又是相连的。而在1102中98到103都是相连的。具体可以参考一下图片。
2.        用WinHex还可以用上述原理制作非图片类补丁。例如我做的1100的超级待机第二行显示位置改动补丁。这类补丁前人有制作,可惜是其他版本(1102)的,不适合1100,于是只能移植了。方法不难,只需要用WinHex找到那些源代码在1100中的位置即可。这里只有一个问题,就是这些源代码到底在什么地方?如果跟其他版本在同一个地方就好了,那还要说这些废话干嘛?直接拿来用不就行了?例如C11的补丁很多就能直接在1100使用。查找方法:如果我们直接在1100中查找1102那个补丁修改过的那几个代码,结果可能可能成千上万。所以只查找别人补丁中修改过的那几个代码是不够的,不过既然是实现同一个功能的东西,其代码应该是一样的,于是我们可以加大查找内容的范围。把原来补丁所改代码在bin中旁边的代码也加一小段进去查找,但不要加太长,否则有可能没结果。找到了所在位置之后的事不用我说也该怎样做了吧?

注:
图片1为用Smelter660打开的1102中相关图片的信息
图片2为用Smelter660打开的C11中相关图片的信息
图片3~5为WinHex操作相关
图片6为V_Klay补丁的最简单格式:替换位置+冒号+旧代码+空格+新代码

图片1

图片1

图片2

图片2

图片3

图片3

图片4

图片4

图片5

图片5

图片6

图片6

评分

参与人数 1实力分 +2 金钱数 +20 技术分 +20 收起 理由
axelzq + 2 + 20 + 20 实用教程

查看全部评分

发表于 2006-8-4 21:08:15 | 显示全部楼层
好,很不错!

我来沙发,加精~~
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-8-4 21:59:56 | 显示全部楼层
呵呵,谢谢啦,其实想明白其原理就会觉得这不难了。
我爱西门子,记得当初还没买手机的时候对M55是那个仰慕啊,可惜当时没钱只能买了A55~
到这里,觉得自己好像刚开始又马上要结束的样子。7月25日回来广州,7月27日买的翻新M55,到今天用了10天不到,发现M55的可玩性真是太高了,不枉我对SIEMENS的爱慕啊~
明天要回家了,仅以此文送给各位M55的朋友。回家之后没什么机会上网,不过我会抽空来看看滴,等9月开学再见了诸位~
I love you all!
回复 支持 反对

使用道具 举报

发表于 2006-8-5 07:12:58 | 显示全部楼层
好文章。。。。
支持学习补丁开发。。。。。。。。。
建议楼主继续到SPGC论坛看一些开发教程,加油加油。。。。。
回复 支持 反对

使用道具 举报

发表于 2006-8-11 16:17:33 | 显示全部楼层
收藏下来学习,呵呵……
回复 支持 反对

使用道具 举报

发表于 2006-8-31 19:15:02 | 显示全部楼层
good!!~~
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-20 13:50

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

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