出版時(shí)間:2009-4 出版社:人民郵電出版社 作者:劉穎東 頁(yè)數(shù):394
Tag標(biāo)簽:無(wú)
前言
感謝 本書獻(xiàn)給國(guó)內(nèi)所有熱愛(ài)修改游戲,以及不求回報(bào)無(wú)私奉獻(xiàn)自己的時(shí)間和精力奮戰(zhàn)在游戲漢化第一線的朋友們,非常感謝出版社黃焱為本書所做的編輯工作,同時(shí)還要感謝我的同學(xué)張介溆和孫庚教授,多謝你們審校本書,指出書中的錯(cuò)誤并提出寶貴的修改意見(jiàn),沒(méi)有你們的工作和幫助本書是不可能完成的。 寫作背景 在國(guó)內(nèi),數(shù)據(jù)解密的普及程度明顯相當(dāng)不足,在高校里也不太重視這個(gè)領(lǐng)域的知識(shí),甚至在市面上的技術(shù)書籍也未曾見(jiàn)過(guò)一本專門討論數(shù)據(jù)解密的書籍,而最接近這個(gè)領(lǐng)域的書籍在國(guó)內(nèi)有“看雪論壇”的《加密與解密》,但此書重點(diǎn)是研究代碼的逆向分析而非數(shù)據(jù)的逆向分析。 數(shù)據(jù)解密在日常的應(yīng)用非常廣泛,包括游戲資源提取、游戲外掛和游戲腳本修改器這些軟件的開(kāi)發(fā)都與數(shù)據(jù)解密形影不離。本書以研究和分析游戲中的資源文件數(shù)據(jù)結(jié)構(gòu)作為學(xué)習(xí)數(shù)據(jù)解密的例子,通過(guò)學(xué)習(xí)這些例子讀者能將此技術(shù)應(yīng)用到其他軟件領(lǐng)域?! 〖夹g(shù)是一把雙刃劍,本書的寫作目的并不是鼓勵(lì)讀者通過(guò)學(xué)習(xí)本書的內(nèi)容后去搞破壞和謀取利益,本書的寫作目的很簡(jiǎn)單,那就是盡筆者最大的努力和能力告訴讀者數(shù)據(jù)解密是怎么一回事罷了?! ”緯斯P者早年學(xué)習(xí)數(shù)據(jù)解密技術(shù)的資料、經(jīng)驗(yàn)和研究成果,讀者可以將此書作為一本數(shù)據(jù)解密的入門書籍來(lái)學(xué)習(xí)。本書并沒(méi)有什么高深莫測(cè)的知識(shí),研究和分析非公開(kāi)數(shù)據(jù)結(jié)構(gòu)只需讀者具備耐性、時(shí)間和精力,如果讀者已經(jīng)具備了這三個(gè)條件,那么相信本書能很好地引導(dǎo)您入門。
內(nèi)容概要
《揭秘?cái)?shù)據(jù)解密的關(guān)鍵技術(shù)》是一本以游戲資源文件格式為研究對(duì)象的數(shù)據(jù)逆向工程的技術(shù)書籍,主要講解如何分析和研究自定義文件格式的數(shù)據(jù)結(jié)構(gòu)?!督颐?cái)?shù)據(jù)解密的關(guān)鍵技術(shù)》內(nèi)容包含反匯編的閱讀和理解,數(shù)據(jù)在計(jì)算機(jī)中的存儲(chǔ)原理,常用媒體格式的解析,加密和解密的識(shí)別和分析,數(shù)據(jù)壓縮的特征識(shí)別,打包文件格式的識(shí)別和游戲窗口化的方法?!督颐?cái)?shù)據(jù)解密的關(guān)鍵技術(shù)》對(duì)每一個(gè)問(wèn)題都給出了詳細(xì)和完整的分析過(guò)程,力求用最通俗和簡(jiǎn)單的方法讓讀者學(xué)會(huì)分析和研究自定義文件格式?!督颐?cái)?shù)據(jù)解密的關(guān)鍵技術(shù)》適合對(duì)數(shù)據(jù)解密、游戲資源提取、軟件逆向工程感興趣的讀者以及廣大編程愛(ài)好者閱讀。
作者簡(jiǎn)介
劉潁東:網(wǎng)名“小貓”,擅長(zhǎng)逆向工程與游戲開(kāi)發(fā),從接觸反匯編開(kāi)始便一發(fā)不收拾,對(duì)操作系統(tǒng)底層控制有強(qiáng)烈的征服欲望,現(xiàn)致力于研究嵌入式操作系統(tǒng)的開(kāi)發(fā)。
書籍目錄
第1章 走進(jìn)數(shù)據(jù)解密1.1 數(shù)據(jù)解密是什么1.1.1 代碼逆向工程和數(shù)據(jù)逆向工程1.2 數(shù)據(jù)解密的方法1.2.1 黑盒分析法1.2.2 白盒分析法1.2.3 黑盒分析法與白盒分析法的比較1.3 萬(wàn)能的匯編語(yǔ)言1.3.1 為什么選擇匯編語(yǔ)言1.3.2 16位和32位的80x86匯編語(yǔ)言1.4 通用寄存器1.4.1 EAX、EBX、ECX和EDX寄存器1.4.2 EAX、EBX、ECX和EDX寄存器的用途1.5 變址寄存器1.5.1 ESI和EDI寄存器1.5.2 ESI和EDI寄存器的用途1.6 指針寄存器1.6.1 EBP和ESP寄存器1.6.2 EBP和ESP寄存器的用途1.7 標(biāo)志寄存器1.7.1 EFLAGS寄存器1.7.2 EFLAGS寄存器的用途1.8 靈活的尋址方式1.8.1 尋址方式的分類1.8.2 高級(jí)語(yǔ)言中的數(shù)據(jù)結(jié)構(gòu)和80386尋址方式的關(guān)系1.9 80386指令1.9.1 Intel格式和AT&T格式的指令1.9.2 數(shù)據(jù)傳送指令MOV、XCHG、PUSH、POP1.9.3 地址傳送指令1.9.4 算數(shù)運(yùn)算指令1.9.5 邏輯運(yùn)算指令1.9.6 移位指令1.9.7 條件轉(zhuǎn)移指令1.9.8 函數(shù)調(diào)用指令1.1 0函數(shù)調(diào)用約定1.1 0.1 3種常用的調(diào)用約定1.1 0.2 調(diào)用約定的參數(shù)傳遞順序1.1 1字節(jié)碼1.1 1.1 代碼和數(shù)據(jù)的區(qū)別1.1 1.2 PE文件第2章 識(shí)別匯編代碼的高級(jí)模式2.1 匯編中的常量、指針和變量——C語(yǔ)言中的常量、指針和變量2.1.1 常量、指針和變量的定義2.1.2 常量、指針和變量的實(shí)現(xiàn)機(jī)制2.2 匯編中的字符串——C語(yǔ)言中的字符串2.2.1 字符串的定義2.2.2 字符串的實(shí)現(xiàn)機(jī)制2.3 匯編中的數(shù)組——C語(yǔ)言中的數(shù)組2.3.1 數(shù)組的定義2.3.2 數(shù)組的實(shí)現(xiàn)機(jī)制2.3.3 二維數(shù)組的實(shí)現(xiàn)機(jī)制2.4 匯編中的結(jié)構(gòu)體——C語(yǔ)言中的結(jié)構(gòu)體2.4.1 結(jié)構(gòu)體的定義2.4.2 結(jié)構(gòu)體的實(shí)現(xiàn)機(jī)制2.5 匯編中的條件分支語(yǔ)句——C語(yǔ)言中的條件分支語(yǔ)句2.5.1 條件分支語(yǔ)句的定義2.5.2 if的實(shí)現(xiàn)機(jī)制2.5.3 包含復(fù)雜表達(dá)式的if語(yǔ)句的實(shí)現(xiàn)機(jī)制2.5.4 switch語(yǔ)句的實(shí)現(xiàn)機(jī)制2.6 匯編中的循環(huán)——C語(yǔ)言中的循環(huán)2.6.1 循環(huán)的定義2.6.2 while語(yǔ)句的實(shí)現(xiàn)機(jī)制2.6.3 do...while語(yǔ)句實(shí)現(xiàn)機(jī)制2.6.4 for語(yǔ)句的實(shí)現(xiàn)機(jī)制2.6.5 continue和break的實(shí)現(xiàn)機(jī)制2.7 匯編中的函數(shù)——C語(yǔ)言中的函數(shù)2.7.1 函數(shù)的定義2.7.2 按值傳遞的函數(shù)的實(shí)現(xiàn)機(jī)制2.7.3 按地址傳遞的函數(shù)的實(shí)現(xiàn)機(jī)制2.7.4 函數(shù)的返回值實(shí)現(xiàn)機(jī)制第3章 資源文件簡(jiǎn)介3.1 資源文件概述3.1.1 將游戲資源文件打包3.1.2 游戲的發(fā)動(dòng)機(jī)——游戲引擎3.1.3 游戲的皮膚——圖像3.1.4 游戲的聲音——音頻3.1.5 游戲的導(dǎo)演——腳本3.2 提取游戲資源的利器3.2.1 Susie33.2.2 MultiExCommander3.2.3 GameExtractor3.2.4 3DRipper3.2.5 RPGViewer3.2.6 GameViewer3.3 逆向數(shù)據(jù)結(jié)構(gòu)的應(yīng)用3.3.1 檢測(cè)數(shù)據(jù)的安全性3.3.2 增加軟件的兼容性3.3.3 挖掘未公開(kāi)的技術(shù)3.3.4 游戲的修改3.3.5 網(wǎng)絡(luò)協(xié)議的分析第4章 揭秘文件數(shù)據(jù)基礎(chǔ)——0和4.1 文件數(shù)據(jù)存儲(chǔ)原理4.1.1 位4.1.2 字節(jié)4.1.3 數(shù)據(jù)類型4.2 十六進(jìn)制編輯器介紹4.2.1 Winhex功能介紹4.2.2 計(jì)算器4.2.3 位置管理器和書簽4.2.4 文件同步比較4.2.5 數(shù)據(jù)解釋器4.3 字符串4.3.1 字符串存儲(chǔ)原理4.3.2 ASCII和UNICODE4.4 數(shù)值的表示方法4.4.1 十六進(jìn)制表示方法4.4.2 有符號(hào)數(shù)和無(wú)符號(hào)數(shù)4.5 文件數(shù)據(jù)的存儲(chǔ)順序4.5.1 Little-Endian4.5.2 Big-Endian4.6 數(shù)據(jù)存儲(chǔ)實(shí)驗(yàn)第5章 媒體數(shù)據(jù)格式解析5.1 BMP圖像文件格式5.1.1 BMP圖像文件介紹5.1.2 BMP圖像文件存儲(chǔ)結(jié)構(gòu)5.1.3 分析BMP圖像文件結(jié)構(gòu)5.2 PNG圖像文件格式5.2.1 PNG圖像文件介紹5.2.2 PNG圖像文件存儲(chǔ)結(jié)構(gòu)5.2.3 分析PNG圖像文件結(jié)構(gòu)5.3 3D模型文件介紹5.3.1 3D中的術(shù)語(yǔ)5.3.2 X文件介紹5.3.3 X文件存儲(chǔ)結(jié)構(gòu)5.3.4 分析靜態(tài)X文件結(jié)構(gòu)5.3.5 動(dòng)畫原理5.3.6 分析動(dòng)態(tài)X文件結(jié)構(gòu)5.4 md3模型文件格式5.4.1 md3模型文件介紹5.4.2 md3模型文件存儲(chǔ)結(jié)構(gòu)5.4.3 分析md3模型文件結(jié)構(gòu)第6章 數(shù)據(jù)加密vs數(shù)據(jù)解密6.1 數(shù)據(jù)加密的基礎(chǔ)6.1.1 AND運(yùn)算6.1.2 OR運(yùn)算6.1.3 XOR運(yùn)算6.1.4 NOT運(yùn)算6.1.5 SHL運(yùn)算6.1.6 SHR運(yùn)算6.1.7 位運(yùn)算的應(yīng)用6.2 游戲中常用的加密算法6.2.1 對(duì)稱加密和非對(duì)稱加密6.2.2 對(duì)稱加密/解密和非對(duì)稱加密/解密的區(qū)別6.2.3 XOR加密6.2.4 XOR加密解密分析實(shí)例6.2.5 MD5加密6.2.6 CRC加密6.2.7 BlowFish加密6.2.8 TEA加密6.3 自定義的加密/解密算法6.3.1 查找主程序中的字符串6.3.2 查找DLL的導(dǎo)出函數(shù)表6.3.3 使用內(nèi)聯(lián)匯編調(diào)用加密/解密函數(shù)6.3.4 調(diào)用DLL中的加密/解密函數(shù)6.4 實(shí)例:分析一個(gè)游戲的資源文件解密方式6.4.1 收集信息6.4.2 詳細(xì)分析第7章 神奇的數(shù)據(jù)壓縮算法7.1 RLE編碼的識(shí)別7.1.1 RLE編碼介紹7.1.2 如何識(shí)別RLE7.2 Zlib編碼的識(shí)別7.2.1 Zlib編碼介紹7.2.2 如何識(shí)別Zlib編碼7.3 LZSS編碼的識(shí)別7.3.1 LZSS編碼介紹7.3.2 如何識(shí)別LZSS編碼7.4 LZO編碼的識(shí)別7.4.1 LZO和MiniLZO編碼介紹7.4.2 如何識(shí)別LZO編碼7.5 QuickLZ編碼7.5.1 QuickLZ編碼介紹7.5.2 如何識(shí)別QuickLZ7.6 破解未知的壓縮編碼7.6.1 如何識(shí)別數(shù)據(jù)被壓縮了7.6.2 如何破解未知的壓縮編碼7.6.3 常見(jiàn)的壓縮編碼特征第8章 分析打包數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)的模式8.1 常見(jiàn)的打包文件的數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)模式8.1.1 目錄結(jié)構(gòu)8.1.2 分目錄結(jié)構(gòu)8.1.3 外部目錄結(jié)構(gòu)8.1.4 數(shù)據(jù)塊結(jié)構(gòu)8.1.5 分?jǐn)?shù)據(jù)塊結(jié)構(gòu)8.1.6 樹(shù)型結(jié)構(gòu)8.2 驗(yàn)證常見(jiàn)的數(shù)據(jù)類型8.2.1 文件大小8.2.2 文件偏移量8.2.3 文件數(shù)量8.2.4 文件頭標(biāo)記8.2.5 文件名8.2.6 哈希散列值8.2.7 數(shù)據(jù)填充8.2.8 驗(yàn)證數(shù)據(jù)的準(zhǔn)確性8.3 打包文件格式分析實(shí)例8.3.1 pak打包文件格式分析8.3.2 GPP打包文件格式分析8.3.3 Pack打包文件格式分析8.3.4 CCK打包文件格式分析8.3.5 PCK打包文件格式分析第9章 將游戲窗口化9.1 2D游戲窗口化9.1.1 2D游戲窗口化理論9.1.2 2D游戲窗口化實(shí)例9.2 3D游戲窗口化9.2.1 3D游戲窗口化理論9.2.2 3D游戲窗口化實(shí)例
章節(jié)摘錄
第1章 走進(jìn)數(shù)據(jù)解密 1.2 數(shù)據(jù)解密的方法 1.2.3 黑盒分析法與白盒分析法的比較 通常如果使用黑盒分析法能獲取文件的數(shù)據(jù)結(jié)構(gòu)就不會(huì)使用白盒分析法,因?yàn)橐话銇?lái)說(shuō)使用白盒分析法需要破解人員具備一定的匯編知識(shí)和經(jīng)驗(yàn),對(duì)于新手來(lái)說(shuō)比較困難,但對(duì)于有經(jīng)驗(yàn)的人員來(lái)說(shuō)白盒分析法往往是解決問(wèn)題的萬(wàn)能方法。很多時(shí)候通過(guò)黑盒分析法無(wú)法得到有用的信息時(shí),惟一的辦法就是進(jìn)行白盒分析了?! “缀蟹治鲆簿褪撬追Q的反匯編,一般不會(huì)對(duì)數(shù)據(jù)進(jìn)行反匯編,因?yàn)閷?duì)數(shù)據(jù)進(jìn)行反匯編是沒(méi)有意義的,反匯編針對(duì)的是使用文件數(shù)據(jù)的程序。解密者通過(guò)分析、跟蹤程序的反匯編代碼,定位到程序讀取或?qū)懭霐?shù)據(jù)的代碼段位置,通過(guò)分析反匯編代碼研究文件的數(shù)據(jù)結(jié)構(gòu)?! ‖F(xiàn)在的程序大多數(shù)都使用了強(qiáng)悍的加密殼保護(hù)自己,直接反匯編加了殼的程序是沒(méi)意義的,解密者通常需要自行將加了殼的程序脫殼并修復(fù)后才能正常反匯編分析程序,而脫殼這一環(huán)節(jié)無(wú)形中又增加了解密文件數(shù)據(jù)結(jié)構(gòu)的難度?! ∪绻麨榱隋憻捵陨淼挠?jì)算機(jī)技能水平,想要深入學(xué)習(xí)計(jì)算機(jī)編程,那么學(xué)習(xí)匯編、看懂反匯編是必經(jīng)之路,如圖1-2所示為使用白盒分析法在OllyICE中通過(guò)反匯編分析程序的指令。
編輯推薦
學(xué)數(shù)據(jù)解密,從《揭秘?cái)?shù)據(jù)解密的關(guān)鍵技術(shù)》開(kāi)始……
圖書封面
圖書標(biāo)簽Tags
無(wú)
評(píng)論、評(píng)分、閱讀與下載
揭秘?cái)?shù)據(jù)解密的關(guān)鍵技術(shù) PDF格式下載