最近閒來無事發現周圍的朋友都在玩《植物大戰殭屍》的遊戲!於是動了製作這遊戲工具的念頭!雖然在網上同類工具很多 但是用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 出現在草地 泳池 屋頂 室內。弱點 蘿蔔保護傘 背景 一天晚上,一群殭屍劫持了西瓜投手,它們對西瓜投手...