c語言記憶體檢索和動態庫注入

2021-08-11 09:52:21 字數 1320 閱讀 3776

【背景】學習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 在記憶體...