
05.06.2011, 16:23
|
Прохожий
|
|
Регистрация: 05.06.2011
Сообщения: 1
Репутация: 10
|
|
поис значения адреса
в игре л2 нашол адреса и через арт моней про смотрел значения и всё прекрасно смотрелось, когда я попробовал сделать это своей прогой тоничего не вышло, точней она запускается работает но вместо значений выводит нули вот исход
Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;
type
TForm1 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Button1: TButton;
Edit3: TEdit;
Edit4: TEdit;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
WindowName: integer;// Для удобства объявим как глобальные переменные.
ProcessId: integer; // Все эти переменные нужны для того, чтобы найти
ThreadId: integer; // процесс с игрой.
HandleWindow: Integer; //
read: cardinal; // В эту переменную попадёт количество записанных байтов.
bufX: LongWord;
bufY: LongWord;
const
WindowTitle = 'Lineage II'; // Заголовок окна с игрой
koordinataX = $0011F3F0;
koordinataY = $00127D18;
NumberOfBytes = 4; // Количество байт, которые будем заменять.
implementation
{$R *.dfm}
function EnableDebugPrivilege(const Value: Boolean): Boolean;
const
SE_DEBUG_NAME = 'SeDebugPrivilege';
var
hToken: THandle;
tp: TOKEN_PRIVILEGES;
d: DWORD;
begin
Result := False;
if OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, hToken) then
begin
tp.PrivilegeCount := 1;
LookupPrivilegeValue(nil, SE_DEBUG_NAME, tp.Privileges[0].Luid);
if Value then
tp.Privileges[0].Attributes := $00000002
else
tp.Privileges[0].Attributes := $80000000;
AdjustTokenPrivileges(hToken, False, tp, SizeOf(TOKEN_PRIVILEGES), nil, d);
if GetLastError = ERROR_SUCCESS then
begin
Result := True;
end;
CloseHandle(hToken);
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
EnableDebugPrivilege(True);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
WindowName := FindWindow(nil,WindowTitle);
If WindowName = 0 then begin // Если окошка у нас нет, то и изменять нечего.
Form1.Close;
end;
ThreadId := GetWindowThreadProcessId(WindowName,@ProcessId); // Ищем хэндл процесса
HandleWindow := OpenProcess(PROCESS_ALL_ACCESS,false,ProcessId); // с нашей игрой.
ReadProcessMemory(HandleWindow, ptr($0011F3F0), @bufX, 4, read);
Edit3.Text:=IntToStr(lStrLen(nil));
ReadProcessMemory(HandleWindow, ptr(koordinataY), @bufY, 4, read);
Edit4.Text:=IntToStr(lStrLen(nil));
Edit1.Text:=IntToStr(bufX);
Edit2.Text:=IntToStr(bufY);
end;
end.
Админ: Пользуемся тегам и для формления кода!
кто может помогите
как решить эту проблему надо чтоб выводились значение, что это может быть, защита или что то ещё, подскажите как её обойти и т.п
|