【背景】學習c語言的記憶體檢索和動態庫
記憶體檢索:記憶體檢索,顧名思義,對某段記憶體進行遍歷搜尋
動態庫注入:動態庫又稱動態鏈結庫
英文為dll,是dynamic link library 的縮寫形式,dll是乙個包含可由多個程式同時使用的**和資料的庫,dll不是可執行檔案。動態鏈結提供了一種方法,使程序可以呼叫不屬於其可執行**
的函式。函式的可執行**位於乙個 dll 中,該 dll 包含乙個或多個已被編譯、鏈結並與使用它們的程序分開儲存的函式。dll 還有助於共享資料和資源。多個應用程式可同時訪問記憶體中單個dll 副本的內容。dll 是乙個包含可由多個程式同時使用的**和資料的庫。windows下動態庫為.dll字尾,在linux在為.so字尾。
工具:dll注入工具
plantsvszombiessetup.exe
第一步:記憶體檢索
a.使用men search工具對執行中的遊戲的某一項值進行多次定位,獲取位址,也可以通過記憶體檢索工具對這項值進行修改
記憶體檢索+動態庫注入
b.使用c語言**進行記憶體檢索:
根據記憶體檢索器檢索出來的位址,設定乙個位址段,在位址段內對記憶體進行檢索,獲取某項值的位址。
根據獲取的理想值的位址,對其進行想要的操作
c.生成動態庫檔案
右鍵單擊專案--屬性--配置屬性--常規--配置型別--動態庫(.dll檔案)
必須為.c檔案
在宣告函式時,函式前面_declspec(dllexport),用於產生介面
//產生介面
_declspec(dllexport) void go3()
d.生成庫檔案
e.注入庫檔案
使用dll注入工具注入庫檔案注入到對應的程序中
注意事項:動態庫檔案未匯出『函式名』介面函式
原因一:檔名的格式不是.c格式
原因二:生成的動態庫檔案由於先前注入了,導致現在在執行而不能修改
目標:對應用中某項值使用記憶體檢索進行獲取,並按自己的要求修改,實現簡單的外掛程式功能。
#include#include#include //匯出函式,可以載入的時候呼叫
//_declspec(dllexport) void go()
////_declspec(dllexport) void go2()
//// }
// //}
//產生介面
_declspec(dllexport) void go3()
} while (1)
sleep(5000);
}}
靜態記憶體和動態記憶體,C語言
include include int main p 0 a free p 釋放就是登記登出 占有空間就是登記一下 當free 釋放後 所以除非程序結束,否則空間是不會釋放的 return 0 include int func void 如果建立不成功的時候 return p int main vo...
C和C 語言動態記憶體分配
一 c語言動態記憶體分配 要實現動態記憶體的分配,除了利用含指標成員的結構體之外,還需利用c語言提供的幾個標準庫函式。使用時應包含標頭檔案 alloc.h 或 malloc.h 或 stdlib.h 1.malloc函式 函式原型為void malloc unsigned int size 在記憶體...
C和C 語言動態記憶體分配
一 c語言動態記憶體分配 要實現動態記憶體的分配,除了利用含指標成員的結構體之外,還需利用c語言提供的幾個標準庫函式。使用時應包含標頭檔案 alloc.h 或 malloc.h 或 stdlib.h 1.malloc函式 函式原型為void malloc unsigned int size 在記憶體...