Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2003.10.06;
Скачать: [xml.tar.bz2];

Вниз

Редактор памяти   Найти похожие ветки 

 
D ick   (2003-07-31 14:09) [0]

При изменении какого то адресса при запуске игрушки таким способом:
Var WindowName : integer;
ProcessId : integer;
ThreadId : integer;
buf : PChar;
HandleWindow : Integer;
write : cardinal;
Const WindowTitle = "Quake 2";
Address = $00AF06D6;
PokeValue = $С8;
NumberOfBytes = 2;

procedure TForm1.Button1Click(Sender: TObject);
begin
WindowName := FindWindow(nil,WindowTitle);
If WindowName = 0 then
begin
MessageDlg("......!!!!!!!.......", mtwarning,[mbOK],0);
( WindowName,@ProcessId) При изменении какого то адресса при запуске игрушки таким способом:
Var WindowName : integer;
ProcessId : integer;
ThreadId : integer;
buf : PChar;
HandleWindow : Integer;
write : cardinal;
Const WindowTitle = "Quake 2";
Address = $00AF06D6;
PokeValue = $С8;
NumberOfBytes = 2;

procedure TForm1.Button1Click(Sender: TObject);
begin
WindowName := FindWindow(nil,WindowTitle);
If WindowName = 0 then
begin
MessageDlg("......!!!!!!!.......", mtwarning,[mbOK],0);
end;
ThreadId := GetWindowThreadProcessId(WindowName,@ProcessId);
HandleWindow := OpenProcess(PROCESS_ALL_ACCESS,False,ProcessId);
GetMem(buf,2);
buf^ := Chr(PokeValue);
WriteProcessMemory(HandleWindow,ptr(Address),buf,NumberOfBytes,write);
FreeMem(buf);
CloseHandle(HandleWindow);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
ThreadId := GetWindowThreadProcessId(WindowName,@ProcessId);
HandleWindow := OpenProcess(PROCESS_ALL_ACCESS,False,ProcessId);
end;
изменить адресс не получается, хотя в например ArtMoney показывает что он изменился. Может есть другой способ изменить адресс, что неправильно в этом?
З.Ы.: Этот код писал не я, вытащил из какойто статьи


 
AlexRush   (2003-07-31 14:29) [1]

WriteProcessMemory... The handle must have PROCESS_VM_WRITE and PROCESS_VM_OPERATION access to the process.
А еще было бы неплохо проверять результат WriteProcessMemory If the function fails, the return value is zero. To get extended error information, call GetLastError.
И уж совсем хорошо было бы давать соответствующие смысловые имена своим переменым.
см. еще DebugActiveProcess


 
VMcL   (2003-07-31 14:51) [2]

>D ick © (31.07.03 14:09)

Вот что смущает:

buf^ := Chr(PokeValue);

то есть buf[0] = PokeValue, размер buf => 2, вопрос: а как же buf[1] ?


 
VMcL   (2003-07-31 14:53) [3]

>D ick © (31.07.03 14:09)

Далее: результаты всех функций следует проверять на успешность выполнения.



Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2003.10.06;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.008 c
14-18555
wl
2003-09-17 15:59
2003.10.06
Как запустить WinXP после установки Win2k


7-18646
mox
2003-07-23 19:27
2003.10.06
Последние буквы названия окна...


4-18687
gluka
2003-07-31 16:47
2003.10.06
Hook на WM_CREATE или HSHELL_WINDOWCREATED ?


4-18686
Delphi5.01
2003-08-01 20:26
2003.10.06
GetParent, a kak poluchit GetChild


14-18624
sancho
2003-09-17 15:30
2003.10.06
Вопрос к математикам





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский