Relli
18.01.2013, 14:45
Я пишу на Delphi XE2/3.Почему я это говорю?Просто различается написание некоторых фун-ий,например IpNumberByte в Delphi 7 - значение DWORD,а в XE2/3 - NativeUint
Выкладываю видео,как искать значение:
oLP7Yw65G2s
--------------------------------------------------------
Приступаем к кодингу:
Нам потребуется 1 форма и 1 кнопка.
Процедура патча памяти(байты) Dinmait'а:
procedure MemoryPatch(hProcess, Addres: DWord; bytecode: string);
var
i: DWord;
bytecount: NativeUint;
buf: byte;
begin
i := (length(bytecode) div 2) - 1;
for i := 0 to i do
begin
buf := strtoint('$' + bytecode[i * 2 + 1] + bytecode[i * 2 + 2]);
writeprocessmemory(hProcess, ptr(Addres + i), @buf, 1, bytecount);
end;
end;
Процедура кнопки:
var
H: hwnd;
HandleProc, i, Pid: integer;
rw: NativeUint;
adress: integer;
begin
i := 1;
adress := $00435788; // адресс который изменяет состояние заморозки(2-ой адресс)
H := FindWindow('ElementClient Window', nil); // ищем окно с соответствующем ClassName
If H = 0 then // если не находим окно,то....
begin
MessageDlg('!', mtwarning, [mbOK], 0);
exit;
end
else
begin
GetWindowThreadProcessId(H, @Pid); // получаем ид
HandleProc := OpenProcess(PROCESS_ALL_ACCESS, False, Pid);// открываем процесс для чтения/записи
MemoryPatch(HandleProc, adress, '909090909090'); { юзаем процедуру Dinmait'а(прости,если криво написал) по изменению байтов в памяти,нопим ровно 6 байт(nop = 90)}
writeprocessmemory(HandleProc, ptr($00B4FA6C), @i, sizeof(i), rw); // изменяем текущее значение разморозки на 1
end;
end;
Собственно вот и все.
//Написал статью,т.к. очень многие спрашивают как сделать Unfreez
Выкладываю видео,как искать значение:
oLP7Yw65G2s
--------------------------------------------------------
Приступаем к кодингу:
Нам потребуется 1 форма и 1 кнопка.
Процедура патча памяти(байты) Dinmait'а:
procedure MemoryPatch(hProcess, Addres: DWord; bytecode: string);
var
i: DWord;
bytecount: NativeUint;
buf: byte;
begin
i := (length(bytecode) div 2) - 1;
for i := 0 to i do
begin
buf := strtoint('$' + bytecode[i * 2 + 1] + bytecode[i * 2 + 2]);
writeprocessmemory(hProcess, ptr(Addres + i), @buf, 1, bytecount);
end;
end;
Процедура кнопки:
var
H: hwnd;
HandleProc, i, Pid: integer;
rw: NativeUint;
adress: integer;
begin
i := 1;
adress := $00435788; // адресс который изменяет состояние заморозки(2-ой адресс)
H := FindWindow('ElementClient Window', nil); // ищем окно с соответствующем ClassName
If H = 0 then // если не находим окно,то....
begin
MessageDlg('!', mtwarning, [mbOK], 0);
exit;
end
else
begin
GetWindowThreadProcessId(H, @Pid); // получаем ид
HandleProc := OpenProcess(PROCESS_ALL_ACCESS, False, Pid);// открываем процесс для чтения/записи
MemoryPatch(HandleProc, adress, '909090909090'); { юзаем процедуру Dinmait'а(прости,если криво написал) по изменению байтов в памяти,нопим ровно 6 байт(nop = 90)}
writeprocessmemory(HandleProc, ptr($00B4FA6C), @i, sizeof(i), rw); // изменяем текущее значение разморозки на 1
end;
end;
Собственно вот и все.
//Написал статью,т.к. очень многие спрашивают как сделать Unfreez