[英]Writing process memory without WriteProcessMemory
我正在嘗試在不使用WriteProcessMemory()
函數的情況下編寫另一個進程內存。
我正在調用VirtualAllocEx()
以使用CreateRemoteThread()
將數據傳遞給我的線程。
WriteMemoryInfo* m = (WriteMemoryInfo*)VirtualAllocEx(
hProc,
NULL,
1024,
MEM_COMMIT | MEM_RESERVE,
PAGE_READWRITE
);
m->addr = FinalAddress; // Problem
m->data = Data; // Problem
m->length = Size; // Problem
HANDLE threadID = CreateRemoteThread(
hProc,
NULL,
0,
(LPTHREAD_START_ROUTINE)RemoteThread,
m,
NULL,
NULL
);
問題是,我無法使用VirtualAllocEx()
寫入新創建的內存,因為它不屬於我的進程。 解決方案是在這個內存上使用WriteProcessMemory()
,但這是我正在做的功能。
如何在沒有WriteProcessMemory()
情況下初始化此內存( m
變量WriteProcessMemory()
?
CreateRemoteThread()
和VirtualAllocEx(
) 將被歸類為與WriteProcessMemory()
一樣有風險,如果您正在使用這些,您也可以使用WriteProcessMemory()
。
CreateRemoteThread()
的lpParameter
參數采用一個指向要傳遞給函數的變量的指針。
如果您不想使用WriteProcessMemory()
您可以使用命令行參數啟動進程,將您想用於lpParameter
任何內容作為命令行參數傳遞。 它會存在於目標進程中,但進程將忽略它。
然后,您可以對該變量進行模式掃描以獲取地址,然后將此地址作為lpParameter
變量傳遞。
我的朋友 timb3r 與我分享了這個巧妙的技巧。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.