Посидев за компом окло 2 часов и съев весь пакет фисташек, я таки нашел то, что хотел. А точнее исходник Волл Хака...
Сразу говорю, ничего сверх магического не нашел (хотя бубен юзал и не раз).
На самом деле необходимо только прочитать/записать 3 значения из памяти (Х Y Z). Так как игру делали Корейцы (Корейский Рандом Самый Рандомный рандом в мире!), то в памяти координаты лежать не привычно для нас, а именно Х Z Y.
Читал значения так:
var
Wnd: HWND; // Handle Окна
ProcessId, hProcess, BitesRead: Cardinal; // ИД процесса, Handle Процесса, БайтПрочитано
Buffer: Single; // Считывать будем в эту переменную (Single - 4ех байтный тип)
begin
{ ПРОЦЕСС}
// находим окошко
Wnd := FindWindow(nil, 'RF Online');
// Находим поток процесса
GetWindowThreadProcessId(wnd, @ProcessId);
// находим процесс
hProcess := OpenProcess(PROCESS_ALL_ACCESS, False, ProcessId);
{ ЧТЕНИЕ }
// читаем кординату Х
ReadProcessMemory(hProcess, Pointer($02C216B0), @Buffer, 4, BitesRead);
edtX.Text := FloatToStr(Buffer); // выводим или запоминем ее
// координата Y
ReadProcessMemory(hProcess, Pointer($02C216B8), @Buffer, 4, BitesRead);
edtY.Text := FloatToStr(Buffer);
// а сдесь Z
ReadProcessMemory(hProcess, Pointer($02C216B4), @Buffer, 4, BitesRead);
edtZ.Text := FloatToStr(Buffer);
// освобождаем память
CloseHandle(hProcess);
end;
Записываются значения на место аналогично:
var
Wnd: HWND; // читай выше
ProcessId, hProcess, BitesRead: Cardinal;
Buffer: Single;
begin
{ ПРОЦЕСС }
Wnd := FindWindow(nil, 'RF Online');
GetWindowThreadProcessId(wnd, @ProcessId);
hProcess := OpenProcess(PROCESS_ALL_ACCESS, False, ProcessId);
{ ЗАПИСЬ }
// загоняем в переменную измененное знаечение кординаты Х
Buffer := StrToFloat(edtX.Text);
// пишем в память
WriteProcessMemory(hProcess, Pointer($02C216B0), @Buffer, 4, BitesRead);
// координата Y
Buffer := StrToFloat(edtY.Text);
WriteProcessMemory(hProcess, Pointer($02C216B8), @Buffer, 4, BitesRead);
// Z
Buffer := StrToFloat(edtZ.Text);
WriteProcessMemory(hProcess, Pointer($02C216B4), @Buffer, 4, BitesRead);
CloseHandle(hProcess);
end;
Этот код только визуально изменяет ваше положение на карте! Для реального же изменения либо надо юзать таймер, либо пакеты, либо бубен...
Как обычно жду ваши вопросы и спасибки Но помните ФЛУД - БАН!