C 編寫植物大戰殭屍外掛程式

2021-06-07 09:54:11 字數 3895 閱讀 1209

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

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

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

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

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

新建窗體:

c# 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)

intaddress

=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)

intaddress

=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)

intaddress

=readmemoryvalue(baseaddress);

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

address

=address

+0x82c

;

//獲取2級位址

address

=readmemoryvalue(address);

address

=address

+0x24

;

intlev =1

;

try

catch

writememory(address, lev);

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

public

intreadmemoryvalue(

intbaseadd)

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

public

void

writememory(

intbaseadd,

intvalue)

private

intbaseaddress

=0x006a9ec0

;

//遊戲記憶體基址

private

string

processname ="

plantsvszombies";

//遊戲程序名字}}

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

c# code

using

system;

using

system.text;

using

system.diagnostics;

using

system.runtime.interopservices;

namespace

plantsvszombiestool

}return

rs; }

//根據程序名獲取pid

public

static

intgetpidbyprocessname(

string

processname)

return0;

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

public

static

intptr findwindow(

string

title)

}return

intptr.zero;

}//讀取記憶體中的值

public

static

intreadmemoryvalue(

intbaseaddress,

string

processname)

catch

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

public

static

void

writememoryvalue(

intbaseaddress,

string

processname,

intvalue)

, 4, intptr.zero);

closehandle(hprocess);}}

}

外掛程式原理之植物大戰殭屍

眾所周知在windows或者linux系統中,程序間的資料是相互獨立的,譬如有兩個程序a和b,a只能訪問作業系統分配給a的記憶體空間,不能訪問作業系統分配給b的記憶體空間。話句話說a不能修改b的資料,b也不能修改a的資料,想要修改資料只能通過.dll才行得通,外掛程式的目的只有乙個,修改資料,可以通...

植物大戰殭屍

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 出現在草地 泳池 屋頂 室內。弱點 蘿蔔保護傘 背景 一天晚上,一群殭屍劫持了西瓜投手,它們對西瓜投手...