簡體   English   中英

在沒有 WriteProcessMemory 的情況下寫入進程內存

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM