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