1. 程式人生 > 其它 >加密與解密之基礎知識

加密與解密之基礎知識

一、什麼是加密解密

軟體逆向工程(Reverse Engineering):

       是指根據已有的產物和結果,通過分析來推匯出具體的實現方法。

對軟體來說,“可執行程式 --> 反編譯 --->原始碼”的過程就是逆向工程。

逆向工程的內容如下:

  • 軟體使用限制的去除和軟體功能的新增。
  • 軟體原始碼的再獲得。
  • 硬體的複製和模擬。

 

逆向分析技術(對軟體進行分析的一般途徑和策略):

  • 通過軟體使用說明和操作格式分析軟體;
  • 靜態分析技術;
  • 動態分析技術;

 

二、文字字元

ASCII Unicode字符集:

字符集是一個系統所支援的所有抽象字元的集合。字元是各種文字和符號的總稱,包括各種文字、標點符號、圖形符號、數字等等。

在早期,率先出現的是ASCII碼,其採用了7bit進行儲存編碼資料,共128個編碼。隨著發展,由於計算機一個位元組是8bit。所以,有些計算機廠家對ASCII進行了擴充套件,使其可以儲存256個編碼。再隨著計算機的全球化,各國之間要想進行計算機方面的交流,必須要應對國家語言字元的不同。因此,Unicode誕生了。Unicode採用了16bit進行儲存,即2位元組,其也被稱為寬字符集。由於ASCII誕生得比Unicode早,所以,Unicode要對ASCII進行相容。所以,所有的7位ASCII碼都被擴充成了16位,可以想到,其高位擴充的是0。

位元組儲存順序:

  • 大端序(Big-endian):高位位元組存入低地址,低位位元組存入高地址。
  • 小端序(Little-endian):低位位元組存入低地址,高位位元組存入高地址。

一般來說,x86系列的CPU都是Little-endian位元組序,PowerPC通常是Big-endian位元組序。

 

三、Windows作業系統

Win32 API函式

API : Application Programming Interface . 即應用程式程式設計介面。

在Windows作業系統開始佔有主導地位的時候,人們想要去開發Windows上面的應用程式。為了滿足人們的需求,微軟把應用程式執行時所需要的視窗管理、圖形裝置介面、記憶體管理等功能封裝成一個個函式,即API函式,可通過呼叫這些函式進行應用程式的操作和開發。隨著Windows版本的不斷更新,Win API函式不斷增加。與此同時,要對舊版本的API函式進行相容。

Windows運轉的核心是動態連結。

 

 

 

在Win32API函式字符集中,“A”表示ANSI,即前面說的ASCII擴充套件,“W”表示Widechars(即Unicode)。前者是單位元組方式,後者是寬位元組方式。因此,每個以字串為引數的Win32函式在作業系統中都有這兩種方式的版本。

WOW64:

WOW64(Windows-on-Windows 64-bit)是64位Windows作業系統的子系統,可以使大多數32位應用程式在不進行修改的情況下執行在64位作業系統上。

  • 64位作業系統應有的系統檔案存放在\Windows\System32資料夾下;
  • 32位作業系統應有的系統檔案存放在\Windows\SysWOW64資料夾下;

Windows訊息機制:

 

(直接截圖了,因為我覺得每句話都是重點^_^)

虛擬記憶體:

平坦記憶體模式:

即把全部系統記憶體表示為連續的地址空間。在這種模式下,應用程式看到的記憶體是一個單獨的連續地址空間。CPU可以直接(且線性)定址所有可利用的記憶體位置,無需訴諸任何記憶體分段或分頁機制。