2012-05-15 17 views
0

我想從一個進程中讀取16 MB內存(FFFFFF)並將其存儲在數組中,方式是當我在數組內搜索時:array [i ],我將成爲真正的內存地址。將讀取內存過程存儲在一個緩衝區中,然後搜索它

假設我想從000000到FFFFFF搜索,我想讓這個跳轉sizeof(value),從該地址獲取地址並將其存儲在var中。

然後if(var == value)返回地址。

我有這個: ReadProcessMemory(phandle,(void *)address,buffer,0xFFFFFF,0);

編輯:

我有這個(由BlueWanderer答案):

class offset_buffer{ 
private: 
     char *buf; 
     int offset; 

public: 
     offset_buffer(char *in_buf, int in_offset) 
       : buf(in_buf), offset(in_offset){ 
     } 

     char & operator[](int in_index){ 
       return buf[in_index - offset]; 
     } 

     void setOffset(int off){ 
       offset=off; 
     } 

     void ReadMemory(){ 
       LPBYTE point; 
       DWORD primeiroAddress = 0x000000; 
       DWORD finalAddress = 0xFFFFFF; 
       //LPBYTE buffer = new BYTE[finalAddress-primeiroAddress]; 
       HANDLE phandle = OpenProcess(PROCESS_VM_READ,0,TargetPID); 
       ReadProcessMemory(phandle,(void*)primeiroAddress, buf, sizeof(buf), 0); 
       CloseHandle(phandle); 
     } 
}; 

main(){ 
char *buffer = new char[0xFFFFFFF-0x0000000]; 
int address = 0x0000000; 
offset_buffer b(buffer,address); 
std::ostringstream ss; 
int i=0; 
TListItem *ListIt; 
b.ReadMemory(); 
for(address=0x0000000;address<0xFFFFFFF;address+=sizeof(int)){ 
     if(b[address]==StrToInt(Edit1->Text.c_str())){ 
       ss << std::hex << address; 
       showValue(); 
       ss.str(std::string()); 
     } 
} 

有什麼不好?有人能幫我嗎?爲什麼它不起作用

+0

這應該很好地工作在索引中。 –

+0

那是什麼?它會工作,但我不知道我必須使用的類型,你能給我一個代碼especifying它嗎? –

+1

你是什麼意思「我將是真正的內存地址」?如果你想在另一個進程中找到一個特定的地址,你需要補償你的進程相對於另一個進程的16兆的基地址之間的差異。 'offset = address - their_base;無論* var =(無論*)(our_base + offset);' –

回答

1

你想要這樣的東西嗎?

class offset_buffer 
{ 
private: 
    char *buf; 
    int offset; 

public: 
    offset_buffer(char *in_buf, int in_offset) 
     : buf(in_buf), offset(in_offset) 
    { 
    } 

    char & operator[](int in_index) 
    { 
     return buf[in_index - offset]; 
    } 
}; 

它將映射您real address到陣列

offset_buffer b(buffer, address); 

if (b[0x0C2F8E3] == 123) return 0x0C2F8E3; 
+0

什麼是抵消?我使用那個? –

相關問題