私はメモリを読み取ろうとしていて、プログラムのEditboxから値を取得しようとしています。キャプション部分は機能しています。MyAddressの代わりに有効なアドレスを入力してテストしましたが、正常に機能しました。だから私が持っている唯一の問題はMyAddressです、ここにコードがあります。
HANDLE hProcess;
DWORD ProcessId;
int Base = 0;
char MyCaption[300];
char MyAddress[300];
GetDlgItemText(hDlg, 2, MyCaption, sizeof(MyCaption));
GetDlgItemText(hDlg, 3, MyAddress, sizeof(MyAddress));
HWND hWindow = FindWindow(NULL, MyCaption);
GetWindowThreadProcessId(hWindow, &ProcessId);
hProcess = OpenProcess(PROCESS_VM_OPERATION|PROCESS_VM_READ|PROCESS_VM_WRITE, FALSE, ProcessId);
ReadProcessMemory(hProcess, (void*)MyAddress, &Base, 4, NULL);
SetDlgItemInt(hDlg, 5, Base, TRUE);
関数が機能することを望んでいました。手動で住所を入力します。
void write(LPVOID addy) {
int Base = 0;
ReadProcessMemory(hProcess, addy, &Base, 4, NULL);
WriteProcessMemory(hProcess, (void*)(Base + 0x728), "\x88\x13\x00\x00", 4, NULL);
}
void ReadOpen(HWND hDlg)
{
DWORD ProcessId;
int Base = 0;
int Base2 = 0;
char MyCaption[300];
GetDlgItemText(hDlg, 2, MyCaption, sizeof(MyCaption));
HWND hWindow = FindWindow(NULL, MyCaption);
GetWindowThreadProcessId(hWindow, &ProcessId);
hProcess = OpenProcess(PROCESS_VM_OPERATION|PROCESS_VM_READ|PROCESS_VM_WRITE, FALSE, ProcessId);
int address = GetDlgItemInt(hDlg, 3, NULL, FALSE);
write((LPVOID)0x67FBF8);
}
アドレスの使用が機能しない
void write(LPVOID addy) {
int Base = 0;
ReadProcessMemory(hProcess, addy, &Base, 4, NULL);
WriteProcessMemory(hProcess, (void*)(Base + 0x728), "\x88\x13\x00\x00", 4, NULL);
}
void ReadOpen(HWND hDlg)
{
DWORD ProcessId;
int Base = 0;
int Base2 = 0;
char MyCaption[300];
GetDlgItemText(hDlg, 2, MyCaption, sizeof(MyCaption));
HWND hWindow = FindWindow(NULL, MyCaption);
GetWindowThreadProcessId(hWindow, &ProcessId);
hProcess = OpenProcess(PROCESS_VM_OPERATION|PROCESS_VM_READ|PROCESS_VM_WRITE, FALSE, ProcessId);
int address = GetDlgItemInt(hDlg, 3, NULL, FALSE);
write((LPVOID)address);
}
&addressの使用は機能しません。
void write(LPVOID addy) {
int Base = 0;
ReadProcessMemory(hProcess, addy, &Base, 4, NULL);
WriteProcessMemory(hProcess, (void*)(Base + 0x728), "\x88\x13\x00\x00", 4, NULL);
}
void ReadOpen(HWND hDlg)
{
DWORD ProcessId;
int Base = 0;
int Base2 = 0;
char MyCaption[300];
GetDlgItemText(hDlg, 2, MyCaption, sizeof(MyCaption));
HWND hWindow = FindWindow(NULL, MyCaption);
GetWindowThreadProcessId(hWindow, &ProcessId);
hProcess = OpenProcess(PROCESS_VM_OPERATION|PROCESS_VM_READ|PROCESS_VM_WRITE, FALSE, ProcessId);
int address = GetDlgItemInt(hDlg, 3, NULL, FALSE);
write((LPVOID)&address);
}