プロセスから 16 MB (FFFFFF) のメモリを読み取り、それを配列に格納します。配列内を検索すると、配列 [i] のように、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()); } }
なにが問題ですか??誰かが私を助けることができますか?なぜうまくいかないのか