眾所周知在windows或者linux系統中,程序間的資料是相互獨立的,譬如有兩個程序a和b,a只能訪問作業系統分配給a的記憶體空間,不能訪問作業系統分配給b的記憶體空間。話句話說a不能修改b的資料,b也不能修改a的資料,想要修改資料只能通過.dll才行得通,外掛程式的目的只有乙個,修改資料,可以通過兩種方式,要麼直接修改記憶體資料要麼檢索函式位址呼叫函式已達到外掛程式目的。
以修改植物大戰殭屍金幣數量為例,簡要說明下外掛程式原理。
【第一步】開啟植物大戰殭屍
初始金幣是50
【第二步】這裡會用到乙個工具叫做cheat engine。我用的是6.3的版本。他的主要作用是監視程序所用到的記憶體位址等,函式的位址、資料的位址...
【第三步】開啟需要監視的程序,我這裡選擇植物大戰殭屍
【第四步】初次掃瞄值為50的資料有哪些。輸入50,點選新的掃瞄,這個時候會掃瞄到有很多資料為50的項,我們不能確定哪一項是金幣的資料的記憶體位址。
【第五步】開啟遊戲繼續玩,當金幣的數量發生變化的時候暫停遊戲。比如說現在的75。
【第六步】在cheat engine中輸入75,點選再次掃瞄。如下圖,只有乙個資料的是75,現在可以確定0x0896d868這個位址就是金幣的變數的首位址。
【第六步】改變金幣的值。選擇change vakue of selected addresss。
【第七步】改變值輸入10000.
金幣的值就改變成了10000。
這個就是比較簡單的外掛程式。其原理三步走。
最重要的是找你想修改的資料的記憶體位址
編寫修改資料的.dll程式
注入dll。
下面我們詳細的講講通過dll注入的方式修改金幣的值
找到金幣的記憶體位址,假設我們找到的是0x12e595f0。
【第二步】編寫改變金幣的dll。開啟vs2013新建工程。設定工程屬性為dll。編寫dll**。生成dll。
假設我們想要把金幣的值修改成777。
1 _declspec(dllexport) void【第三步】dll注入。使用工具dllinject找到需要注入的程序,選擇植物大戰殭屍go()
2
選擇之前生成的dll,執行時載入的函式為go。點選執行。
金幣的值被修改成777
這就是外掛程式的原理。簡單吧。o(∩_∩)o。
C 編寫植物大戰殭屍外掛程式
最近閒來無事發現周圍的朋友都在玩 植物大戰殭屍 的遊戲!於是動了製作這遊戲工具的念頭!雖然在網上同類工具很多 但是用c 寫的我幾乎看不到!所以我想用c 寫乙個!首先用ce或者od或者其他反彙編工具找出遊戲的記憶體基址!遊戲記憶體基址 base 0x006a9ec0 至於如何獲取這些位址不在我們這論壇...
植物大戰殭屍
c code using system using system.drawing using system.text using system.windows.forms namespace plantsvszombiestool private void form1 load object sen...
植物大戰殭屍新植物殭屍(上)
速度 慢,同普通殭屍 西瓜投手殭屍傷害力巨大,西瓜砸碎時3 3範圍的植物全部都會受到傷害,和西瓜投手相同。魅惑無效,照樣投向植物,最好用必殺植物,地刺也能砸到 攻擊 80 3 3格仔 生命 200 出現在草地 泳池 屋頂 室內。弱點 蘿蔔保護傘 背景 一天晚上,一群殭屍劫持了西瓜投手,它們對西瓜投手...