|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
поис значения адреса
в игре л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. кто может помогите как решить эту проблему надо чтоб выводились значение, что это может быть, защита или что то ещё, подскажите как её обойти и т.п Последний раз редактировалось Admin, 05.06.2011 в 17:38. |
#2
|
||||
|
||||
Походу адрес указывается без учета ImageBase
Попробуй так PHP код:
Хорошо написанная программа не требует документации ICQ 9-184-668. |
#3
|
||||
|
||||
А не выйдет у вас нифига так. Ничего вы не поправите, а еще более того ваш ак заблокируют. Линейка все данные хранит на серваке, а клиент их только отображает и сколько вы там не меняйте на клиенте, серверу это по барабану.
Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |