Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.10.06;
Скачать: CL | DM;

Вниз

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

 
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 вся ветка

Текущий архив: 2003.10.06;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.02 c
1-18300
REA
2003-09-24 20:08
2003.10.06
Сохранить CoolBar


1-18440
Kott
2003-09-25 01:31
2003.10.06
Помогите прлиз...


1-18470
Nucl
2003-09-23 18:04
2003.10.06
Быстро проверить что значение в строке это число


14-18571
iNew
2003-09-18 16:42
2003.10.06
Кто знает какую-нибудь прогу для общего тестирования системы.


1-18295
Niobe
2003-09-24 10:27
2003.10.06
Уважаемые мастера, не подскажете как избавиться отVCL60.bpl & RTL