Тигрь, к тебе вопрос. У тебя в теме Руководство по написанию чит программ. Часть 1 by Тигрь! все описано, спасибо. Но опять же оффсеты, то ты там не описал. Можешь объяснить как с этим работать. Я нашел указатели, для примера взял значение хп.
набрал в поиск кол-во хп, нашел отсеял, взял уже из результата адрес и снова нашел, но уже не значение, а указатель. Вывел 3 результата. Как их испоьзовать, я в этом еще новенький. Знаю только делфи, недавно познакомился с указателями. Можно попросить пример использования чтения с клиента информации, а не только записи.
Я там видел у тебя такие значения $00D1B4F0 на найденые мною P000B1324 отличаются, я про формат. Как правильно их в надлежащую форму привести?
________________
[Ссылки могут видеть только зарегистрированные пользователи. ]
[Ссылки могут видеть только зарегистрированные пользователи. ]
[Ссылки могут видеть только зарегистрированные пользователи. ] Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
[Ссылки могут видеть только зарегистрированные пользователи. ] Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
Тигрь, к тебе вопрос. У тебя в теме Руководство по написанию чит программ. Часть 1 by Тигрь! все описано, спасибо. Но опять же оффсеты, то ты там не описал. Можешь объяснить как с этим работать. Я нашел указатели, для примера взял значение хп.
набрал в поиск кол-во хп, нашел отсеял, взял уже из результата адрес и снова нашел, но уже не значение, а указатель. Вывел 3 результата. Как их испоьзовать, я в этом еще новенький. Знаю только делфи, недавно познакомился с указателями. Можно попросить пример использования чтения с клиента информации, а не только записи.
Я там видел у тебя такие значения $00D1B4F0 на найденые мною P000B1324 отличаются, я про формат. Как правильно их в надлежащую форму привести?
Там в примере чтение и запись в память показана как делается. $00D1B4F0, знак $ Означает что записанное следом за ним число представлено в 16-ричной системе счисления. Просто вписываешь значение свое и все.
________________ Продаю приват читы для AION Absolute, desteny 3.5, Legend, Cataclysm, Ru, EU, NA Продаю многооконку на R2 Пишу читы на заказ под любые игры. Предложения в ЛС. Все мои читы/программы/статьи тут: Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
Написал 2 или более раз одно и то же мне в личку - улетел в блок. Не умеешь пользоваться личными сообщениями, не видишь отправленные, твои проблемы. Учись пользоваться форумом.
Может кто-нибудь пояснить, как от этого избавиться?
Ты не объявил переменную 'game'
________________
Не стремлюсь в подполье... Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
function GetModuleHandleEx(dwProcessID: DWord; pModuleName: PChar): DWord;
var
FSnapshotHandle: THandle;
FModuleEntry32 : TModuleEntry32;
ContinueLoop : Boolean; tpmSTR: PWideChar;
begin
Result := 0;
dwProcessID := GetProcessID(dwProcessID);
if (dwProcessID = 0) then
Exit;
FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPMODULE,dwProcessID);
FModuleEntry32.dwSize := Sizeof(FModuleEntry32);
ContinueLoop := Module32First(FSnapshotHandle,FModuleEntry32);
while ContinueLoop do begin
tpmSTR := FModuleEntry32.szModule;
tpmSTR := PWideChar(tpmSTR);
if (Pos(UpperCase(pModuleName),UpperCase(tpmSTR)) > 0) then
Result := FModuleEntry32.hModule;
ContinueLoop := Module32Next(FSnapshotHandle,FModuleEntry32);
end;
CloseHandle(FSnapshotHandle);
end;
Юзается как: hGame := GetModuleHandleEx(HWND_AionClient, PChar('game.dll'));
,где HWND_AionClient -хендл процесса клиента с правами на доступ(см. [Ссылки могут видеть только зарегистрированные пользователи. ])
________________
ʕ•ᴥ•ʔ Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
function GetModuleHandleEx(dwProcessID: DWord; pModuleName: PChar): DWord;
var
FSnapshotHandle: THandle;
FModuleEntry32 : TModuleEntry32;
ContinueLoop : Boolean; tpmSTR: PWideChar;
begin
Result := 0;
dwProcessID := GetProcessID(dwProcessID);
if (dwProcessID = 0) then
Exit;
FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPMODULE,dwProcessID);
FModuleEntry32.dwSize := Sizeof(FModuleEntry32);
ContinueLoop := Module32First(FSnapshotHandle,FModuleEntry32);
while ContinueLoop do begin
tpmSTR := FModuleEntry32.szModule;
tpmSTR := PWideChar(tpmSTR);
if (Pos(UpperCase(pModuleName),UpperCase(tpmSTR)) > 0) then
Result := FModuleEntry32.hModule;
ContinueLoop := Module32Next(FSnapshotHandle,FModuleEntry32);
end;
CloseHandle(FSnapshotHandle);
end;
Юзается как: hGame := GetModuleHandleEx(HWND_AionClient, PChar('game.dll'));
,где HWND_AionClient -хендл процесса клиента с правами на доступ(см. [Ссылки могут видеть только зарегистрированные пользователи. ])
function GetModuleAddress(iProcId: Cardinal; DllName: String): Cardinal;
var
hSnap: THandle;
cModule: ModuleEntry32;
begin
Result := 0;
hSnap := CreateToolHelp32Snapshot(TH32CS_SNAPMODULE, iProcId);
cModule.dwSize := SizeOf(cModule);
if Module32First(hSnap, cModule) then
begin
while Module32Next(hSnap, cModule) do
if cModule.szModule = DllName then
Result := Cardinal(cModule.modBaseAddr);
end;
CloseHandle(hSnap);
end;
________________
Не стремлюсь в подполье... Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
Последний раз редактировалось -Emp-; 16.07.2013 в 20:10.
Опять умоляю о хелпе, сейчас просто не понимаю, что я не так сделал. Перелопатил MSDN по ReadProcessMemory.
Но так и не могу понять, почему не читается =_=
Листинг
Код:
const Curr_HP = $10A2A84;
var
buf:byte;
hProcess,PID:dword;
BytesCount:cardinal;
Form1: TForm1;
base:integer;
..........
{Здесь получается хэндл окна и идиентификатор процесса(всё проверено, всё верно)}
..........
base:=GetModuleAddress(PID,'Game.dll');
ReadProcessMemory(PID,ptr(base+curr_hp),@buf,4,bytescount);
label1.caption:=inttostr(bytescount); {но выводится 0}
end;
Собственно не знаю в чём проблема, оффсет верен, добавил в CE, там всё работает. Буду рад, если кто-нибудь растолкует, что я делаю не так.
Посмотрел несколько листингов программ с использованием ReadProcessMemory, абсолютно всё так же как у меня, проверить работоспособность не могу, но по коду всё верно.
Добавлено через 21 час 32 минуты
Попробовал перевести базовый адрес в Hex систему, и сложить в ручную. Не помогло.
Последний раз редактировалось warenav; 21.07.2013 в 20:08.
Причина: Добавлено сообщение
Знаний в делфи у меня всё таки по-более будет, там хоть что-то могу. Хотя языки одинаковые практически, то есть нужно выучить лишь операторы обоих.
з.ы. а в чём всё таки проблема у меня?
Добавлено через 3 минуты
з.ы.ы. пользуюсь 2007ой, да.
Последний раз редактировалось warenav; 21.07.2013 в 20:56.
Причина: Добавлено сообщение
Опять умоляю о хелпе, сейчас просто не понимаю, что я не так сделал. Перелопатил MSDN по ReadProcessMemory.
Но так и не могу понять, почему не читается =_=
Листинг
Код:
const Curr_HP = $10A2A84;
var
buf:byte; - byte = 255(адрес сюда даже не влезит, нада Dword)
hProcess,PID:dword;
BytesCount:cardinal;
Form1: TForm1;
base:integer;
..........
{Здесь получается хэндл окна и идиентификатор процесса(всё проверено, всё верно)}
..........
base:=GetModuleAddress(PID,'Game.dll');
ReadProcessMemory(PID,ptr(base+curr_hp),@buf,4,bytescount); - buf - 1 байт, а читаешь 4 байта. И чего добиться хотел?
label1.caption:=inttostr(bytescount); {но выводится 0} - Он у тебя всегда будет 0, нас интересует адрес (это buf) а ник кол-во байтов.
end;
Собственно не знаю в чём проблема, оффсет верен, добавил в CE, там всё работает. Буду рад, если кто-нибудь растолкует, что я делаю не так.
Ахинеи понаписал)))
0 - выводится потому, что в GetModuleAddress мы юзаем ProcessID, а в ReadProcessMemory мы юзаем handle процесса. И выводим мы buf, а ни bytescount. Перечитай функцию ReadProcessMemory и посмотри примеры различные.
Вот тебе пример. Должен работать, сам не проверял:
WindowName := FindWindow(nil, 'Окно');
if WindowName <> 0 then
begin
ThreadId := GetWindowThreadProcessId(WindowName, @ProcessId);
HandleWindow := OpenProcess(PROCESS_ALL_ACCESS, False, ProcessId);
base := GetModuleAddress(ProcessId, 'Game.dll');
ReadProcessMemory(HandleWindow, Ptr(base+$10A2A84), @buf, 4, bytescount);
label1.caption:=inttostr(buf);
end;
________________
Не стремлюсь в подполье... Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).