揭秘數(shù)據(jù)解密的關鍵技術

出版時間:2009-4  出版社:人民郵電出版社  作者:劉穎東  頁數(shù):394  
Tag標簽:無  

前言

  感謝  本書獻給國內所有熱愛修改游戲,以及不求回報無私奉獻自己的時間和精力奮戰(zhàn)在游戲漢化第一線的朋友們,非常感謝出版社黃焱為本書所做的編輯工作,同時還要感謝我的同學張介溆和孫庚教授,多謝你們審校本書,指出書中的錯誤并提出寶貴的修改意見,沒有你們的工作和幫助本書是不可能完成的。  寫作背景  在國內,數(shù)據(jù)解密的普及程度明顯相當不足,在高校里也不太重視這個領域的知識,甚至在市面上的技術書籍也未曾見過一本專門討論數(shù)據(jù)解密的書籍,而最接近這個領域的書籍在國內有“看雪論壇”的《加密與解密》,但此書重點是研究代碼的逆向分析而非數(shù)據(jù)的逆向分析?! ?shù)據(jù)解密在日常的應用非常廣泛,包括游戲資源提取、游戲外掛和游戲腳本修改器這些軟件的開發(fā)都與數(shù)據(jù)解密形影不離。本書以研究和分析游戲中的資源文件數(shù)據(jù)結構作為學習數(shù)據(jù)解密的例子,通過學習這些例子讀者能將此技術應用到其他軟件領域。  技術是一把雙刃劍,本書的寫作目的并不是鼓勵讀者通過學習本書的內容后去搞破壞和謀取利益,本書的寫作目的很簡單,那就是盡筆者最大的努力和能力告訴讀者數(shù)據(jù)解密是怎么一回事罷了。  本書包含了筆者早年學習數(shù)據(jù)解密技術的資料、經驗和研究成果,讀者可以將此書作為一本數(shù)據(jù)解密的入門書籍來學習。本書并沒有什么高深莫測的知識,研究和分析非公開數(shù)據(jù)結構只需讀者具備耐性、時間和精力,如果讀者已經具備了這三個條件,那么相信本書能很好地引導您入門。

內容概要

  《揭秘數(shù)據(jù)解密的關鍵技術》是一本以游戲資源文件格式為研究對象的數(shù)據(jù)逆向工程的技術書籍,主要講解如何分析和研究自定義文件格式的數(shù)據(jù)結構?!督颐財?shù)據(jù)解密的關鍵技術》內容包含反匯編的閱讀和理解,數(shù)據(jù)在計算機中的存儲原理,常用媒體格式的解析,加密和解密的識別和分析,數(shù)據(jù)壓縮的特征識別,打包文件格式的識別和游戲窗口化的方法?!督颐財?shù)據(jù)解密的關鍵技術》對每一個問題都給出了詳細和完整的分析過程,力求用最通俗和簡單的方法讓讀者學會分析和研究自定義文件格式?!督颐財?shù)據(jù)解密的關鍵技術》適合對數(shù)據(jù)解密、游戲資源提取、軟件逆向工程感興趣的讀者以及廣大編程愛好者閱讀。

作者簡介

  劉潁東:網名“小貓”,擅長逆向工程與游戲開發(fā),從接觸反匯編開始便一發(fā)不收拾,對操作系統(tǒng)底層控制有強烈的征服欲望,現(xiàn)致力于研究嵌入式操作系統(tǒng)的開發(fā)。

書籍目錄

第1章 走進數(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 萬能的匯編語言1.3.1 為什么選擇匯編語言1.3.2 16位和32位的80x86匯編語言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 標志寄存器1.7.1 EFLAGS寄存器1.7.2 EFLAGS寄存器的用途1.8 靈活的尋址方式1.8.1 尋址方式的分類1.8.2 高級語言中的數(shù)據(jù)結構和80386尋址方式的關系1.9 80386指令1.9.1 Intel格式和AT&T格式的指令1.9.2 數(shù)據(jù)傳送指令MOV、XCHG、PUSH、POP1.9.3 地址傳送指令1.9.4 算數(shù)運算指令1.9.5 邏輯運算指令1.9.6 移位指令1.9.7 條件轉移指令1.9.8 函數(shù)調用指令1.1 0函數(shù)調用約定1.1 0.1 3種常用的調用約定1.1 0.2 調用約定的參數(shù)傳遞順序1.1 1字節(jié)碼1.1 1.1 代碼和數(shù)據(jù)的區(qū)別1.1 1.2 PE文件第2章 識別匯編代碼的高級模式2.1 匯編中的常量、指針和變量——C語言中的常量、指針和變量2.1.1 常量、指針和變量的定義2.1.2 常量、指針和變量的實現(xiàn)機制2.2 匯編中的字符串——C語言中的字符串2.2.1 字符串的定義2.2.2 字符串的實現(xiàn)機制2.3 匯編中的數(shù)組——C語言中的數(shù)組2.3.1 數(shù)組的定義2.3.2 數(shù)組的實現(xiàn)機制2.3.3 二維數(shù)組的實現(xiàn)機制2.4 匯編中的結構體——C語言中的結構體2.4.1 結構體的定義2.4.2 結構體的實現(xiàn)機制2.5 匯編中的條件分支語句——C語言中的條件分支語句2.5.1 條件分支語句的定義2.5.2 if的實現(xiàn)機制2.5.3 包含復雜表達式的if語句的實現(xiàn)機制2.5.4 switch語句的實現(xiàn)機制2.6 匯編中的循環(huán)——C語言中的循環(huán)2.6.1 循環(huán)的定義2.6.2 while語句的實現(xiàn)機制2.6.3 do...while語句實現(xiàn)機制2.6.4 for語句的實現(xiàn)機制2.6.5 continue和break的實現(xiàn)機制2.7 匯編中的函數(shù)——C語言中的函數(shù)2.7.1 函數(shù)的定義2.7.2 按值傳遞的函數(shù)的實現(xiàn)機制2.7.3 按地址傳遞的函數(shù)的實現(xiàn)機制2.7.4 函數(shù)的返回值實現(xiàn)機制第3章 資源文件簡介3.1 資源文件概述3.1.1 將游戲資源文件打包3.1.2 游戲的發(fā)動機——游戲引擎3.1.3 游戲的皮膚——圖像3.1.4 游戲的聲音——音頻3.1.5 游戲的導演——腳本3.2 提取游戲資源的利器3.2.1 Susie33.2.2 MultiExCommander3.2.3 GameExtractor3.2.4 3DRipper3.2.5 RPGViewer3.2.6 GameViewer3.3 逆向數(shù)據(jù)結構的應用3.3.1 檢測數(shù)據(jù)的安全性3.3.2 增加軟件的兼容性3.3.3 挖掘未公開的技術3.3.4 游戲的修改3.3.5 網絡協(xié)議的分析第4章 揭秘文件數(shù)據(jù)基礎——0和4.1 文件數(shù)據(jù)存儲原理4.1.1 位4.1.2 字節(jié)4.1.3 數(shù)據(jù)類型4.2 十六進制編輯器介紹4.2.1 Winhex功能介紹4.2.2 計算器4.2.3 位置管理器和書簽4.2.4 文件同步比較4.2.5 數(shù)據(jù)解釋器4.3 字符串4.3.1 字符串存儲原理4.3.2 ASCII和UNICODE4.4 數(shù)值的表示方法4.4.1 十六進制表示方法4.4.2 有符號數(shù)和無符號數(shù)4.5 文件數(shù)據(jù)的存儲順序4.5.1 Little-Endian4.5.2 Big-Endian4.6 數(shù)據(jù)存儲實驗第5章 媒體數(shù)據(jù)格式解析5.1 BMP圖像文件格式5.1.1 BMP圖像文件介紹5.1.2 BMP圖像文件存儲結構5.1.3 分析BMP圖像文件結構5.2 PNG圖像文件格式5.2.1 PNG圖像文件介紹5.2.2 PNG圖像文件存儲結構5.2.3 分析PNG圖像文件結構5.3 3D模型文件介紹5.3.1 3D中的術語5.3.2 X文件介紹5.3.3 X文件存儲結構5.3.4 分析靜態(tài)X文件結構5.3.5 動畫原理5.3.6 分析動態(tài)X文件結構5.4 md3模型文件格式5.4.1 md3模型文件介紹5.4.2 md3模型文件存儲結構5.4.3 分析md3模型文件結構第6章 數(shù)據(jù)加密vs數(shù)據(jù)解密6.1 數(shù)據(jù)加密的基礎6.1.1 AND運算6.1.2 OR運算6.1.3 XOR運算6.1.4 NOT運算6.1.5 SHL運算6.1.6 SHR運算6.1.7 位運算的應用6.2 游戲中常用的加密算法6.2.1 對稱加密和非對稱加密6.2.2 對稱加密/解密和非對稱加密/解密的區(qū)別6.2.3 XOR加密6.2.4 XOR加密解密分析實例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的導出函數(shù)表6.3.3 使用內聯(lián)匯編調用加密/解密函數(shù)6.3.4 調用DLL中的加密/解密函數(shù)6.4 實例:分析一個游戲的資源文件解密方式6.4.1 收集信息6.4.2 詳細分析第7章 神奇的數(shù)據(jù)壓縮算法7.1 RLE編碼的識別7.1.1 RLE編碼介紹7.1.2 如何識別RLE7.2 Zlib編碼的識別7.2.1 Zlib編碼介紹7.2.2 如何識別Zlib編碼7.3 LZSS編碼的識別7.3.1 LZSS編碼介紹7.3.2 如何識別LZSS編碼7.4 LZO編碼的識別7.4.1 LZO和MiniLZO編碼介紹7.4.2 如何識別LZO編碼7.5 QuickLZ編碼7.5.1 QuickLZ編碼介紹7.5.2 如何識別QuickLZ7.6 破解未知的壓縮編碼7.6.1 如何識別數(shù)據(jù)被壓縮了7.6.2 如何破解未知的壓縮編碼7.6.3 常見的壓縮編碼特征第8章 分析打包數(shù)據(jù)存儲結構的模式8.1 常見的打包文件的數(shù)據(jù)結構存儲模式8.1.1 目錄結構8.1.2 分目錄結構8.1.3 外部目錄結構8.1.4 數(shù)據(jù)塊結構8.1.5 分數(shù)據(jù)塊結構8.1.6 樹型結構8.2 驗證常見的數(shù)據(jù)類型8.2.1 文件大小8.2.2 文件偏移量8.2.3 文件數(shù)量8.2.4 文件頭標記8.2.5 文件名8.2.6 哈希散列值8.2.7 數(shù)據(jù)填充8.2.8 驗證數(shù)據(jù)的準確性8.3 打包文件格式分析實例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游戲窗口化實例9.2 3D游戲窗口化9.2.1 3D游戲窗口化理論9.2.2 3D游戲窗口化實例

章節(jié)摘錄

  第1章 走進數(shù)據(jù)解密  1.2 數(shù)據(jù)解密的方法  1.2.3 黑盒分析法與白盒分析法的比較  通常如果使用黑盒分析法能獲取文件的數(shù)據(jù)結構就不會使用白盒分析法,因為一般來說使用白盒分析法需要破解人員具備一定的匯編知識和經驗,對于新手來說比較困難,但對于有經驗的人員來說白盒分析法往往是解決問題的萬能方法。很多時候通過黑盒分析法無法得到有用的信息時,惟一的辦法就是進行白盒分析了?! “缀蟹治鲆簿褪撬追Q的反匯編,一般不會對數(shù)據(jù)進行反匯編,因為對數(shù)據(jù)進行反匯編是沒有意義的,反匯編針對的是使用文件數(shù)據(jù)的程序。解密者通過分析、跟蹤程序的反匯編代碼,定位到程序讀取或寫入數(shù)據(jù)的代碼段位置,通過分析反匯編代碼研究文件的數(shù)據(jù)結構。  現(xiàn)在的程序大多數(shù)都使用了強悍的加密殼保護自己,直接反匯編加了殼的程序是沒意義的,解密者通常需要自行將加了殼的程序脫殼并修復后才能正常反匯編分析程序,而脫殼這一環(huán)節(jié)無形中又增加了解密文件數(shù)據(jù)結構的難度?! ∪绻麨榱隋憻捵陨淼挠嬎銠C技能水平,想要深入學習計算機編程,那么學習匯編、看懂反匯編是必經之路,如圖1-2所示為使用白盒分析法在OllyICE中通過反匯編分析程序的指令。

編輯推薦

  學數(shù)據(jù)解密,從《揭秘數(shù)據(jù)解密的關鍵技術》開始……

圖書封面

圖書標簽Tags

評論、評分、閱讀與下載


    揭秘數(shù)據(jù)解密的關鍵技術 PDF格式下載


用戶評論 (總計0條)

 
 

 

250萬本中文圖書簡介、評論、評分,PDF格式免費下載。 第一圖書網 手機版

京ICP備13047387號-7