Слышал про такой хак как ускоренный полет, якобы позволяет сходу набрать максимальную скорость полета, не затрачивая время на ускорение. Есть у кого информация по этому поводу?
И второй вопрос: интересует оффсет на информацию по оставшемуся времени замка
пробовал вместо base_add ставить game_add
так же пробовал варианты
mov ecx, dword ptr [base_add]
mov ecx, dword ptr [ecx+HostPlayer]
mov ecx, dword ptr [ecx+ActionArrOfs]
при
HostPlayer = $34
ActionArrOfs = $1128
а не легче ли использовать не инжект а пакеты?
Код:
Type
PParams = ^TParams;
TParams = packed record
WID: DWord;
Packet: array [0..256] of byte;
Param1,Param2,Param3: DWord;
Param5:DWord;
Param6: DWord;
Param4: array [1..256] of widechar;
BASE_ADD,Ofs,SendPacket:Pointer;
end;
////////////////////////////////////////////////////
procedure InjectFunc(ProcessID: Cardinal; Func, aParams: Pointer;
aParamsSize: DWord);
var
hThread: THandle;
lpNumberOfBytes: DWord;
ThreadAddr, ParamAddr: Pointer;
begin
if ProcessID<>0 then
begin
// ---- Выделяем место в памяти процесса, и записываем туда нашу функцию
ThreadAddr := VirtualAllocEx(ProcessID, nil, 256, MEM_COMMIT, PAGE_READWRITE);
WriteProcessMemory(ProcessID, ThreadAddr, Func, 256, lpNumberOfBytes);
// ---- Также запишем параметры к ней
ParamAddr := VirtualAllocEx(ProcessID, nil, aParamsSize, MEM_COMMIT, PAGE_READWRITE);
WriteProcessMemory(ProcessID, ParamAddr, aParams, aParamsSize, lpNumberOfBytes);
// ---- Создаем поток, в котором все это будет выполняться.
hThread := CreateRemoteThread(ProcessID, nil, 0, ThreadAddr, ParamAddr, 0, lpNumberOfBytes);
// ---- Ожидаем завершения функции
WaitForSingleObject(hThread, INFINITE);
// ---- подчищаем за собой
CloseHandle(hThread);
VirtualFreeEx(ProcessID, ParamAddr, 0, MEM_RELEASE);
VirtualFreeEx(ProcessID, ThreadAddr, 0, MEM_RELEASE);
end
end;
//////////////////////////////////////////////////////////////
procedure PacketCall(aPParams:PParams); stdcall;
var
CallAddress,pPacket,_BASE_ADD_,_Ofs,_SendPacket:Pointer;
Len:DWord;
begin
_SendPacket:=aPParams^.SendPacket;
CallAddress:=Pointer(_SendPacket); //адрес был устаревший
Len:=aPParams^.Param1;
_BASE_ADD_:=aPParams^.BASE_ADD;
_Ofs:=aPParams^.Ofs;
pPacket:=@aPParams^.Packet;
asm
pushad
mov ecx, _BASE_ADD_
mov ecx, dword ptr [ecx]
mov esi, _Ofs
mov ecx, dword ptr [ecx+esi] //20
push Len
push pPacket
call CallAddress
popad
end;
end;
procedure StrToByte(Packet:String; var aParams:TParams);
var
i:integer;
begin
try
i:=(length(Packet) div 2)-1;
aParams.Param1:=i+1;
for i:=0 to i do
aParams.Packet[i]:=strtoint('$'+Packet[i*2+1]+Packet[i*2+2]);
except
showmessage ('проблема в байтах');
end;
end;
procedure Packet(Packet: String);
var
aParams: TParams;
PID, hProcess: DWord;
begin
aParams.BASE_ADD := Pointer(BASE_ADD); //
aParams.Ofs :=Pointer(OffSets_Uchastvuelvotpravkepaketa); // 20
aParams.SendPacket:= Pointer(OffSets_SendPacket); // оффсет - sendcall
GetWindowThreadProcessId(WID, @PID);
hProcess:=OpenProcess(PROCESS_ALL_ACCESS, False, PID);
StrToByte(Packet,aParams);
InjectFunc(hProcess,@PacketCall,@aParams,sizeof(aParams));
CloseHandle(hProcess); //забыл дописать
end;
Код:
Packet('2900'+skillid(8-знаков)+'0001'+WID того кто в таргете (8 знаков));
покра немере я стараюсь всё делать в пакетах)
инжекты при каждой обнове меняюстя.. а пакеты практически не меняются (было только 1 раз, в выбросе предмета)
ну конечно , это моё мнение.
________________
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
Нет, конечно, не легче. При использовании инжекта, персонаж сам бежит к тому, кого атакует на доступное расстояние для применения скила. Пакет же просто не сработает. Т.е. при использовании пакетов это расстояние придется контролировать самому, что явно не айс.
если мне память не изменяет, то квадратные скобки в asm являются признаком косвенной адресации и в ecx будет записан не базовый адрес, а значение находящееся по этому адресу. Хотя мб и ошибаюсь.
________________
[Ссылки могут видеть только зарегистрированные пользователи. ]
Последний раз редактировалось gurin; 06.03.2013 в 22:59.
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий). - Совершенный автологин для Perfect World [RUOFF, PWI, Фришек 1.4.4 - 1.4.5]
--------------------------------------------
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий). - Патч на Горны, Красный (да и любой) чат, Анфриз, Бесконечный зум, Моментальный разгон на полете для RUOFF, PWI и прочих 1.4.6 и фришек 1.4.4, 1.4.5.
--------------------------------------------
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий). - патчер для серверов 1.4.5 и 1.4.4 работающий с включенной игрой.
--------------------------------------------
когда BaseAddr переменная а не контстанта то когда когда делал
Код:
mov ecx, dword ptr [BaseAddr]
у меня вылетал светофор
поэтому всегда делаю
Код:
mov ecx, BaseAddr
mov ecx, dword ptr [ecx]
Добавлено через 2 минуты
Цитата:
Сообщение от gurin
Нет, конечно, не легче. При использовании инжекта, персонаж сам бежит к тому, кого атакует на доступное расстояние для применения скила. Пакет же просто не сработает. Т.е. при использовании пакетов это расстояние придется контролировать самому, что явно не айс.
если мне память не изменяет, то квадратные скобки в asm являются признаком косвенной адресации и в ecx будет записан не базовый адрес, а значение находящееся по этому адресу. Хотя мб и ошибаюсь.
ясно , не знал , спасибо
Добавлено через 12 часов 7 минут
OffSets_GAME_ADD+OffSets_Player_ADD+OffSets_Invent ory_Array+OffSets_Yacheyka+$4*data+94 - Количество дырок в предмете в инвентаре
________________
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
Автор программы PwRuf - Bot и PwRuf - Crafter
Последний раз редактировалось rufat2005; 10.03.2013 в 17:41.
Причина: Добавлено сообщение
некорретно читаются данные о кол-во человек в группе
+0710 PartyMember, array /Структуры членов группы/
читаю по адресу
base_add + $1С + $34 + $710 + $18
если на персе нет бафов - информация правильная - когда он в пати и вне пати
если на персе бафы - информация портится, а именно - если он НЕ в пати -то кол-во членов пати равно кол-ву бафов. если вступает в пати - всё норм сразу становится
подскажите плиз, как это исправить, чтобы читать правильные данные?
up. обошёл баг через доп. условие - если по адресу PartyMember лежит 0 - то дальше не читаю. есть ли более правильный способ? сейчас боюсь, как бы подобное ещё где не вылезло...
Последний раз редактировалось yeyebvz; 10.03.2013 в 21:14.
если на персе нет бафов - информация правильная - когда он в пати и вне пати
если на персе бафы - информация портится, а именно - если он НЕ в пати -то кол-во членов пати равно кол-ву бафов. если вступает в пати - всё норм сразу становится
Все правильно, массив хранит данные именно для пати - зачем его читать, если перс не находится в пати?
Просто когда перс не в группе, предполагаю, что при чтении программа по офсетам заходит на другую структуру - поэтому и получаешь количество бафов.
ЗЫ Хотя как ты их получаешь, если в ПартиМембер находится 0? Это может быть что угодно...
Последний раз редактировалось sumikot; 10.03.2013 в 21:34.
когда BaseAddr переменная а не контстанта то когда когда делал
Код:
mov ecx, dword ptr [BaseAddr]
у меня вылетал светофор
Если глобальная переменная - то так и должно быть, т.к. эта процедура внедряется в код клиента, а клиент ничего о ваших переменных не знает. Копмилятор тоже ничего не скажет, т.к. в свою очередь не в курсе, где будет вызываться Ваша процедура.
________________
[Ссылки могут видеть только зарегистрированные пользователи. ]
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий). - Совершенный автологин для Perfect World [RUOFF, PWI, Фришек 1.4.4 - 1.4.5]
--------------------------------------------
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий). - Патч на Горны, Красный (да и любой) чат, Анфриз, Бесконечный зум, Моментальный разгон на полете для RUOFF, PWI и прочих 1.4.6 и фришек 1.4.4, 1.4.5.
--------------------------------------------
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий). - патчер для серверов 1.4.5 и 1.4.4 работающий с включенной игрой.
--------------------------------------------
Что это значит "флаг использования автоатаки"? Что он дает?
ну когда чар бьет автоатакой там прописывается еденичка
на счет полезности не знаю, но у меня кликер(автоатака 3 чи) работает на этом смещении и проверке на наличие 300 ярости
Ч
Цитата:
то есть бз ?
бз есть безопасная зона но я ошибся 6E4 тоже типа byte указывает на флаг боевово статуса.. просто сразу после атаки бежал в пис зону