免責聲明:內容僅供學習參考,請合法利用知識,禁止進行違法犯罪活動!
內容參考于:微塵網校
上一個內容:4.Android逆向協議-詳解二次打包失敗解決方案
從現在開始正式進入協議分析了。
首先客戶端與服務端之間是如何通信的?實際上就是客戶端向服務端發送一個網絡請求(HTTP、UDP、TCP請求),服務端收到請求之后一般會給客戶端返回一些數據(服務端給客戶端發送一些數據),然后客戶端收到這些數據之后一般會解析、處理這些數據,這就是客戶端與服務端之間的通信。
最常見的就是瀏覽器,當輸入一個網址,瀏覽器會顯示一些畫面(圖片、文字、視頻),這些畫面就是服務端返回的數據。
比如輸入 CSDN計算機王然后按搜索按鈕,按了搜索按鈕就會給服務端發送請求,瀏覽器都是HTTP、HTTPS請求,然后服務端會根據 CSDN計算機王 這個關鍵字返回與它相關的數據
![]()
返回的相關數據(不打馬賽克會被搬),如下圖的畫面就是服務端返回給客戶端數據之后,客戶端處理之后的結果
![]()
然后協議是什么?協議就是一種規則,客戶端與服務端通信,客戶端給服務端發送請求,請求中會告訴服務端它想要什么,比如給服務端發送一個1表示要搜索的數據,2表示每天熱點新聞的數據,這個1和2這種的數據就是規則的實現,只要都按照這個規則那數據就是正常的。
然后是客戶端與服務端的連接,連接實際上是訪問服務器的ip地址和端口(它就是一個數字,等后面分析過程中就可以看到了現在沒法解釋的有畫面感),比如 www.baidu.com 這個是百度搜索引擎的網址,但它實際上是訪問的百度公司的服務器上的ip和端口
然后網絡協議一般指的是osi七層模型,它只是個理論,如下圖客戶端給服務端發請求 與 服務端給客戶端發請求協議的過程,經過這樣的過程(規則、協議)客戶端與服務端就可以正常的通信了
![]()
然后基于osi七層模型實現出了TCP/IP協議,最常用的就是TCP/IP協議,它只用了osi模型中的4個,分別是應用層、傳輸層、網絡層、鏈路層
應用層實際上的協議實現:
http、ftp、tftp、dns、smtp等,常用的就是http協議
傳輸層實際上的協議實現:
TCP、UDP
網絡層實際上的協議實現:
IP等
鏈路層實際上的協議實現:它是與網絡連接有關
幀中繼 (Frame Relay)、點對點、以太網、無線局域網
上方每層具體的實現沒有細說,原因對于逆向來說沒啥用,只要知道有這種東西就行,就算現在知道是什么了也不會用
然后常用的請求方式,POST、GET
POST:用于客戶端提交數據給服務端,它的數據在body中,可傳輸大數據
GET:用于客戶端獲取服務端上的數據,它的數據在header中(網址連接里),不能傳輸大數據
如下圖,輸入www.baidu.com然后回車,這就屬于GET請求,GET、POST后面開始分析協議的時候會經常見到,所以現在不理解也沒事,后面分析的時候看看它們具體是什么東西就能懂了
然后是服務器返回數據的狀態碼,就是說給服務端發送一個請求,這個請求有沒有發送成功?狀態碼就是用來解決這個問題的
創建的狀態碼
![]()
HTTP協議簡單說明
http它是應用層,使用tcp協議建立連接,也就是客戶端與服務端通過tcp進行連接,連接之后使用http協議 發送請求、接收請求
http分兩種:普通協議(http)、安全協議(https)
http通俗講就是數據(請求)明文傳輸、https是數據(請求)加密之后傳輸
下圖中ssl、tls知道有這個東西就行,我們用不到,操作系統都實現好了
![]()
加密算法,在協議分析非常常見
它有對稱加密、非對稱加密、哈希算法
對稱加密:
有流式、分組兩種,加密和解密都是使用同一個秘鑰,一般使用分組
它的加密常見的有:DES、AES-GCM、ChaCha2--Poly1305等,常用DES、AES-GCM
非對稱加密:
加密使用的秘鑰和解密使用的秘鑰是不一樣的,分別稱為公鑰、私鑰,公鑰和算法是公開的,私鑰是保密的,它性能低、安全性超強、加密的數據長度有限
它的加密常見的有:RSA、DSA、ECDSA、DH、ECDHE,常用RSA、DSA
對稱加密相當于一個門用一把鑰匙開門和鎖門,非對稱加密相當于鎖門有鎖門的鑰匙,開門有開門的鑰匙
哈希算法:
將任意長度的信息轉換為較短的固定長度的值,通過數據加密后會變小,它的算法不可逆,就是只能加密不能解密
常用算法:MD5、SHA-1、SHA-2、SHA-256,常用的是MD5、SHA-1
數字簽名:
數字簽名就是在數據的后面再加上一段內容(這個內容是經過哈希后的,這個內容被稱為數字簽名),這樣可以證明信息沒有被修改過
在HTTPS協議中它會使用非對稱加密算法加密對稱加密的秘鑰,然后用對稱加密算法加密數據,這樣的結合使用