0

私はメモリを読み取ろうとしていて、プログラムの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);
}
4

0 に答える 0