Добавлено через 4 минуты
А и еще тут обсуждение где-то на форуме было - и предложили грузить расшифровку пакетов в начале загрузки ПНХ и при нажатии кнопочки - "перечитать из инишек"
Добавлено через 1 минуту
Можно сделать возможность выбора инишек, т.е. сделать менюшку, в которой будет отображаться все Packet.ini, и выбирать из нее, ну и для ItemID, и прочих инишек можно то же самое.
Теперь не надо писать длинные строчки в 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;
ifnot VirtualProtect(Proc, 5, PAGE_EXECUTE_READWRITE, OldProtect)thenbeginExit;
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);
exceptExit;
end;
Result := True;
end;
Я так понял здесь надо изменять?
Код:
//вычисляем адрес относительного (jmp near) перехода на новую функцию
Address := dword(NewProc) - dword(Proc) - 5;
Кто разъяснит, что именно надо в HookCode поправить, чтобы более корректно работало?
Добавлено через 57 секунд
Цитата:
Сообщение от Amorality
На абиссе пофиксили ПНХ дллкой под названием blinkw32.dll , хотелось бы увидеть в твоем ПНХ возможность обхода фикса если это возможно .. Жаль конечно
На х300 работает.
Последний раз редактировалось NLObP, 01.08.2008 в 12:19.
Причина: Добавлено сообщение
А и еще тут обсуждение где-то на форуме было - и предложили грузить расшифровку пакетов в начале загрузки ПНХ и при нажатии кнопочки - "перечитать из инишек"
Жто я предлогал сделать ini фалы по папкам и на главной странице загружать инишки присетами, или сделать выпадающие списки для каждого ini, фактически нужна переменная для пути к набору файлов или набор переменных для каждого из INI, КомбоБокс, и кнопка загрузить, устанавливающая переменную... и незабыть сделать аналог "По умолчанию"
Добавлено через 9 минут
кстати, очень неплохо получилось, даже без подсветки - логи вполне читаемы
Только вот что-то со скилами у мну не фурычит
d skillID: 1204 Unknown Skill
Последний раз редактировалось PanAm, 01.08.2008 в 14:08.
Причина: Добавлено сообщение
Теперь не надо писать длинные строчки в packets.ini, понимает циклы и функции в нем
В при выделении пакетов CharInfo и UserInfo пакетхак зацикливается вот в этом месте: h(cubics:For.0001)h(cubID).
Наверное это происходит из-за того, что если h(cubics:For.0001) равно нулю, то h(cubID) отсутствуют.
Последний раз редактировалось Emocean, 02.08.2008 в 19:34.