網路遊戲逆向分析-9-自動更新基址
網路遊戲逆向分析-9-自動更新基址
基址在每次更新之後都會修改,這個比較麻煩,不然每次都得重新找,非常消耗體力和時間。
自動更新基址原理
搜索遊戲進程的記憶體,然後把硬編碼依次和記憶體裡面數據進行匹配,匹配到了之後就返回地址,地址附近就是基址了,通過加減來得到基址。
這裡要扯到一些關於硬編碼和機器指令的問題了,從整個電腦來看實際上要跑的東西在CPU上,只能識別0和1,但是為了後面的多種多樣功能,通過對0和1的組合來實現了機器指令,CPU可以直接通過這個0和1的指令來進行不同的操作,這個指令就叫做機器指令也可以說是硬編碼(也就是硬體上的編碼)根據CPU的不同而不同,而我們常用的彙編指令,是唯一一個可以和機器指令一一對應的東西,因為如果直接用機器指令對於開發來說非常非常麻煩。所以我們常用的是彙編語言,而我們通過一些Ollydbg,xdbg這些東西,都是通過CPU里用的機器指令翻譯成的彙編指令,這個流程的工具叫做反彙編引擎,比如說:
這個ollydbg裡面的1是記憶體地址,2是機器碼的內容,3是彙編指令的內容。實際上運行的是記憶體地址裡面存放的機器碼,只不過這個調試器幫我們翻譯成了彙編指令,然後我們修改彙編指令的時候也幫我們修改了機器碼這樣子。
自動更新基址思路
所以這裡我們可以參考機器碼,我們把整個記憶體的機器碼讀出來,然後通過機器碼比對得到對應的有關地址的機器碼指令,然後轉成字元串,讀取得到基址。
開始
這裡我們隨便用一段東西把:
需要注意的是,這裡的機器碼盡量多弄一下,這樣來達到機器碼是唯一的別的地方不能會重複。
邏輯都在程式碼裡面了: