Тема: L2PacketHack 3.5.x
Показать сообщение отдельно
Старый 01.08.2008, 12:17   #3
Рыцарь
 
Аватар для NLObP
 
Регистрация: 25.02.2008
Адрес: г.Волгоград
Сообщений: 2,009
Сказал Спасибо: 1,285
Имеет 1,458 спасибок в 793 сообщенях
NLObP пока неопределено
По умолчанию

Цитата:
Сообщение от QaK Посмотреть сообщение
это что, конкретно?
Теперь не надо писать длинные строчки в packets.ini, понимает циклы и функции в нем. Расшифровывает коды беря значения из items.ini, sysmsg.ini, skills.ini и т.д.

Цитата:
Сообщение от QaK Посмотреть сообщение
А и еще тут обсуждение где-то на форуме было - и предложили грузить расшифровку пакетов в начале загрузки ПНХ и при нажатии кнопочки - "перечитать из инишек"
Вот мне бы таких предложений и развернутых поподробнее. Чтобы воплотить можно было полегче. Многого даже в мыслях нет, а по готовой подсказке додумать могу.

Цитата:
Сообщение от QaK Посмотреть сообщение
Можно сделать возможность выбора инишек, т.е. сделать менюшку, в которой будет отображаться все Packet.ini, и выбирать из нее, ну и для ItemID, и прочих инишек можно то же самое.
Уже сейчас есть выбор, если стоит галочка Камаель, то при загрузке программы считывается packetst1.ini, иначе packets.ini. В принципе можно как у Саурона расписано в его ВПП по коду протокола линейки выбор сделать. Может даже одновременно разные загруженные попробовать сделать.

Вот была тема от OllyDebug про правку HookCode, так и заглохла.
Цитата:
Цитата:
Цитата:HookCode исправленный не выложишь тут ?
Хорошо, как домой дойду.
Ну на самом деле там не сложно:
проверка на опкод $E9 и длину инструкции 5 байт, затем вычисляем абсолютный адрес прыжка, вычитаем из него то куда сохраняем тру функцию и записываем $E9 + dword(результат).

delphi Код:
function HookCode(TargetProc, NewProc: pointer; var OldProc: pointer): boolean; var   Address: dword;   OldProtect: dword;   OldFunction: pointer;   Proc: pointer; begin   Result := False;   try     Proc := TargetProc;     //вычисляем адрес относительного (jmp near) перехода на новую функцию     Address := dword(NewProc) - dword(Proc) - 5;     if not VirtualProtect(Proc, 5, PAGE_EXECUTE_READWRITE, OldProtect) then begin       Exit;     end;     //создаем буффер для true функции     GetMem(OldFunction, 255);     //копируем первые 4 байта функции     dword(OldFunction^) := dword(Proc);     byte(pointer(dword(OldFunction) + 4)^) := SaveOldFunction(Proc, pointer(dword(OldFunction) + 5));         byte(Proc^) := $e9; //устанавливаем переход     dword(pointer(dword(Proc) + 1)^) := Address;     VirtualProtect(Proc, 5, OldProtect, OldProtect);     OldProc := pointer(dword(OldFunction) + 5);   except     Exit;   end;   Result := True; end;
Я так понял здесь надо изменять?
Код:
//вычисляем адрес относительного (jmp near) перехода на новую функцию
    Address := dword(NewProc) - dword(Proc) - 5;
Кто разъяснит, что именно надо в HookCode поправить, чтобы более корректно работало?

Добавлено через 57 секунд
Цитата:
Сообщение от Amorality Посмотреть сообщение
На абиссе пофиксили ПНХ дллкой под названием blinkw32.dll , хотелось бы увидеть в твоем ПНХ возможность обхода фикса если это возможно .. Жаль конечно
На х300 работает.

Последний раз редактировалось NLObP, 01.08.2008 в 12:19. Причина: Добавлено сообщение
NLObP вне форума   Ответить с цитированием
За это сообщение NLObP нажился 7 спасибками от: