L2PacketHackФорум программы L2PacketHack, всё что с ней связано находится тут.
Правила раздела!
Категорически запрещено:
* Просить пакеты/скрипты на шмот/адену/другие вещи;
* Просить (помочь) взломать/сломать сервак/аккаунт или раздеть/наказать кого-то на любом серваке;
* Просить научить работать с программой, если не понимаете элементарных вещей в отношениях клиент-сервер (так как, если вы их понимаете, то вопросов по основным возможностям программы быть недолжно);
* Все посты не удовлетворяющие этим запретам, а так же не относящиеся к теме будут удаляться при первой возможности.
* Запрещается создавать темы с просьбой выполнить какую-то работу за автора темы.
* Форум является средством общения и общего поиска решения. Вашу работу за Вас никто выполнять не будет.
* Данные запреты неподлежат обсуждению.
Подскажите как можно изменить пакет,
например клиент посылает изменяемый пакет 2E 00 00 00 79 34 15 00 22 05 11 48
нужно допустим заменить неизменные части 79 на 99 и 22 05 11 48 на 11 11 11 11 не трогая при этом остальной изменяемой части и отправить его серверу.
Если пакет неизменный трудностей с переделкой и отправкой нет, но немогу додуматься как переделать изменяемый пакет.
Подскажите как можно изменить пакет,
например клиент посылает изменяемый пакет 2E 00 00 00 79 34 15 00 22 05 11 48
нужно допустим заменить неизменные части 79 на 99 и 22 05 11 48 на 11 11 11 11 не трогая при этом остальной изменяемой части и отправить его серверу.
Если пакет неизменный трудностей с переделкой и отправкой нет, но немогу додуматься как переделать изменяемый пакет.
delphi Код:
Tип: 0x2E (RequestMagicSkillList)
Pазмер: 12+20002 c c: 0(0x00)0003 c c: 0(0x00)0004 c c: 0(0x00)0005 d CharID: 1389689(0x00153479)0009 d ObjectID: 1209074978(0x48110522)
delphi Код:
if(pck[1]=#$2E)and FromClient thenbegin
buf:=pck; //копируем пришедший пакет 2E 00 00 00 79 34 15 00 22 05 11 48
pck:=''; //удаляем//формат команды вставки данных WriteD(data, index: integer), по умолчанию index=0, index увеличивается на длину данных
WriteC($99, 5); //заменяем 79 на 99
WriteD($11111111, 9); //заменяем 22051148 на 11111111
SendToServer;
end;
Не совсем понял, зачем удалять старый пакет и посылать новый, если можно в проходящем заменить нужные байты.
З.Ы.: жаль, на мой вопрос так и нету ответа...
Дело в том, что функции WriteC, WriteD ... работают с переменной buf.
Потом, такой метод более унивесален. Используя переменные не надо думать как делить на байты.
По мне так проще добавить пару функций для работы с pck - это если какой-то большой скрипт. А для маленьких можно обойтись и побайтным изменением пакета.
В моем представлении, чем раньше пакет покинет скрипт, тем лучше. А в случае с заменой pck на buf - так я вообще не возьмусь утверждать, что этот пустой пакет так и не выйдет за пределы л2пнх. Кто знает, может его осколки все-таки долетят до сервера, а мне такой флуд не к чему. Впрочем, тут уже вопрос к разрабочтику: как обрабатываются пустые пакеты?
Вот так мне больше нравится:
Код:
if (pck[1]=#$2E) and FromClient then
begin
buf:=pck; //копируем пришедший пакет 2E 00 00 00 79 34 15 00 22 05 11 48
//формат команды вставки данных WriteD(data, index: integer), по умолчанию index=0, index увеличивается на длину данных
WriteC($99, 5); //заменяем 79 на 99
WriteD($11111111, 9); //заменяем 22051148 на 11111111
pck:=buf; //записываем в pck нужный пакет
exit;
end;
В моем представлении, чем раньше пакет покинет скрипт, тем лучше. А в случае с заменой pck на buf - так я вообще не возьмусь утверждать, что этот пустой пакет так и не выйдет за пределы л2пнх. Кто знает, может его осколки все-таки долетят до сервера, а мне такой флуд не к чему. Впрочем, тут уже вопрос к разрабочтику: как обрабатываются пустые пакеты?
При вызове метода SENDTOSERVER и т.п., пакет из переменной buf отправляется сразу, а переменная pck может долго обрабатываться в плагинах и других скриптах.
delphi Код:
if MethodName = 'SENDTOSERVER'thenbegin
buf:=TfsScript(Integer(Params[0])).Variables['buf'];
b:=TfsScript(Integer(Params[0])).Variables['ConnectID'];
SendPacket(Length(buf)+2,buf,b,True);
endelse
здрасте я играю набаттле форсе (интерлюд) и сегодня там сказали(XAMELuOH с этого форума ) что работает подмена покетов на точку можете мне нюбу обьеснить как и что делать