四、刷圖原理
大家已經(jīng)知道,一張圖在bin里頭,有兩部分?jǐn)?shù)據(jù),一個(gè)是圖片的指針信息,一部分是圖片本身的16進(jìn)制數(shù)據(jù),是分別存放的。659調(diào)用圖片是通過(guò)讀取指針信息來(lái)進(jìn)行的。這正如圖書(shū)館藏書(shū)一樣,659就是一個(gè)圖書(shū)館,圖片本身數(shù)據(jù)就是一本書(shū),而信息指針就是管理員手中的一個(gè)索引目錄。書(shū)本身是死的,放在哪兒都一樣。關(guān)鍵是索引目錄,他必須要有記載:書(shū)的存放位置和書(shū)名的內(nèi)容。這樣,不管書(shū)放到哪兒,只要管理員有更新索引,他總能隨時(shí)找到他,使用他。
是的,刷圖也是猶如換書(shū),所以,我們就不僅僅是把圖片這本書(shū)換掉(本身的數(shù)據(jù)覆蓋掉),同時(shí)還需要修改索引目錄(指針信息)中的書(shū)名等信息,這樣才能確保管理員找到書(shū)(能讓659正確讀取到)。
是啊,刷圖就要同時(shí)改bin里的圖片指針信息和存儲(chǔ)地址上的圖片數(shù)據(jù),我們也可以用imagehuter直接替換,但修改后,bin是怎么發(fā)生變化的呢?我們來(lái)看看:
1、 用winhex打開(kāi)原版xf18版bin,轉(zhuǎn)到偏移量00450000,看,從450000開(kāi)始是不是都是00。沒(méi)什么,看看就好了。
2、大家往下翻頁(yè),或者干脆直接轉(zhuǎn)到偏移量004ffff0。看,4ffff0前面是不是都是00。翻頁(yè)的朋友會(huì)知道,從00450000-4ffff0之間都是0。為什么?因?yàn)檫@段空間是正版bin空閑的地址。請(qǐng)記住,這段是空閑的,記住就好了。
3、打開(kāi)ImageHunter,打開(kāi)原版xf18版bin,再找到連通新時(shí)空那張(地址:229d4)照例記下所有信息。我們選擇一幅128*128的圖把它替換掉,但注意 不要選擇清空 。
4、這次,替換后,記下新信息。我們發(fā)現(xiàn),除信息1和指針不變外,其他信息都變了,信息可能大家都不一樣(那是因換入的圖不一樣),但圖像地址都一樣,是“00450000”。我們知道,“00450000”就是我們新圖片的地址了。 好,保存成一個(gè)新的bin。
4、用winhex打開(kāi)這新的bin ,轉(zhuǎn)到偏移量00229D24(原來(lái)圖片的地址)。哇,和昨天不一樣啊,不再是都是00的數(shù)據(jù)了。難道,這是新刷入圖的數(shù)據(jù)。當(dāng)然不是了,按信息,新圖應(yīng)該在00450000。那這是?記得嗎?我們昨天選擇了清空,但今天沒(méi)有。原來(lái),我們選清空,就是把原來(lái)的那副圖從bin里頭刪掉了,不清空,圖片數(shù)據(jù)會(huì)依然保留著。也就是說(shuō),刷圖可以保留原圖,也可以不保留,這都不影響新圖片。
5、再轉(zhuǎn)到偏移量00450000。哦怎么多了這么多數(shù)據(jù)了。嗬嗨,這就是新圖片的了?對(duì),沒(méi)錯(cuò)。從004500000開(kāi)始,都是他?偣舱嫉厥,哦,大家應(yīng)該都不一樣,但可以肯定,新圖片是多少字節(jié),他就占多少個(gè)位置。這點(diǎn)很重要哦。
6、知道了新圖片替換時(shí)是怎么存放的,那我們?cè)诳纯粗羔樀淖兓,轉(zhuǎn)到0037b650。看看,是變了,格式?jīng)]變,大小變了,地址也指向了00450000。啊,真的哦。
對(duì),刷圖就是這樣簡(jiǎn)單,只要能找到圖片的指針,隨便在659的空閑位置查入新圖片信息,然后修改指針就可以了。
五、刷圖原理鞏固
刷圖真的很簡(jiǎn)單。不信,我們這次直接在winhex里通過(guò)修改指針信息把圖改回來(lái)。
1、打開(kāi)ImageHunter,打開(kāi)剛才修改的bin,(按128*128查找),是不是找不到229D24這幅圖了,但是多了450000這幅你加入的圖?但我們知道連同新時(shí)空這幅還在229D24這個(gè)位置阿。嗯,那是因?yàn)楝F(xiàn)在沒(méi)有任何指針指向他,所以找不出來(lái)了。
2、在用winhex打開(kāi)這新的bin ,轉(zhuǎn)到偏移量0037b650,把指針信息該回我們?cè)瓉?lái)記下的連同新時(shí)空?qǐng)D片的信息(如圖),記住是“00808000”,“ce4a0400”“249d2200"。
3、保存后,關(guān)掉winhex。
4、用ImageHunter重新打開(kāi)保存的bin,(按128*128查找)。天哪,229D24 又回來(lái)了,450000卻不見(jiàn)了。
怎么樣?刷圖就是這樣?
六、刷圖原理總結(jié)
現(xiàn)在,我們是不是可以總結(jié)一下:
1、我們刷入的圖片是寫(xiě)入659的閑置空間的,只要有空間,寫(xiě)多少都行,一般情況下,xf正版bin從00450000-004fffff這一段都是空的,共有704k大小。
2、要想把刷入的圖顯示出來(lái),就必須將要替換圖片的指針信息指向新圖。
3、你可以一一指向,也可以將給多幅圖的指針指向同一幅,比如將動(dòng)畫(huà)青蛙(用ImageHunter可看出,共8幅圖,有8個(gè)指針)都指向你存入的一張圖。結(jié)果是,這幅動(dòng)畫(huà)還是動(dòng)畫(huà),都每一貞都一樣,看其來(lái)像是靜止的一幅畫(huà)。
4、可你同時(shí)要記住,一個(gè)指針只能對(duì)應(yīng)一幅圖,指針可以到處指向,但指針的位置是固定的,你不能改他。你改了了,圖書(shū)館管理員就找不到所以目錄了。
5、替換下的圖,你可以清空,也可以保留。清空的好處是留出空間,可以存放比他小一點(diǎn)或等大的新圖(或其他)。
6、你也可以不用ImageHunter換圖,而是利用ximagemaker先將要刷入的圖按照魔鬼的辦法先做成一個(gè)小的bin,然后用winhex打開(kāi),復(fù)制到原版bin或者修改的bin的空位置理(記住,這個(gè)bin是9m的),然后同過(guò)修改指針來(lái)實(shí)現(xiàn)。
7、當(dāng)然,你也可以在bin里的空閑位置留出一個(gè)標(biāo)準(zhǔn)大小的位置(64k的倍數(shù))這個(gè)位置必須是里連續(xù)空閑的,或者信息是允許覆蓋的(如你不想要的圖片),然后將想替換的圖片的指針指向這里。以后,你只要做一個(gè)圖片的標(biāo)準(zhǔn)bin,刷入這里。由于大小是標(biāo)準(zhǔn)的,位置是固定,所以你刷入圖片后,就不用改指針了。這有什么特別?嘿嘿,笨,不用該指針,不就可以實(shí)現(xiàn)單圖刷機(jī)了嗎?
什么,第7點(diǎn)看不懂。的確,它對(duì)你是有點(diǎn)難。沒(méi)關(guān)系,我們?cè)谙乱淮沃v完刷音樂(lè)原理后,會(huì)集中在說(shuō)一次。那時(shí),你已經(jīng)沒(méi)有任何問(wèn)題了。










