爱技术

 找回密码
 注册会员

QQ登录

只需一步,快速开始

微信登录

微信扫一扫,快速登录

搜索
查看: 19831|回复: 8
收起左侧

图片补丁越界探讨

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

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

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

x
标题: 图片补丁越界探讨 [打印本页]

--------------------------------------------------------------------------------
作者: norains     时间: 2005-6-2 23:06    标题: 图片补丁越界探讨

在论坛上看到不少帖子,说做的图片补丁应用到手机上后,手机开始变得不稳定。仔细研究,发现那些出问题的图片补丁都存在越址的错误。
我们先来看看采用SPC3做的替换手机第56号图片的两个补丁:

补丁一
; ##### Picture 56 #####
00D001E4: 242588000490D1A0 24258800E8B4E3A0

00E3B4E8: 50288930509100000000000000000000 2800E0FEFBDE13A502919402D19C02D2
00E3B4F8: 1400100000080004082007FFF0044100 9CFE14A5DBDE1800E0FA159D00000421
00E3B508: 44410024410014410005F7E00441000C EE7BA9312500020100FA24006B4AD6BD
00E3B518: 618014D38024D3404555400645200849 8E73A73936A51500E0F0BBD60000D6BD
00E3B528: 20084910105100204100404100000000 D49C030088088B290C3AEC3109190500
00E3B538: 00000000000014001000000800040840 000079CEBEF74F635DE71400E0F9C710
00E3B548: 07FFE044000024800014822004FBF004 AE7358CE7CC63DE72842BBD60238C6F9
00E3B558: A2200D2220142A2025FE204422200422 39C65EE7A63151635CE7494249211300
00E3B568: 20045220084A20088BE0110A20220220 E0EE7DEF250075AD1CDFDFF72821E839
00E3B578: 40000000000000000000000014001000 4C6B6952EB622B63CB5A8D4AFDD656AD
00E3B588: 00080004084007FFE004000044FF8024 FFFF30631CE71200E0F815A5892979CE
00E3B598: 888014888004FF800488800C888014FF 5EE72400A60829190819022C42F8AB29
00E3B5A8: 8024002047FFF0042100082100082100 CB2928192821169DFEFF16A5D4941200
00E3B5B8: 10410020810043010000000000000000 E0EED494EA39DADEB58C24004921EA31
00E3B5C8: 00001400100000080004084007FFE004 2C42EB392C428D4A0B3ACA31A6107163
00E3B5D8: 100044A04024FFE014884004884004FF 5CE777AD948C1200E0EE538C2B42BAD6
00E3B5E8: C00C904014904024FFC0442400044420 6D4AC71008196C4A4F63D073706BB494
00E3B5F8: 0BFFF008040010040020040040040000 6C424921E7180C3A39C6F8BD53841200
00E3B608: 00000000000000001400100000080004 E0EE117C8C4A9ACE2819A510E618A510
00E3B618: 082007FFF004000044802024FFF01484 85086408A5106508072168294721C610
00E3B628: 2004842004BFA00C8420149F20249120 97AD39C633841200E0EED173ED5AB8B5
00E3B638: 449120049F2008912008802010FFE020 840841088208A310E41804216529A731
00E3B648: 80204080200000000000000000001400 E7390842694A2621948C59C6F27B1200
00E3B658: 100004082007FFF00400804407C024FC E0ECB0732E63B4948408420863088310
00E3B668: 0014040005FFF00415000464C00D8430 A410E418052146218729A731E839E518
00E3B678: 14080024102045FFF004408008C10008 B1739AD6D173FFFFE7391000E0FBD173
00E3B688: 3E001011002060C04380200000000000 6E6B748C23004208026208F28310A310
00E3B698: 00000000140010000008000808200FFF E418052146216629A731E5180F5B9AD6
00E3B6A8: F04880002840802840802FF880090140 B173FFFF0000E7390F00E0FA906B8F6B
00E3B6B8: 09022009F22019141029199049104009 127C230021004208026208F28310A310
00E3B6C8: 102011100012130022108024A0404840 C418052146218629C5108D4A9AD6916B
00E3B6D8: 20000000000000000000140020000010 FFFFE7390000E7390E00E0FB4F638F6B
00E3B6E8: 000810200FFFF04810002808402BFFE0 F27B23002100024208F1620863088310
00E3B6F8: 08410008410008410018A2802914404A A310C41805192521A4106D4A9AD65063
00E3B708: 082008080017FFF01008001008002008 00E0FFFF8210E7390E00E0FA6F636F6B
00E3B718: 00200800400800000000000000000000 B173230021004200024208F162086308
00E3B728: 1400100000080004042007FFF0040000 8310A310C418E41864086D4A59CEB173
00E3B738: 44004025FFE01412000412000512200D 00E0FFFF65290000E7390D00E0F9706B
00E3B748: F3F015002025002045002009F3E00912 4E6B50636408210022004200034208F3
00E3B758: 2010120010122027FFF0400000000000 620883088310C31043088D4A18C6D273
00E3B768: 00000000000014001000000800080820 00E0FFFF28420000E7390D00E0FBB073
00E3B778: 0FFFF008000048004029FFE018100008 2E632F63A5102100024200044208F462
00E3B788: 282008CC401B168028A30048430008A6 08830883102300EF5A18BEB16B00E0FF
00E3B798: 80132A4010122010221020C200231400 FFE7390000E7390D00E0FCD17BED5A70
00E3B7A8: 40080000000000000000000014000800 6BC510052100F2410021004108420862
00E3B7B8: 00040004042007FFF044204024108014 082200906BB7B5F27300E0FFFFE73900
00E3B7C8: 892014FFF00484200C842014FFE02484 00E7390D00E0F33284AC523284030000
00E3B7D8: 2044842004FFE008840008042011FFF0 00420863084200010002004208630842
00E3B7E8: 10040020040040040000000000000000 08020000F8127C76AD127C00E0FFFFE7
00E3B7F8: 00001400100000080004042007FFF004 390000E7390D00E0FA938C4B42B39491
00E3B808: 0800441400242200144180048040077F 6BCC5A6400020300FE89298508022400
00E3B818: B00C000015F04025126045124009F240 F58508ED5AD494F59C15A5338400E0FF
00E3B828: 09124011F24011104021514041208000 FFE7390000E7390D00E0E9F49CCA31F3
00E3B838: 00000000000000001400100000080004 A4147C37A5AA31E718958CB073D0730B
00E3B848: 082007FFF0444000246FC01440401480 3AC7186A21EF529FEF38C6D494748C00
00E3B858: 4004BFF00D8800168840248FE0449200 E0FFFF24210000E7390D00E0EA35A589
00E3B868: 08A22008FFF008820010850010888020 29F39C2C428E4A0821482115A596B53C
00E3B878: 904040A0300000000000000000001400 E7D49445000C2AAE4AF273FBDE948CB4
00E3B888: 100000080004082007FFF00400004480 9400E0FFFF200045290E00E0EA97B589
00E3B898: 4024FFE014804014874004B8400C8840 29718CD07308196C3208214F63D29C99
00E3B8A8: 14BF4024A94044A940093F40092A5009 D6EE5A2C4A2C62EB3156A517C6748CF5
00E3B8B8: 0950120F5024F9304840100000000000 9400E0FFFF0000E7390E00E0F7F8BD28
00E3B8C8: 00000000140010000008000808200FFF 19B294F7BD0B3A4500A610B1732F6302
00E3B8D8: F00840004840202849301BFDA0084120 706BF64C4289398D4ABAD6FBDE748415
00E3B8E8: 0BF9201A49201A49202A49204BF92008 A5FFFFE73945290F00E0F659CE0819AE
00E3B8F8: E1201151201248202C48202040A04040 7B96AD18BED07B482168212C3A506302
00E3B908: 40000000000000000000140010000008 0B3AF752841BE7BAD67DEF347C76ADFF
00E3B918: 0004082007FFF004000044FF80248080 FF0000E7390F00E0ECFBDEA8080C6375
00E3B928: 14FF8004808004FF800C002017FFF024 AD18C6DAD6C7108608E718A61086086A
00E3B938: 400044FFC00912400E224010C4401318 2135A599D6DBD69DEFB26BD8B5FFFFE7
00E3B948: 40206280400100000000000000000000 391000E0FA7DEF04008F6B55ADF49CB6
00E3B958: 1400100000080004082007FFF0040800 B502A710F628216929C7106A213184F7
00E3B968: 44284025CBE015084005084005EBC00D BD1CE7DADEF47339C61200E0EEFFFF04
00E3B978: 084015084025084045FFC00908400814 00CD5A318418C69AD686084D42AE520F
00E3B988: 001022001041002180C0460030000000 5B6D42EF5A34A59DEFDBDED7BDB68C9A
00E3B998: 00000000000014001000000800040820 D61200E0EEE31802002B42F39CD3945C
00E3B9A8: 07FFF0041000443F8024410014824005 EFA610C7100B428929E818EF52F7BD18
00E3B9B8: FFE00692400CA14014C0C02488404408 C69AD6B7B57584FBDE1200E0EE042104
00E3B9C8: 000BFFF00814001022001041002180C0 00AA3175AD34A5D6BD2B42EB398E4A30
00E3B9D8: 46003000000000000000000014001000 636D4AAD5217C638C63CE797AD347C9D
00E3B9E8: 00080004082007FFF004000044802024 F71200E0F46529C6106A290C63B6B559
00E3B9F8: FBF0148820048820048BE00CF8201480 CE2F6325008D4A4921E9105384021CE7
00E3BA08: 002483E044F82004822008814008F880 FD18C6D9B572631300E0EFA631A93166
00E3BA18: 10814020822040841000000000000000 084E6B9294B6B552842500292149214B
00E3BA28: 00001400100000080004042007FFF004 2196ADB7B57ACEFBDE99AD926B1300E0
00E3BA38: 080044084025FFE0148880044900042A EFA631AD5204008C4A55ADD39C59CE09
00E3BA48: 000FFFF014140024230044C8C00B0830 19916BF27B506375AD59CEBAD6F49C3F
00E3BA58: 08090010FF8010080020084043FFE000 DF54841300E0EFA6310E630500CB3171
00E3BA68: 00000000000000001400100000080008 9455AD1BE766086C424600EE5ABAD675
00E3BA78: 04200FFFF0080800488880284900182A ADBDF7B58CFFF7B58C1400E0F0FFFF00
00E3BA88: 400BFFE0082A001849002988C04E1830 0004006A211184F6BDFEFFAD523063B9
00E3BA98: 0820000BFFE0084100103200100E0020 DE7CF77DEF916B1895978439C61500E0
00E3BAA8: 318043C0600000000000000000001400 FFFFFF030000F60300E818EE5AEE52EB
00E3BAB8: 100000080004082007FFF0040000 31660002006700020035A51400E0



补丁二
; ##### Picture 56 #####
00D001E4: 242588000490D1A0 242588000490D1A0

00D19004: 2800E002D3940276AD0396ADFF76AD02 4B4C4AFE00002C3B024C4AFF2CFA0200
00D19014: D3941900E0FE28427BBE08DFF7FE9FE7 00FF2CFA1B4C4AFF0000024C4AFE0000
00D19024: AF6B1700E0F2A6318A4ABFEFDFF79FEF 2CFB034C4AF92C3B2CFA00004C4AECF9
00D19034: 96ADEF7B4D6B708CD7BD7FE77FDF1ED7 4C4AECF9144C4AFF2C3B034C4AFFECF9
00D19044: AF6B1500E0FAA631000077A5DFF73DE7 054C4AFFECF9024C4AFDECF94C4A2C3B
00D19054: 2842056529FBA6317BBE7FDF4942A631 134C4AFAECF92CFA4C4AECF9FFFF2C3B
00D19064: 1300E0EFA631200041087FE7DFF7CB5A 074C4AFBECF94C4AFFFF4C4AECF9154C
00D19074: 6529E739A6316529863145290000C952 4AFDECF92CFA2CFB022C3B044C4A022C
00D19084: 7FDFF07320001300E0FAA63100006621 3BFE4C4AFFFF184C4AFE2CFA2C3B074C
00D19094: 9FE77ACE652902D7BD02708CF952AD90 4AFD2CFB4C4AECF9184C4A022C3B064C
00D190A4: D6A3390000DDCE369D00001300E0EFE3 4A022C3B194C4A032C3BFF2CFB022CFA
00D190B4: 1800006A4A9FE79294EF7BFFFFFEFFFD FE2CFB2CFA042C3B184C4AFF2CFA0300
00D190C4: FFFAFFF2FFADFF27E70000F194B8A500 00032C3B044C4AFF2C3B184C4AFF2CFB
00D190D4: 001300E0EF821000004E63BFEFCB5AD9 040000042C3B024C4AFF2C3B034C4AFF
00D190E4: D6FDFFFCFFFAFFF5FF8AFFE4FFC2FF60 FFFF144C4A060000042C3BFE4C4A2C3B
00D190F4: 52CA7B7BBE00001300E0F96108000032 034C4AFEFFFF0000134C4A070000052C
00D19104: 7C9FEFE739FCFFFAFF02F9FFFEF0FFE4 3B034C4AFDFFFF4C4A0000124C4A0800
00D19114: FF02E0FFFC6094E75ADDCE00001300E0 00032C3BFF2CFB044C4AFEFFFF000012
00D19124: F620000000D48C1CDF4B6BF9FFD7DE76 4C4A090000022C3BFF0000044C4AFDFF
00D19134: EF75EFEBDE0240CE0260B5FDA6521ECF FF2C3B0000114C4A0C0000044C4AFDFF
00D19144: 00001300E0020000F877A599CE0C8476 FF4C4A0000114C4AFF2C3B0B0000044C
00D19154: EFB6F7F5FFF4FFE7FF02A0FFF86094A0 4AFDFFFF4C4A0000114C4AFF2C3B0B00
00D19164: CD85523FCF000000E0FFFFE7391000E0 00044C4AFDFFFF4C4A0000114C4A0C00
00D19174: 020000FB19B657C6AC9475EFB4F702F4 00044C4AFDFFFF4C4A0000134C4AFF2C
00D19184: FFF4E4FFA0FF80FF217B00D6454AFFC6 FA020000FD2C3B2CFA0000022CFA064C
00D19194: 410800E0FFFF0000E7390F00E0020000 4AFDFFFF4C4A0000144C4AFF2C3B044C
00D191A4: EC19B657C6AC9454EFB4F7F4FFF3FFC2 4A022C3BFE4C4AFFFF044C4AFDFFFF2C
00D191B4: FF80FF60FFC06A00D60442DFBE820800 3B0000134C4A022C3B024C4AFDECF94C
00D191C4: E0FFFFE7390000E7390E00E0020000F1 4A2CFA034C4AFFECF9034C4AFDFFFF00
00D191D4: B8A597CEAB9C54EF94F7D4FFF0FF62FF 002C3B0F4C4AFF2C3B024C4AFD2C3B4C
00D191E4: 60FF20FF6052A0CD04429FB662080200 4A2C3B0C4C4AFEFFFF0000104C4AFF2C
00D191F4: E0FDFFFF8210E7390E00E0020000F136 3B034C4AFE2CFA2CFB0B4C4AFDFFFF4C
00D19204: 9DD9D6AB9C54EF94F7D4FFADFF41FF20 4A2C3B104C4AFF2C3B044C4A022C3B05
00D19214: FF00FFA03920C5454A5FA620000200E0 4C4AFDECF94C4AECF9024C4AFEFFFF00
00D19224: FCFFFF65290000E7390D00E0020000F1 00114C4AFF2CFB044C4AFE2C3B2CFB02
00D19234: D48CD9D6CA7B34EF74F7B4FFADFF20FF 2C3BFE2CFB2C3B034C4AFFECF9024C4A
00D19244: 00FFE0FE2029A0B4A6521F9600000200 FFFFFF114C4AFEECF92CFA044C4A022C
00D19254: E0FCFFFF28420000E7390D00E0020000 FB042C3B024C4AFFECF9154C4AFEFFFF
00D19264: FC327C3DE7E86274F70294DEFFAB9C03 0000044C4AFF2CFB064C4AFFECF9164C
00D19274: 6031FB217B00ACC9527D7D00000200E0 4AFE2C3B0000034C4AFDECF92CFB2C3B
00D19284: FCFFFFE7390000E7390D00E0020000FC 024C4AFF2C3B064C4AFFECF9124C4AFE
00D19294: F0739FEFE639B4FF0293FFFE8AFFA0FE 2C3B2CFA0C4C4AFFECF9024C4AFFECF9
00D192A4: 0280FEFB60FE809B2D5BDB6C00000200 124C4A032C3B044C4AFE2CFA4C4A022C
00D192B4: E0FCFFFFE7390000E7390D00E0020000 3BFF4C4A02ECF9184C4AFF2CFA044C4A
00D192C4: F1AF6B9FE7A752D1E693FF72FFC6FE80 FF2CFA032C3B034C4AFFECF9174C4AFF
00D192D4: FE60FE40FE20FEC06AF35B3954000002 2CFA044C4AFF2C3B074C4AFFECF9164C
00D192E4: 00E0FCFFFFE7390000E7390D00E00200 4AFF2CFA034C4AFCECF92CFA4C4A2CFA
00D192F4: 00F82D5B7FE70C846DBD72FF51FFC6FE 034C4AFDECF94C4AFFFF154C4AFCFFFF
00D19304: 40FE0220FEFB00FE2031BC5C96430000 00002CFA2C3B024C4AFFECF9034C4A02
00D19314: 0200E0FCFFFFE7390000E7390D00E002 ECF9194C4AFFFFFF040000FF2C3B034C
00D19324: 0000F8AC427FDF52ADC76251FF31FF63 4AFC2CFA00002CFA0000154C4A0F0F0F
00D19334: FE20FE0200FEFB00AC0221FF5CF33220 0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F
00D19344: 000200E0FCFFFF24210000E7390D00E0 0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F
00D19354: 020000F14B3A3FCF1ED7A439ECDD10FF 0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F
00D19364: 63FE00FEE0FD00DD60103243BF4C9122 0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F
00D19374: 20000200E0FDFFFF200045290E00E002 0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F
00D19384: 0000F16621DFBE3FCF54A54429499CE2 0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F
00D19394: FDE0FD40BC8018C7299F4C7F3CAD1182 0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F
00D193A4: 100200E0FDFFFF0000E7390E00E00200 0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F
00D193B4: 00ED41005FA6FFC6DFBEF194838BC1FD 0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F
00D193C4: A0FDA0D480187F447F3C3F346A11C318 0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F
00D193D4: 00E0FFFFE73945290F00E0FF20000200 0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F
00D193E4: 00EE7C85BFBE9FB6D39403A4C1FDA0FD 0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F
00D193F4: 60F5E0283F341F2CFF238400042100E0 0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F
00D19404: FFFF0000E7390F00E0FF6108020000EF 0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F
00D19414: 17547FAE5FA6598D217BA1FDA0FDA0D4 0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F
00D19424: A3391F2CFF239E1B0000652900E0FFFF 0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F
00D19434: E7391000E0FF8210020000FFB032021F 0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F
00D19444: 96F5BF850442A1FDA0FD809B2742DF1B 0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F
00D19454: 9F13B70A0000A6311300E0FFA2100200 0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F
00D19464: 00FB6A119F7DBF859F7DA43902A0FDF9 0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F
00D19474: C06AAC429F137F0BD1010000A6311300 0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F
00D19484: E0FFE318020000F262083F657F753F65 0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F
00D19494: E639A0D4A0FDA049F42A7F0B5F03A600 0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F
00D194A4: 0000A6311300E0FF0421030000F3B93B 0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F
00D194B4: 3F65FF5C4B3A809B20ED80183D0B3F03 0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F
00D194C4: 1E0321000000A6311300E0FF65290300 0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F
00D194D4: 00FFAD11029F4CFCD322000040088110 0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F
00D194E4: 023F03FFD101020000FFA6311300E0FF 0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F
00D194F4: A631040000F5AD117C1B7F134B3AE639 0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F
00D19504: D812FD02D1012100000082101400E0FF 0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F
00D19514: A63107000002A600FF2100040000FFA6 0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F
00D19524: 311400E0FEA63120000C0000FFA63116 0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F
00D19534: 00E0FEA63120000A0000FF04211800E0 0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F
00D19544: 02A631024529FF042103A210FDE31865 0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F
00D19554: 29A6311700E0 0F0F0F0F0F0F

为方便一些初学者,先说明一下补丁代表的含义:
冒号左边的8位是图片的地址,接下冒号右边31位是原来图片的二进制代码,再之后的31位便是新图片的二进制代码。如果将补丁刷进手机里,后面的31位代码将替换前面31位的代码。

补丁一是我第一次用SPC3做图片更换时生成的。当时打开生成的补丁一看,就觉得疑惑了,奇怪,难道我的图片就那么符合原来的大小么,新图片代码怎么没有出现OFOF(代表数据为空)的二进制呢?莫非图片地址越界?可SPC3也没提示啊!再说,旧的图片代码都没有连续的FFFFFFFFFFF等等,所以理论上来说新图片也没占空闲地址啊?
自己不放心,又拿了一个很小的图片来代替第56号图片,结果生成补丁二。
将两个补丁仔细研究,奇怪了,为什么前面的地址不同呢?按理说,新图片应该是覆盖旧图片的数据,所以正常情况应该是两个补丁的替换地址都是一样的才对。也就是说,这两个补丁肯定有一个是错误的,那究竟是哪个呢?
再仔细研究,发现地址相同的就只有第一行代码,它们的地址都是00D001E4:
补丁一:00D001E4: 242588000490D1A0 24258800E8B4E3A0
补丁二:00D001E4: 242588000490D1A0 242588000490D1A0
可以肯定,判断哪个补丁是错误的关键就在于此。
然后我们再来看看补丁一的第二行,也就是图片的开始:
00E3B4E8: 50288930509100000000000000000000
仔细一点的读者可能已经发现,图片开始的地址00 E3 B4 E8恰好是第一句最后八位的倒转:E8 B4 E3 A0。(顺便说一下,为什么00会变成A0:x65有32M内存,使用8位地址,基址为A0000000,反汇编都是基于这个基址的,而在V_Klay格式的补丁中,必须去掉最高位的A,剩下的7位数据可以去掉或者保留最前面的0。摘自Herrliu 的《玩转补丁移植》)。对比其它的图片补丁第一句,我们可以确定二进制代码的意义(以24258800E8B4E3A0为例):24 25指图片大小,用的是十六进制表示,在这里可以看出,补丁中的图片大小为36(24H)×37(25H);8800是跳转指令,没错的话应该类似于汇编的JMP;最后的,自然是要跳转到的图片的首地址。
回头再看看两个补丁的各自第一句,现在我们就可以确定,补丁一是错误的!理由很简单,如果新图片是正确地覆盖了旧图片,那么新图片的起始地址与旧图片的起始地址是相同的。换句话说,第一语句的新二进制代码和旧的二进制代码的最后8位是一样的(如补丁二)。所以我自认为,判断一个图片补丁是否越界,是否能保持稳定性,最重要是看第一语句的最后8位。如果不放心,还可以看新的二进制代码最后是否有一大段或一小段的0F0F0F0F0F0F0F0F0F。一般来说,只要第一语句新旧二进制代码最后8位相同,后面几乎都会带有0F0F0F0F0F字段(可多可少,可能两个,可能上百个,呵呵~)。当然,如果你第一语句新旧二进制代码相同其后却不出现0F0F0F0F0F字段,那你立刻要做的事是:马上联系我——帮我买彩票吧!^_^因为理论上,相同但不出现0F0F0F0F0F的概率永远要比彩票得特等奖得概率要低得多!
最后我们再聊聊补丁一究竟将图片刷到什么地方去。我们可以确定的是,补丁一的图片肯定没刷到空闲地址去,因为在旧补丁的二进制代码中我们根本没看到连续的0F0F0F0F或FFFFFFF代码段,所以新图片肯定是刷到存在数据的某段地址去了。如果这是用户的自己文件,那还无所谓,最多也就是图片打不开或声音出错;但如果是刷到系统地址,呵呵,其中的恐怖性就不用我多说了吧?所以目前论坛上有人做的图片补丁会造成系统的不稳定多半是这原因。而这错误,用V-KLAY刷补丁也是检测不出来的,因为地址和旧图片的数据都符合,报什么错啊?(这就是V-KLAY检查的原理,只要地址和原数据符合,就可以刷)只是谁又想到,其实图片已经被刷到不知哪个危险角落去了。
--------------------------------------------------------------------------------
作者: lijingwei     时间: 2005-6-2 23:15

不错...支持你一下....
看你说了那么多,我帮你总结总结....
首先纠正一个错误------上面的8800是表示图片的色深(如16bit是8800,8bit是8500)
简单的查看补丁是不是有问题.
1.看补丁旧数据地址是否为FFFFFFFFFFFF
2.若为FFFFFFFFFFFFF的话该补丁占用新的空白地址,则看第一行新数据最后8位和新空白地址是否能对上.不能的话该补丁有问题.
3.若不是FFFFFFFF,查看第一行旧数据的最后8个字节和新数据的最后8个字节.看能不能对应上图片数据地址..不能的话改补丁有问题.

还有一点.有的内存在备份下来的时候是空白的,但是在开机的时候会当作内存一样的使用.若补丁占用到这样的地址时,对手机的稳定性也有很大影响...

所以在制作图片补丁的时候最好是通过改变图片大小和色深,尽量使补丁不要占用空白地址.

--------------------------------------------------------------------------------
作者: Bennie     时间: 2005-6-2 23:17

你(楼主)这里面就说对了一个事!SPC3把图片放到不正确的地址上去了!
其它的都猜错了!

发帖不够快,导致意思变了!

--------------------------------------------------------------------------------
作者: lijingwei     时间: 2005-6-2 23:29

bennie来稍微详细的讲讲吧.
--------------------------------------------------------------------------------
作者: Bennie     时间: 2005-6-2 23:40

SPC从V3开始,不再使用V2时的配置文件,而是采取了自己进行搜索定址的办法。这样他做了些什么就不得而知了!我觉得起码他不应该在非FF的地方放置补丁,这应该是BUG。
不过你可以手工把它移到别的地方上去。
图片的结构我在教程里面说过,前面的8个字节是一个索引,格式是
byte width;
byte height;
word flag;
dword BytesAddress;
所以,你只需像补丁一样,把它移到确定的空闲地址上就可以了。好像有一个叫VKP什么的工具可以来干这个,或者是写个小工具来修正地址,又或者用ultraedit的列块模式替换也可以。改变了地址后只要修改BytesAddress到新地址就可以了!
--------------------------------------------------------------------------------
作者: robin     时间: 2005-6-2 23:49

。。。。。。。。。。。倒。。。。。。。。。。。。。。。。
不过终于有人把这件事拿出来讲讲了,那时候发现profile logo的补丁出了问题,可是因为不太了解SPC和图片补丁的原因,不知道怎么写。。。终于bennie出手了。。。我觉得lijingwei说的都没错。。。
--------------------------------------------------------------------------------
作者: regspy     时间: 2005-6-3 05:11

SPC确实有BUG。占用非空地址。
做补丁补丁注意在空白FUBU做,不要在做过图片补丁的FUBU基石上再做。。。(人个认为)
不要占用空白地址。
看索引和地址正确与否

24 25 8800 E8B4E3A0


E8B4E3A0     E8 B4 E3 A0         A0   E3  B4 E8       0E3B4E8
--------------------------------------------------------------------------------
作者: regspy     时间: 2005-6-3 06:09

困,睡之。
--------------------------------------------------------------------------------
作者: youshuming     时间: 2005-6-3 06:46

顶!                     
--------------------------------------------------------------------------------
作者: youshuming     时间: 2005-6-3 07:05

希望SPC出新版本,修正BUG。         
--------------------------------------------------------------------------------
作者: cnxykk     时间: 2005-6-3 07:12

顶一下,不过,暂时没有时间细细看着品味了!
--------------------------------------------------------------------------------
作者: wjb119ok     时间: 2005-6-3 07:46

老大们都是夜猫子啊夜猫子~~
--------------------------------------------------------------------------------
作者: kylin1124     时间: 2005-6-3 09:01

SPC什么时候再出新版本阿。。。。等能够完美的支持v50后我再升v50
--------------------------------------------------------------------------------
作者: robin     时间: 2005-6-3 09:10

虽然SPC还没有新版本,但是注意上面lijingwei和Bennie说的东西,做出的补丁多留意一下,就不会出太多的问题啊,最少,现在spy做的50的图片汇总里的补丁都是没有问题的
--------------------------------------------------------------------------------
作者: wbz001     时间: 2005-6-3 10:49

进来冒充高手..........
--------------------------------------------------------------------------------
作者: norains     时间: 2005-6-3 23:14

实在不知为什么,这篇帖子会这么招人厌,只是探讨一下补丁制作方法,就被套上****或冒充的帽子,无语,欲哭无泪






------------------------------------------
UCWEB手机浏览器,无线上网,无限可能
--------------------------------------------------------------------------------
作者: Bennie     时间: 2005-6-3 23:21




  QUOTE:
Originally posted by norains at 2005-6-3 23:14
实在不知为什么,这篇帖子会这么招人厌,只是探讨一下补丁制作方法,就被套上****或冒充的帽子,无语,欲哭无泪


不知你缘何得出这样的结论,希望不是因为我说的你猜错了那些!我那句只是说一个事实,并没有别的意思。
如果不是的话,我实在是不能从别人的回帖中看出这些意思,好像大家都是在讨论问题而已!
--------------------------------------------------------------------------------
作者: lijingwei     时间: 2005-6-3 23:31




  QUOTE:
Originally posted by wbz001 at 2005-6-3 10:49
进来冒充高手..........  


没有人那么说..愿意动脑是好事情啊。....

楼主:
也没有说你什么啊.讨论问题就是这个样子,对了就是对了,错就是错...反正增加了自己的认识才是真.....
--------------------------------------------------------------------------------
作者: lisugar     时间: 2005-6-3 23:44

恩,又学习了:)很不错的讨论
--------------------------------------------------------------------------------
作者: Ocean     时间: 2005-6-4 00:24

Bennie说的软件就是VkpResolver吧?
以前遇到过这个问题,用这个软件把图片存放位置移到指定的空地址里能解决。
就是在图中的新的开始地址里填上合适的空白地址

图片附件: VkpResolver.GIF (2005-6-4 00:24, 18.36 K) / 该附件被下载次数 1
http://mobile.0110.cn/attachment.php?aid=75417


--------------------------------------------------------------------------------
作者: norains     时间: 2005-6-4 00:34

------------------------------------------
时尚生活,轻松上网,尽在UCWEB手机浏览器
--------------------------------------------------------------------------------
作者: gyflonely     时间: 2005-6-4 13:15

长见识了,需要学习的真的很多
--------------------------------------------------------------------------------
作者: AeolusK     时间: 2005-6-4 13:28

已经收藏...向各位高手学习
--------------------------------------------------------------------------------
作者: norains     时间: 2005-6-7 16:23




  QUOTE:
原帖由 Bennie 于 2005-6-3 23:21 发表

不知你缘何得出这样的结论,希望不是因为我说的你猜错了那些!我那句只是说一个事实,并没有别的意思。
如果不是的话,我实在是不能从别人的回帖中看出这些意思,好像大家都是在讨论问题而已!  


我的错。。。
那天因为心情不好
加上又是用手机上的网
把一些签名看成是内容
所以在此误会大家了
在此先说声:
对不起

[ 本帖最后由 robin 于 2005-8-23 10:51 编辑 ]
发表于 2005-11-27 18:39:54 | 显示全部楼层
深奥rftghtfgf
回复 支持 反对

使用道具 举报

发表于 2005-11-27 18:48:07 | 显示全部楼层
要看懂得花多些心思才行
回复 支持 反对

使用道具 举报

发表于 2005-11-27 19:30:52 | 显示全部楼层
仔细研究中~~~~~
回复 支持 反对

使用道具 举报

发表于 2005-11-27 21:14:55 | 显示全部楼层
请问spy的补丁在哪,能给个链接吗
回复 支持 反对

使用道具 举报

发表于 2006-1-5 02:43:11 | 显示全部楼层
不错!!!好贴!!!
顶了!!!
回复 支持 反对

使用道具 举报

发表于 2006-1-5 19:06:18 | 显示全部楼层
好难啊,看不太懂
回复 支持 反对

使用道具 举报

发表于 2006-1-5 19:43:12 | 显示全部楼层
完!这个贴子怎么不早点出来啊?我的那个电量就是那样,没有出现以FFFFF开头的,但也没有出现以OFOFOFOFOF结尾的~~~~
回复 支持 反对

使用道具 举报

发表于 2006-7-4 23:04:16 | 显示全部楼层
这个帖子很好呀,我现在也遇到第一个里面提到的问题,不知道怎么解决。
替换的图片和原图片的图片尺寸是一样的,不过在SPC3中后者显示的字节数多些。
这样替换后生成的图片补丁就和上面的补丁一比较类似,第一行最后8个字节不同。我尝试由原来的16bit改为8bit,效果也不好。

顶楼有没有好的解决办法呢?

[ 本帖最后由 sun74 于 2006-7-4 23:35 编辑 ]
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-2 21:59

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

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