C 記憶體操作

2022-01-11 18:20:42 字數 3502 閱讀 6300

最近閒來無事發現周圍的朋友都在玩《植物大戰殭屍》的遊戲!於是動了製作這遊戲工具的念頭!雖然在網上同類工具很多 但是用c#寫的我幾乎看不到!所以我想用c#寫乙個!

首先用ce或者od或者其他反彙編工具找出遊戲的記憶體基址!

遊戲記憶體基址:base = 0x006a9ec0

至於如何獲取這些位址不在我們這論壇研究的範圍中!

對了我是用工具vs2008編寫的!

新建窗體(winform):

view code

using

system;

using

system.drawing;

using

system.text;

using

system.windows.forms;

namespace

plantsvszombiestool

private

void form1_load(object

sender, eventargs e)

//啟動無線陽光

private

void btnget_click(object

sender, eventargs e)

if (btnget.text == "

啟用-陽光無限")

else

}private

void timer1_tick(object

sender, eventargs e)

int address = readmemoryvalue(baseaddress); //

讀取基址(該位址不會改變)

address = address + 0x768; //

獲取2級位址

address =readmemoryvalue(address);

address = address + 0x5560; //

獲取存放陽光數值的位址

writememory(address, 0x1869f); //

寫入資料到位址(0x1869f表示99999)

timer1.interval = 1000

; }

//啟動無線金錢

private

void btnmoney_click(object

sender, eventargs e)

if (btnmoney.text == "

啟用-金錢無限")

else

}private

void timer2_tick(object

sender, eventargs e)

int address = readmemoryvalue(baseaddress); //

讀取基址(該位址不會改變)

address = address + 0x82c; //

獲取2級位址

address =readmemoryvalue(address);

address = address + 0x28; //

得到金錢位址

writememory(address, 0x1869f); //

寫入資料到位址(0x1869f表示99999)

timer2.interval = 1000

; }

private

void btngo_click(object

sender, eventargs e)

int address = readmemoryvalue(baseaddress); //

讀取基址(該位址不會改變)

address = address + 0x82c; //

獲取2級位址

address =readmemoryvalue(address);

address = address + 0x24

;

int lev = 1

;

try

catch

writememory(address, lev);

}//讀取制定記憶體中的值

public

int readmemoryvalue(int

baseadd)

//將值寫入指定記憶體中

public

void writememory(int baseadd, int

value)

private

int baseaddress = 0x006a9ec0; //

遊戲記憶體基址

private

string processname = "

plantsvszombies

"; //

遊戲程序名字

}}

下面這個類是整個工具的核心:

view code

using

system;

using

system.text;

using

system.diagnostics;

using

system.runtime.interopservices;

namespace

plantsvszombiestool

}return

rs; }

//根據程序名獲取pid

public

static

int getpidbyprocessname(string

processname)

return0;

}//根據窗體標題查詢視窗控制代碼(支援模糊匹配)

public

static intptr findwindow(string

title)

}return

intptr.zero;

}//讀取記憶體中的值

public

static

int readmemoryvalue(int baseaddress, string

processname)

catch

}//將值寫入指定記憶體位址中

public

static

void writememoryvalue(int baseaddress, string processname, int

value)

, 4, intptr.zero);

closehandle(hprocess);}}

}

C 記憶體操作

最近閒來無事發現周圍的朋友都在玩 植物大戰殭屍 的遊戲!於是動了製作這遊戲工具的念頭!雖然在網上同類工具很多 但是用c 寫的我幾乎看不到!所以我想用c 寫乙個!首先用ce或者od或者其他反彙編工具找出遊戲的記憶體基址!遊戲記憶體基址 base 0x006a9ec0 至於如何獲取這些位址不在我們這論壇...

C 記憶體操作

原文 c 記憶體操作 最近閒來無事發現周圍的朋友都在玩 植物大戰殭屍 的遊戲!於是動了製作這遊戲工具的念頭!雖然在網上同類工具很多 但是用c 寫的我幾乎看不到!所以我想用c 寫乙個!首先用ce或者od或者其他反彙編工具找出遊戲的記憶體基址!遊戲記憶體基址 base 0x006a9ec0 至於如何獲取...

C 記憶體操作

原文 c 記憶體操作 最近閒來無事發現周圍的朋友都在玩 植物大戰殭屍 的遊戲!於是動了製作這遊戲工具的念頭!雖然在網上同類工具很多 但是用c 寫的我幾乎看不到!所以我想用c 寫乙個!首先用ce或者od或者其他反彙編工具找出遊戲的記憶體基址!遊戲記憶體基址 base 0x006a9ec0 至於如何獲取...