學習逆向知識之用於游戲外掛的實現.第一講,通過游戲外掛.學習逆向技術指超級馬里奧.


 

        通過游戲外掛.學習逆向技術指超級馬里奧.

一丶前言

1.什么是逆向.

  逆向就是在沒有源代碼的情況下.通過匯編.反匯編來逆向一個成品的Exe(也可以是別的.舉例是EXE)這樣叫做逆向.

2.逆向的用途

   逆向技術可以用於 反病毒.反外掛. 破解. ...... 等等.當然反病毒反外掛的前提就是你要對外掛或者病毒寫法了解. 才可以進行.所以逆向的高度取決於開發的水平.

3.這篇博客的作用.

  這篇博客不是教授外掛的.而是以外掛為切入點.講解逆向技術.並了解逆向技術可以做什么.

二丶超級馬里奧

想必超級瑪麗大家都玩過.

那么我們可以對它做點什么.

1.血值.可以修改為無限血量

2.子彈個數.可以修改無限子彈.

3.生命個數.可以修改為無限生命

4.子彈狀態. 使馬里奧可以發送普通子彈. 登山鎬子彈. 以及忍者飛鏢子彈. CTRL+Z鍵還可以開啟大招.

三丶逆向工具准備

我們要做外掛的前提需要有逆向工具.

Cheat_Engine 簡稱CE 一款可以搜索內存的工具. 也可以看反匯編.

那么我們可以用CE做切入點.

1.使用CE 附加超級馬里奧進程.

2.搜索子彈個數. 依次減少.然后繼續搜索.這樣可以搜索到子彈的個數的基址.

3.基址就是保存信息的一個全局變量地址.就是不會變動的地址.這樣超級馬里奧重新啟動也會是這個地址.

1.搜索子彈個數

2.子彈個數更改.點擊再次掃描.

當我們再次掃描之后會發現還有兩個地址.根據經驗.綠色的是基地址.

當然我們可以關掉游戲.重新啟動.然后看看地址還是不是這個.如果是這個.(0x00428292) 那么這個地址就是個靜態地址.我們可以認為這個地址是不變的了.

3.下拉到下面.CTRL +B 鍵觀察附近內存. 然后CTRL + 2 以字節的10進制顯示.

觀察附近內存. 可以看到92上面的82地址是個6. 而看我們當前的血值也是6 可以猜想這個變量存放的是血值.

我們可以減血看一下.

我們可以修改一下血值.看看是否是.

修改之后發現是.所以82就是血的基址.  然后通過我們馬里奧不斷的進行不同的操作.

可以看出這塊內存會更改.

當然這個操作需要手動去做.步驟我就不做了.

所以我們可以得出.

0x00428282  =  血的基址

0x00428292 =   子彈個數基址.

0x004282A2 =   生命個數的基址.

 

 

四丶編程實現外掛編寫.

C++  : 如果是C++ 我們需要熟悉幾個API.  OpenProcess 打開進程句柄.        ReadProcessMemory(); 讀內存.  WriteProcessMemory() 寫內存.

易語言: 易語言可以使用模塊. 我用的是超級模塊.

要熟悉的易語言命令.

1.取進程ID(進程名)  返回進程ID  (跟OpenProcess 一樣.只不過是封裝的一個)

2.十六到十             在易語言當中.我們操作的地址需要轉化成10進制.可以用這個命令.

3.寫內存整數型     跟WriteProcessMemory一樣的. 只不過封裝了一下. 

具體代碼可以在博客中下載. 一個是 VS2015 版本MFC的.  一個是易語言編寫的. 附加模塊.

成品圖演示

MFC

易語言:

 

資料下載: 鏈接:https://pan.baidu.com/s/1AaRAuw7uUcxhxCL_nCrYMQ 密碼:i2xt  (超級馬里奧 + CE 工具 + 易語言.e代碼文件 + 成品 + MFC 代碼 + 成品)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM