c 實現植物大戰殭屍修改器

2021-08-13 16:00:37 字數 3196 閱讀 7668

建立乙個基於對話方塊的mfc程式memorycheatdlg,繪製主介面,主對話方塊id:idd_memorycheat_dialog:

包括進度條,多個編輯框,兩個核取方塊,多個按鈕,兩個list box。

新建乙個對話方塊用於32位程序顯示,對話方塊id:idd_dialog_progress_list

為程序對話方塊新增關聯類cdialogprogress

雙擊主對話方塊的「程序」按鈕,新增開啟32位程序列表對話方塊的按鍵處理函式。程序對話方塊返回時,主對話方塊獲取程序對話方塊設定的當前選中的程序id值,根據選擇的程序id,在主對話方塊中開啟該程序。

void cmemorycheatdlg::onbnclickedbuttonprogress()

// 獲得選擇的程序id

m_dwprocessid = cdialogprogress::m_dwprocessid;

// 把本視窗設定為 目標程序名

setwindowtext(cdialogprogress::m_strprocessname);

// 開啟程序

m_pfinder->openprocess(m_dwprocessid);

}

對程序對話方塊的關聯類cdialogprogress進行編輯。對程序列表關聯變數m_lst,設定乙個程序id和雙擊列表項的事件處理函式onnmdblclklist1

public:

// 32位程序列表

clistctrl m_lst;

// 程序列表的圖示

cimagelist m_imglist;

// 獲取32位程序,並更新到程序列中

bool getprocesslist();

// 當選選中的程序的id

static dword m_dwprocessid;

// 錄脫選中的程序名

static cstring m_strprocessname;

// 雙擊程序列表事件(當選中了一行時, 設定 m_dwprocessid 和 m_strprocessname,並關閉本對話方塊)

afx_msg void onnmdblclklist1(nmhdr *pnmhdr, lresult *presult);

在getprocesslist()函式中讀取系統所有的32位程式並顯示在列表中,hh是乙個自定義的namespace,裡面包括一些判斷程序位數的方法。

/ 通過程序快照,遍歷程序

// 並判斷程序是否是32位程序

// 如果是32位程序,則加入程序列表m_lst中

handle hprocesssnap;

processentry32 pe32;

if (hprocesssnap == invalid_handle_value)

// 獲得第乙個程序

pe32.dwsize = sizeof (processentry32);

if (!process32first (hprocesssnap, &pe32))

do }

// 插入新行

}else

}// 獲得下乙個程序

while (process32next (hprocesssnap, &pe32));

// 關閉 快照控制代碼

closehandle (hprocesssnap);

return(true);

}

初始化函式中新增:

// 控制項

// 設定控制項關聯的圖示列表,這樣才可以在每行的開頭顯示圖示

m_imglist.create (16, 16, ilc_color32, 1, 1);

m_lst.setimagelist (&m_imglist, lvsil_small);

}//列出程序

getprocesslist ();

開啟該對話方塊後,直接列出所有32位程序:

修改程式需要通過輸入變數值對變數位址進行搜尋來定位控制當前物體的變數位址。在主對話方塊設定搜尋值、搜尋範圍、值型別就可以進行首次搜尋。

比如陽光數為100,就可以輸入100點首次搜尋,可以獲得植物大戰殭屍程式程序當中所有值為100的變數位址。進度條顯示當前搜尋的進度。

新建乙個標頭檔案memfinder.h專門存放用於程序處理的**。

開啟程序

// 開啟程序

bool openprocess(dword dwprocessid)

// 開啟

m_hprocess = ::openprocess(process_vm_read | process_vm_write |

process_vm_operation | process_create_thread |

process_query_information,

false, dwprocessid);

if(isvalidhandle())

else

}

首次搜尋定義乙個public的

bool findfirst(dword dwprocessid, dword dwbegin, dword dwend, t value)

再定義乙個private的

bool _findfirst(dword dwprocessid, dword dwbegin, dword dwend, t value)

怎麼修改植物大戰殭屍 不是修改器修改

現在介紹下植物大戰殭屍的存檔 使用者的存檔被存放在userdata目錄下的userx.dat中 以二進位制的方式存放 第乙個使用者的存檔時user1.dat,第二個使用者的存檔時user2.dat,以此類推 存檔中部分資料資訊如下 前10個位元組代表金錢 第473個位元組代表肥料數,最小為232,此...

自己動手製作植物大戰殭屍簡單修改器 2

上次的內容自己動手製作植物大戰殭屍簡單修改器 地上物品的位址是 0x006a9ec0 0x768 0xe4 0xd8 i,假設為addr addr 0x18 為該物品是否可見,0為不可見,1為可見 addr 0x50 為該物品是否自動收集,1為自動收集 地上有效物品的數量的位址是 0x006a9ec...

植物大戰殭屍陽光修改

遊戲使用植物大戰殭屍年度版,修改器為ce7.1 1.進入遊戲,搜尋當前陽光數,我現在陽光數是25,ce 4位元組搜尋25 2.經過兩次搜尋得到乙個位址,這個位址就是陽光的記憶體位址 3.將位址加入修改列表右鍵點選 找出什麼改寫了這個位址 也可以直接在位址右鍵點選 回到遊戲在次撿取乙個陽光 3.撿到乙...