Просмотр полной версии : L2PacketHack 3.5.x
Да я заметил что LSP включаеться вроде как всего лишь записью 1го ключа в реестре.
По поводу inject - почему он не работает там где есть ГГ. Как ГГ находит что мы перехватили функцию из winsock connect?
Yegor, ГГ вроде сканирует несколько важных по его мнению функций на наличие джампов в начале и если находит то восстанавливает правильное начало функций
в число важных входит и connect
alexteam
02.05.2009, 12:58
ну неправильно через реестр с ним работать когда для этого есть намного более удобные API функции...
Ну, функции инсталяции там в отдельном юните, поправь того индуса, переписав его на свой лад..
а то индус кудато пропал.. видно опять какуюто глюкалку пишет :D
Вопрос. Мне потребовалось в TXorCodingOut.EncryptGP изменить размер пакета, как лучше это сделать? Через VirtualProtect и
copymemory(@size, @newsize, 4) ? ;)
или обьявить Size не как const а как var?
Во втором варианте мне кажется пакетхак это не проглотит?
alexteam
02.05.2009, 13:53
var надежнее.
Во втором варианте мне кажется пакетхак это не проглотит?он об этом и не узнает), const от var при передаче параметров отличаются только на этапе разработки, после компиляции между ними нет разници, ну развешто переменная переданная по const может быть в области памяти предназначенной только для чтения, но это только если переменная была константой на этапе разработки что к EncryptGP точно не относиться...
Добавлено через 1 минуту
ЗЫ тут тока другой вопрос - на сколько адекватно пакетхак воспримет изменение размера ибо я не помню кода вызывающего EncryptGP...
alexteam
02.05.2009, 23:19
ну, не особо то и получиться. во всяком случае у меня в коде так уж точно.
ибо.
xorS.DecryptGP(packet.data, Packet.Size - 2);
для того чтобы было возможно должно быть аля
temp := Packet.Size -2;
xorS.DecryptGP(packet.data, temp);
Packet.Size := temp + 2; //пакеты с длинной <= 2 будут всеравно игнорироваться.
alexteam, ага, не прокатит значит), хотя ошибок по идее тоже не вызовет...
alexteam
02.05.2009, 23:26
ну, вызывать то оно и не должно. переменная явно не в защищенной памяти так как считаеться во время вызова. но и толку от такого изменения тоже нет. результат не запишеться магическим образом обратно.. а уничтожиться оптимизатором по прыжку в стеке на уровень вверх.
В предыдущих версиях быда опция: "Пропускать логин - программа начинает работать после соединения с Game-Сервером". Кто подскажет для чего это? Из кода ниже тоже непонятно что оно делает ;).
//пропускать логин?
//если (пропускать логин и мы не в игре)
if isPassLogin and (not IsGamel) then
begin
//отсылаем данные, сначала длину, а потом сам пакет
send(CSockl,PacketB, 2, 0);
repeat
until send(CSockl, PacketB, recv(SSockl, PacketB, $FFFF, 0), 0)<=0;
end
else
begin//иначе (пропускать логин и мы в игре)
//прием пакетов
repeat
if not GetSocketData(SSockl, Packet.DataB, Packet.Size-2) then break;
if IsGamel
then PacketProcesor(PacketB, CSockl, id, 4)
else PacketProcesor(PacketB, CSockl, id, 2);
if not GetSocketData(SSockl, Packet, 2) then break;
//sendMSG('size: '+IntToStr(Packet.Size));
until False;
end;
Такое ощушение что изначально должна была быть возможность залогиниваться с помошью PH, но это так и не было реализовано.
Добавлено через 1 час 28 минут
И ещё просветите зачем функция:
function GetSocketData(Socket: TSocket; var Data; const Size: Word): Boolean;
var
Position: Word;
Len: Integer;
DataB: array[0..$5000] of Byte absolute Data;
begin
Result:=False;
Position:=0;
while Position<Size do begin
Len:=recv(Socket,DataB[Position],1,0);
if Len<=0 then Exit;
Inc(Position, Len);
end;
Result:=True;
end;
Я как понял она с помошью "recv" считывает нужное количество байт с сокета по 1 байту. Почему так сделали? Что случится если попытаться сразу считать необходимое кол-во байт одним махом.
зы: прошу прощения за обилие вопросов, приспичило разобраться с программой.
Yegor, хм, кстати да, надо бы заменить
Len:=recv(Socket,DataB[Position],1,0);
на
Len:=recv(Socket,DataB[Position],Size-Position,0);
А если так?
Len:=recv(Socket,DataB[0],Size,0);
Хотя зачем то же было сделано по 1 байту. Я так понял эта функция пытаеться считать не больше size байт с сокета но если данных будет меньше то цикл завершиться раньше:
if Len<=0 then Exit;
alexteam
03.05.2009, 12:40
лучше уж читать _все_ во временный буфер и потом разбирать на запчасти уже его.
в общем после 83й так и сделано..
Все что считывает эта функция за 1 вызов можно считать одним пакетом или необходимо как то вручную их разделать?
Киньте пожайлуста ссылкой на тему где описана структура пакетов Л2.
alexteam
03.05.2009, 13:10
[Size = длина пакета 2 байта][Data = данные пакета длинной size-2]
Все с логикой передачи приема пакетов разобрался. Пробовал считывать с сокета ровно столько сколько на него перешло и передавать сразу на 2ой сокет - не работает. Действительно приходиться читать сначала первые 2 байта (длину пакета) и считывать именно это количество байт.
Попутно вопрос. Почему на некоторых серверах (ГГ там нет), если внедрить inject - то даже после ввода логина и пароля клиент зависает, хотя ПХ пищет что этот коннект проигнорирован? Такое ощущение что клиент уже шлет в никуда и не получает ответ.
alexteam
04.05.2009, 00:48
нужно смотреть индивидуально. теории строить не особо хочется.
Прикольно когда инжектишь то на том сервере показываетт что проигнорирован конект на 2106. А если LSP то показываеться что оказываеться логин сервер на 4446 порту :D.
В релизах 102 и 106, возможно и во всех о которых мне неизвестно, обнаружен глюк.
Галка на пути к нюксор отключена.
Работа с равпакетами, выбераем работу с другой библиотекой шифрации.
Кнопка вжата. Если отжимаем кнопку, и перезагружаем равлог, продалжает расшифровывать с помощью внешней библиотеки.
alexteam
04.05.2009, 13:13
Sherman, поправил.
А можно последний измененный скомпелированный вариант выложить в скомпилированные версии?
alexteam
04.05.2009, 15:41
мне что опять дергать правки с 3.6 в 3.5 ?... пардон, но я пас..
Добавлено через 27 минут
хм, хотя.. я нашел где не высвобождался объектик при использовании сокетного движка.. и причину кушанья памяти.
так что скоро выложу.
Добавлено через 24 минуты
релиз l2phx.3.5.6.109
Revision: 112
Date: 13:39:37, 4 мая 2009 г.
Message:
[-] Утечка памяти при использовании сокетного движка
[-] Проблеммы с невхор в обработчике равлогов
[-] убрал кнопку "свернуть в трей" дабы люди c нестандартные темами винды не наблюдали аксес виолейшин на старте.
сменил дефолтный порт и дефолтный метод перехвата.
надеюсь все правильно.
если не возникнет проблем - через сутки убью старый с фтп.
В вашем классе TThread объявлены 2 поля XorS и XorС одинакого класса TCodingClass.
Кто нибуть знает зачем их 2?
alexteam
04.05.2009, 20:57
хы.
мы траффик модифицируем ведь ?.
если модифицируем значит на входе и на выходе ксоринг с разными ключами ?
вот поэтому и 2.
хы.
мы траффик модифицируем ведь ?.
если модифицируем значит на входе и на выходе ксоринг с разными ключами ?
вот поэтому и 2.
Ну не знаю, я проверил эти объекты через некоторое время работы - все их поля остаються с одинаковыми значениями.
alexteam
04.05.2009, 22:23
ага, они одинаковы. пока мы не вмешиваемся в траффик.
ты попытайся через отправку отправить хотябы 1 пакетик. и посмотри.
Да как раз попытался - действительно меняеться
Добавлено через 48 минут
Ураа!!! пол дня мучался наконецто паравильно дешифровал пакеты в своей мини программе. Оказалось ключ брал не с 4 а со второй позиции пакета. :rolleyes:
alexteam
04.05.2009, 23:31
хех..
в текущем пх класс TencDec в модуле uencdec - являеться "почти" компонентой предназначеной для дешифровки траффика.
ей нужно прилепить 2 проперти onNewPacket (вызываеться при декоде пакета) и onNewAction(вызываеться при получении имени соединения и еще чегото..), задать настройки через рекорд TEncDecSettings
и гонять через нее траффик с помощью ее же функций DecodePacket и EncodePacket.
как гонять - можно глянуть в usocketengine или udata.
все константы и структуры используемые ею можно найти в usharedstructs и несколько констант в uglobalfuncs
alexteam, осталось ли что то в программе от меня?)
ЗЫ кстати WM реквизиты мои из окна "О программе" думаю лучше уже убрать...
alexteam
05.05.2009, 00:51
xkor, да, конечно осталось! идея!!!. :D
ок. уберу %)
alexteam, хех, учитывая что саурон везде где может орёт что авторские права на идею пакетоперехватчика принадлежат ему великому от меня в проге ничего не осталось)))
Что если реализовать для удобства подобные функции:
unit L2Packets;
interface
type
RL2CharSelected = record
name,title:string;
charID,sessionID,clanID,sex,race,classID,x,y,z,sp, level,karma,int,str,con,men,dex,wit:longword;
currentHP,currentMP: Double;
end;
function GetL2CharSelected(const pck: string;var l2Obj: RL2CharSelected): boolean;
implementation
uses phxPlugins;
function GetL2CharSelected(const pck: string;var l2Obj: RL2CharSelected): boolean;
var
i: integer;
begin
Result:= false;
if pck[1] <> #$0B then exit;
i:= 2;
l2Obj.name:= ReadS(pck, i);
l2Obj.charID:= ReadD(pck, i);
l2Obj.title:= ReadS(pck, i);
l2Obj.sessionID:= ReadD(pck, i);
l2Obj.clanID:= ReadD(pck, i);
inc(i, 4);
l2Obj.sex:= ReadD(pck, i);
l2Obj.race:= ReadD(pck, i);
l2Obj.classID:= ReadD(pck, i);
inc(i, 4);
l2Obj.x:= ReadD(pck, i);
l2Obj.y:= ReadD(pck, i);
l2Obj.z:= ReadD(pck, i);
l2Obj.currentHP:= ReadF(pck, i);
l2Obj.currentMP:= ReadF(pck, i);
l2Obj.sp:= ReadD(pck, i);
inc(i, 8);
l2Obj.level:= ReadD(pck, i);
l2Obj.karma:= ReadD(pck, i);
inc(i, 4);
l2Obj.int:= ReadD(pck, i);
l2Obj.str:= ReadD(pck, i);
l2Obj.con:= ReadD(pck, i);
l2Obj.men:= ReadD(pck, i);
l2Obj.dex:= ReadD(pck, i);
l2Obj.wit:= ReadD(pck, i);
Result:= true;
end;
end.
зы: в функциях ReadS и.т.д. поправил что бы был инкремент передаваемого индекса на количество считанных байт.
dmitry501
05.05.2009, 06:08
Реализуй, ради бога. В скриптах делай что хочешь. В пакетхаке не надо. Если на твоем сервере структура пакета такая, то это не значит что ее надо железно в пакетхаке делать. Существуют сервера С1,С2,С3 и т.д. до CT2 final, кроме того есть множество серверов, типа абисса, C4+CT1,5 и т.д.
Это я привел пример для стандартного пакета из камаель - хелбоунд. Можно наклепать функция под разные протоколы и оформить их как разные модули. Конечно это лишняя работа, но зато размер скрипта станет меньше и он будет более читаемым. Я буду делать и подобные функции для модификации основных типов пакетов и даже создания некоторых с нуля.
alexteam
05.05.2009, 12:11
xkor,а, это тот дядка которй ломал когдато мною написаный "античит",... ух и шороху та глюкалка наделала, правда програминг был на уровне "дети, а вот туда лучше не смотреть"...
я того дядку вообще не уважаю.. у него толи комплекс неполноценности толь еще чего, прости господи, он мне чемто напоминает товарища Рак В.И. (есть у нас в городе архитектор такой) который заявил свои права на бмзшную серию (гостовскую). при чем никакого отношения к разработке этой серии он не имел.
alexteam, может на СВН ответвление (Branch?) сделать с кодом включающим паксскрипт, на случай появлении исправлений в текущей версии?
alexteam
05.05.2009, 12:33
сделаю. как только будет что бранчить %)
я вчера сел плотненько посидел за ним, ибо в последнее время из за работы мало уделял времени.
отключил дебаг, его не будет пока не найду способ ставить бряки в таймерах и в процедурах содержащих не threadsave вызовы.
ибо вылет всей проги из за переполнения стека - нехорошо. так что пока без дебага. и так прелестей хватает, имхо.
xkor,а, это тот дядка которй ломал когдато мною написаный "античит",... ух и шороху та глюкалка наделала, правда програминг был на уровне "дети, а вот туда лучше не смотреть"...
я того дядку вообще не уважаю.. у него толи комплекс неполноценности толь еще чего, прости господи, он мне чемто напоминает товарища Рак В.И. (есть у нас в городе архитектор такой) который заявил свои права на бмзшную серию (гостовскую). при чем никакого отношения к разработке этой серии он не имел.
угу на счет этого дядьки согласен :) меня на ач он забанил недавно хотя месяца 2-3 точно я там не постил, и причину бана поставил темку в которая была закрыта до того как я там зарегался, во номер! так что согласен может он и умный малый, но ему бы попроще стать. если у меня хобби проектировать фасадные системы это не значит что я их придумал, хотя изменения в технологию я иногда большие вношу :)
Можно и мне в клуб тех кто не любит саурона? Он бан мне влепил на ач за то что я там гайд по пх выложил :)
alexteam, скачал 109 версию. Прослушивать порт стоит 7788, в логе пишет "На 27678 зарегистрирован локальный сервер". Ставлю порт 7789, в логе пишет "На 27934 зарегистрирован локальный сервер". Вроде и не в хекс цифра порта. Так должно быть?
В редакторе скриптов в списке скриптов кнопка "Ниже" не работатет.
Лог пакетов, при включенной опции "Автоматически сохранять лог пакетов", так никуда и не сохраняется.
dmitry501
05.05.2009, 19:06
раз уж пошел оффтоп,
xkor,а, это тот дядка которй ломал когдато мною написаный "античит",... ух и шороху та глюкалка наделала, правда програминг был на уровне "дети, а вот туда лучше не смотреть"...
я того дядку вообще не уважаю.. у него толи комплекс неполноценности толь еще чего, прости господи, он мне чемто напоминает товарища Рак В.И. (есть у нас в городе архитектор такой) который заявил свои права на бмзшную серию (гостовскую). при чем никакого отношения к разработке этой серии он не имел.
Так это ты автор пресловутого "античита"? Тебя до сих пор на ПП некоторые ищут :)
Я уже писал об этом в сообщении 702 (http://coderx.ru/showpost.php?p=28569&postcount=702). На вкладке "посылка" при выборе направления посылки "серверу" пакет отображается (в правой части окна) как пакет для клиента, а когда выбрать направление "клиенту" то пакет будет отображается как для сервера. в 109 так и осталось.
И еще предложение: если убрана кнопочка "свернуть в трей", то в опциях программы можно добавить флажок "сворачиватся в трей" и чтоб программа сворачивалась в трей при нажатии стандартной кнопки.
alexteam
05.05.2009, 19:59
NLObP, поправил все описаное...
править в обоих сурсах сразу - зло както ((
dmitry501, если речь идет про чтото с копирайтами AT (дай бог памяти) имеющее консольную версию серверной части )для запуска на дебиане под вайном) то вроде мое детище, правдо недоработаное пипец.
Добавлено через 4 минуты
зы. такая же темка была и для муонлайн, и даже доработана.
кстати... здается я знаю у кого один нехороший человек спи**л идею внутреннего проксика
зы2. хай ищут. если проект и будет возобновлен то он будет закрытым, и будет делаться только для одного сервера.
Добавлено через 2 минуты
Я уже писал об этом в сообщении 702 (http://coderx.ru/showpost.php?p=28569&postcount=702). На вкладке "посылка" при выборе направления посылки "серверу" пакет отображается (в правой части окна) как пакет для клиента, а когда выбрать направление "клиенту" то пакет будет отображается как для сервера. в 109 так и осталось.
вот.. блин.. у в 3.6 это место поправлено..
а в 3.5 нет... одновременное редактирование - зло.. вечно забываеш чтото поправить в "другой" версии.
Добавлено через 51 секунду
И еще предложение: если убрана кнопочка "свернуть в трей", то в опциях программы можно добавить флажок "сворачиватся в трей" и чтоб программа сворачивалась в трей при нажатии стандартной кнопки.дабл клик на иконке в трее сворачивает ее в трей.
Добавлено через 39 минут
Релиз 3.5.7.110
Revision: 114
Date: 17:55:19, 5 мая 2009 г.
Message:
[-] кнопки "к серверу" и "к клиенту" были поменяны местами.
[-] автосохранение логов
[-] кнопка "вниз" в списке используемых скриптов.
[-] порт на который стартует пх теперь будет указыватся корректно.
alexteam, ты вторую выкладывай, мы её тестить начнем. =)
7.110 отлично работает :)
И опять предоложения по улутшению программы: сделать в меню в трее (которое вызывается при клике правой кнопкой мышки) побольше пунков.
Например добавить:
Опции
Показать лог L2ph
Показать лог RAW
Плагины -> список плагинов с возможностю их включить/выключить
Скрипты -> список скриптов с возможностю их включить/выключить
(вроде в 95 похожее было, незнаю почему убрали)
И еще... Есть окно Дополнительно>Процессы. Оно вроде как только для информации. А если сделать в этом окне дополнительные функции, напрмиер ставлю галочку возле процесса и пх весь его трафик начинает пропускать через себя (если это не сложно). Повысит универсальность программы :)
Объясните далекому зачем некоторые функции например по обновлению списка соеденений вызываються из потоков через SendMessage(...), почему не напрямую?
Yegor, для потокобезопасности. Потоки не могут изменять основную форму.
Интересно почему не могут? В чем подвох.
Yegor, почитай про потоки. Вот кусочек объяснения
Дело в том, что библиотека VCL, предоставляющая Delphi-приложениям различные визуальные компоненты, не является потокобезопасной. Это означает, что прямой вызов методов визуальных компонентов из различных потоков почти наверняка разрушит работу приложения. При работе с параллельными потоками требуется обеспечить синхронизацию таким образом, чтобы методы визуальных компонентов вызывались только из основного потока приложения (VCL-потока).
Здравствуйте.Я извиняюсь нечо непонимаю в програмирование.
у мне вопрос нельзя в проге по аналогу фильтр для просмотра пакетов
сделать также для блокирования пакетов. то есть ставиш галочку и пакет блокируется
TAMBIK, а смысл? тебе этот пакет все равно приходит (это если ты траф хочешь сэкономить), а заблокировать можно и в скрипте (для других нужд).
зачем скрипт если моно будит в проге убивать пакеты
ПРОСЬБА к разработчику Верните кнопку Запоминать пакеты
как до в 83 версии
скрипт убивать пакет чтоб выбирать можно какой
пример откуда взчть
или скрипт блокировать пакет будит когда я ставлю галочкув проге какой смотреть
Верните кнопку Запоминать пакеты
Есть такая (правее замочка, как и в старых версиях). В 110 версии работает нормально.
alexteam
06.05.2009, 14:32
учимся выражать свои мысли связано.
зачем скрипт если моно будит в проге убивать пакеты
затем что лично я такую функцию не намерен делать.
акак сделать скрипт чтоб ставил галочку какой пакет смотреть а в скрипте
он блокировался то есть инфа о том какой пакет блокировать в скрипт поступала из проги
//alexteam: написать скрипт создающий форму с перечнем пакетов загружаемых из packets.ini и в нем же и блокировать.
стоп оффтоп.
акак сделать скрипт чтоб ставил галочку какой пакет смотреть а в скрипте
он блокировался то есть инфа о том какой пакет блокировать в скрипт поступала из проги
В поиске третим постом (http://coderx.ru/showpost.php?p=27729&postcount=2) идет.
В поиске третим постом (http://coderx.ru/showpost.php?p=27729&postcount=2) идет.
эт я видил
там над номер пакета писать какой блокировать
а было бы удобно отметил в проге и все пакет заблокирован
если можно пример приведите как сделать как написал
/alexteam: написать скрипт создающий форму с перечнем пакетов загружаемых из packets.ini и в нем же и блокировать.
как менять номер пакета из проги
if FromClient and (pck[1]=#$0C) then pck:='';
alexteam
06.05.2009, 18:08
а на кой черт тебе из проги !?
СДЕЛАЙ ФОРМУ В СКРИПТЕ. и бери данные с нее.
и вообще - эта тема для кажется для багрепортов и предложений. твое предложение отвергнуто.
еще раз: стоп оффтоп.
Добавил всего 1 визуальный JV елемент на форму и программа сразу стала компилироваться в 5 раз дольше. :mad:
Кто нибуть сталкивался с вылетом АВ при массированном прохождении пакетов от сервера?
У меня после порядка 2-3 минут работы вылетает пакетхак. Релиз последний из выложеных 110 помоему. Пока локализовать ошибку не успел. Но м.б. есть какие то идеи? И эм... нубский вопрос а где в пакет хак галочка "запоминать пакеты" :)
alexteam
08.05.2009, 15:59
от сервера - не сталкивался.
недавно тестил утечку памяти. забежал в интерлюд локацию, врубил инвул и проагрил почти весь лес на себя. и ушел курить.
пх за 10 минут работы и такого издевательства над ним выжил.. куда уж массовей..
а кнопки запоминать пакеты там нет. в 3.6 есть.
от сервера - не сталкивался.
недавно тестил утечку памяти. забежал в интерлюд локацию, врубил инвул и проагрил почти весь лес на себя. и ушел курить.
пх за 10 минут работы и такого издевательства над ним выжил.. куда уж массовей..
а кнопки запоминать пакеты там нет. в 3.6 есть.
Я использовал l2phx.3.5.7.110 с newxor.dll
Смысл в том что спокойная беготня вполне нормально работает, и пакетхак ведет себя стабильно.
Ситуация с АВ возникала в Хирорифте например, или во время массовых замесов например за Антараса.
Хм... думаю надо смотреть в сторону newxor, единственное слабое место может быть лишь одно - смена ключей шифрования. Если существует более одного потока параллельно использующих один и тот же экземпляр TXorCoding или TXorCodingOut то в момент когда я делаю смену ключа посредством Move, другой поток может его читать.....
Вопрос в следующем, а может ли существовать в пакетхак параллельный поток использующий тот же экземпляр TXorCoding или TXorCodingOut ?
Sherman, а ты какие скрипты пользуешь в этот момент?
alexteam
08.05.2009, 19:59
а может ли существовать в пакетхак параллельный поток использующий тот же экземпляр TXorCoding или TXorCodingOut ?не должно. ибо пока не обработана порция данных - следующая порция не поступит на обработку.
в любом случае. смотри в сторону tcriticalsection и им подобных.
Sherman, а ты какие скрипты пользуешь в этот момент?
простой скрипт:
var
gObjID,gX,gY,gZ:Cardinal;
begin
if FromServer and (pck[1]=#$0C) then
begin
gObjID:=ReadD($6);
gX:=ReadD($E);
gY:=ReadD($12);
gZ:=ReadD($16);
PickUp(gObjID,gX,gY,gZ);
end;
end.
Xkor, почему-то по ссыке "Удобный просмотр через браузер тут (http://l2phx.pp.ru/wsvn/listing.php?repname=l2phx3&path=%2F&sc=1)" все время сообщение "The page you are looking for is temporarily unavailable. Please try again later."
alexteam
10.05.2009, 23:06
это "чтото" лежит... и пахнет...
хкор грит что апача..
Sherman, если это весь скрипт то я хз в чем трабла, у меня как правило траблы были во время осад только со спамом банок и автотаргетом :) пх загинался
NLObP, alexteam, угу, лежит, тока не апач а РНР, причем вчера лёг окончательно, теперь вообще не запускается сука, даже после переустановки(
alexteam
11.05.2009, 13:33
гадюшники подчисть ;)
alexteam, не нашел я никаких гадюшников...
alexteam
11.05.2009, 15:36
гадюшники - ака логи.
alexteam, РНР делал тока один лог, наделал 7 метров, я его удалил, ничего не изменилось...
alexteam
11.05.2009, 16:10
гм, а больше изменений в файловой системе он и не делает.
разве что mysql еще. (что более вероятно)
alexteam, mysql у меня вообще нет)
Подскажите пожалуйста, в Висте инжект работает или нет?
pcoder, а проверить самому никак? Где-то работает, где-то нет.
фух, PHP всё таки воскресил, правда хз как стабильно теперь будет пахать, думать он походу стал дольше...
короче удобный просмотр репозитория снова пашет
что-то я ничего не могу понять в последних версиях ПХ...
русоф смогли коректно вскрыть? если да то что в настройках ставить?
alexteam
12.05.2009, 22:30
надо будет убрать ту галочку с настроек, либо хотябы переименовать.
надо будет убрать ту галочку с настроек, либо хотябы переименовать.
Убирать не надо. ведь она для всех офов подходит, а на фришках еще нет такого (или не на всех).
ну по описанию я суть галочки понял :D
в настройках что надо прописывать? кста процес л2 называеться lineageii.exe а не l2.exe и нужен ли вообше инект, в дефолте он не включен... я в пх неочень хорошо розбираюсь, использовал только гибрид 2ух версий 3.4.1.6х на ява-криво-грации, немного помучался с версиями 7х-8х которые чз несколько мин после входа на русоф убивали клиент и ща немогу понят как вообше идет перехват в новых версиях :confused:
alexteam
12.05.2009, 23:14
плохо видно понял. если и дальше речь про руофф ведешь.
а по поводу lineageii.exe, инжекта я лучше вообще промолчу... ибо мне еще предупредилку за мат влепят...
Столкнулся с тем, что в лог не попадают пакеты, отправляемые с закладки. Есть сервера, где помимо смены ключей шифрования существует еще и подписывание пакетов, что вличет за собой увеличение длинны пакета. В таких случаях было бы удобно отображать, дла анализирования подписи, пакеты отправляемые через пакетхак в логах пакетхака.
.....
Только что понял что реализовать сложно, т.к. формирование подписи происходит в newxor перед шифрованием пакета, т.е. в лог такой пакет попадет в зашифрованном виде.
alexteam
13.05.2009, 12:58
очень странно. ибо первыми же строчками в отправке являются
Visual.AddPacketToAcum(Packet, not ToServer, EncDec);
Visual.processpacketfromacum;
добавляющие его в лог пакетов. с последующим отображением в списке.
очень странно. ибо первыми же строчками в отправке являются
Visual.AddPacketToAcum(Packet, not ToServer, EncDec);
Visual.processpacketfromacum;
добавляющие его в лог пакетов. с последующим отображением в списке.
Ты наверное имеешь ввиду оправку из скрипта. Из скриптов и плагинов пакет действительно в логе виден. А вот пакет, отправляемый из закладки посылка отправляется напрямую:
sendThis(HexToString(Memo4.Lines.Text));
где:
procedure TfVisual.sendThis(str: string);
var
Packet : TPacket;
begin
if Length(str)>=1 then
begin
if Assigned(currenttunel) then
begin
FillChar(Packet.PacketAsCharArray,$ffff,#0);
Packet.Size := length(str) + 2;
move(str[1],Packet.Data,Packet.Size - 2);
Ttunel(currenttunel).EncryptAndSend(Packet,ToServe r.Down);
end;
if Assigned(currentLSP) then
begin
FillChar(Packet.PacketAsCharArray,$ffff,#0);
Packet.Size := length(str) + 2;
move(str[1],Packet.Data,Packet.Size - 2);
TlspConnection(currentLSP).encryptAndSend(Packet, ToServer.Down);
end;
end;
end;
Красным пометил. Именно в этом методе формируется подпись и увеличивается длинна пакета. И интересно было бы видеть в логе сгенерированный в newxor.dll новый пакет.
гм...
Хотя.. для целей отладки можно заставить newxor просто писать лог
ЗЫ. Только заметил.... "ЭТО НЕ ЧИТ ФОРУМ" жжж прикольно )
//QaK: это тебе прикольно, а всех уже задрал отвечать на топы типа: дайте плз пакет на адену, ну очень надо
alexteam
13.05.2009, 17:34
может быть я тупой... может я очень тупой... но мля.. отправка и в скриптах, и в плагинах, и в табе "отправка" происходит через один метод EncryptAndSend и первыми строчками там - добавление пакета в "список пакетов".
Добавлено через 5 минут
...правда в 3.6...
Добавлено через 2 минуты
портировал этот кусок кода из 3.6
Добавлено через 2 минуты
тяжко возится с 2мя версиями одновременно.
по крайней мере... я помню что это делал раньше...
http://l2phx.pp.ru/wsvn/filedetails.php?repname=l2phx3&path=%2F3.6.x%2Funits%2Fusocketengine.pas
{ TODO : не проверено. отображение пакета при отправке }
//эта функция safecalled мессаги тут не надо
if assigned(Visual) then
begin
Visual.AddPacketToAcum(Packet, not ToServer, EncDec);
Visual.processpacketfromacum;
end;
if ToServer then
begin
EncDec.EncodePacket(Packet, PCK_GS_ToServer);
sSendTo := clientsocket;
end
else
begin
EncDec.EncodePacket(packet, PCK_GS_ToClient);
sSendTo := serversocket;
end;
EncodePacket в свою очередь вызывает:
CurrentCoddingClass.EncryptGP(Packet.data, Packet.Size - 2);
а у меня в EncryptGP при отправки пакета c ID=$C0 например генерируется подпись пакета состоящия из 6 word, я увеличиваю Packet.Size и дописываю в хвост Packet.data эти 6 слов. Но....
if assigned(Visual) then
begin
Visual.AddPacketToAcum(Packet, not ToServer, EncDec);
Visual.processpacketfromacum;
end;
вызывается до того как я изменил пакет... и в результате в логе оригинальный пакет. Я вот о чем.
я увеличиваю Packet.Size и дописываю в хвост Packet.data эти 6 слов.тут уже обсуждалось что newxor не может влиять на размер пакета...
xor, как говорилось одним из старых рыцарей королевства Дельфи, нельзя, но если очень хочется, то можно, например вот так:
procedure TXorCodingOut.EncryptGP(var Data; const Size: Word);
var
i:integer;
pck:array[0..$FFFF] of Byte absolute Data;
NewSize:word;
begin
case pck[0] of
$C0:
begin
if Size = 28 then
begin
NewSize:=39;//Size;
Sign(@pck);
copymemory(@Size, @NewSize, 2); //NewSize=39
end;
end;
end;
....
и погнали ксорить
Sherman, что ты с переменной Size не сделаешь она никак на Packet.Size в пакетхаке не повлияет ибо это отдельная переменная создающаяся при вызове CurrentCoddingClass.EncryptGP(Packet.data, Packet.Size - 2);
но ты прав в одном, если очень хочется, то:
procedure TXorCodingOut.EncryptGP(var Data; const Size: Word);
var
i:integer;
pck:array[0..$FFFF] of Byte absolute Data;
NewSize: PWord;
rSize: Word;
begin
rSize:=Size;
case pck[0] of
$C0:
begin
if rSize = 28 then
begin
rSize:=39;
NewSize:=PWord(@pck);
Dec(NewSize);
NewSize^:=rSize;
end;
end;
end;
....
и погнали ксорить, тока учитывая что размер не в Size а в rSize
Добавлено через 2 минуты
кстати что такое "Sign(@pck);"
Сигн, ф-ция генерации подписи...
кстати да.... спасибо за кусок варианта со сменой длинны...
не подумал я про это дело
Sherman, а ну тогда её тож там куда надо допишешь)
alexteam
13.05.2009, 20:56
модифицируй сразу саму функцию декода/енкода в пх. че уж там..
сурсы есть же.
модифицируй сразу саму функцию декода/енкода в пх. че уж там..
сурсы есть же.
пакетхак у меня не компелится :(
Через ОллиДбг смотрел, содержимое пакета у меня правельно меняется, т.е. pck указывает правельно. Ф-ция в конец пакета пишет подпись, с этим все нормально. Просто хотелось визуально увидить результат, т.к. для генерации подписи используется непосредсвенно библиотека защиты моего сервера.
alexteam
14.05.2009, 01:45
"Ф-ция в конец пакета пишет подпись, с этим все нормально."
размер только не меняется. и та "подпись" будет обрезана на дальнейших шагах.
В версии 3.5.9.113 в закладке Скрипт/скриптинг кнопка "обновить список" работает не корректо. Кинул в папку скриптов новый скрипт, а в списке не появляется. При клике на кнопку - список то уменьшается, то увеличивается. В папке 10 скриптов, при запуске пакетхака и открытии окна скриптов - показывает 7. Если свернуть и потом развернуть окно, то показывает 10 скриптов. Если нажать обновить, то сбрасывает до 7, иногда показывает 8 скриптов.
Уже писал но, возможно автор забыл ОГРОМНАЯ просьба добавить кнопку отключения анализа пакетов... так как варианти типа установки количекства анализируемих пакетов (MaxLinesInLog=300) пакетов в 1..10 в настройках ИМХО ето изврат так как бывает нада посмотреть что за пакети идут и каждий раз менять ини...
alexteam
15.05.2009, 13:49
NLObP, гляну.
Name4Me, в 3.6 есть.. и вообще... утечки памяти как бы нет. обработка пакета всеголишь заключается в помещении его в список... если чем-то мешает - отфильтруй все пакеты.
Без обид, на самом деле биг спс за програму. По ходу меня вполне устраивает 83 ревизия коей я пользуюсь... А относительно 100... то "утечки памяти как бы нет" ето не значит нет... согласен мож её нет но тогда почему прогама постоянно жрёт оперативку? И относительно "если чем-то мешает - отфильтруй все пакеты" я понимаю что заменить тормоз в машине можна якорем, или упором в столб или забор но имхо ето не выход.... В любой норм програме которая мониторит любой процес есть кнопка приостановки чтоб не жрала ресурсы... Хотя ето всё имхо и каждий так сказать ... как хочет :) без обид.
alexteam
15.05.2009, 22:41
А относительно 100
.100 это последняя ?.
.100 это последняя ?.
100 ето начиная с 100 ревизии, последня которую смотрел 113
alexteam
15.05.2009, 22:58
утечка в ревизии 112 была устранена. тобишь в 3.5.6
ты утверждаешь что до сих пор течет ? тобиш не топчется загзагообразно на месте (падая при очистке) а постоянно растет ?
Добавлено через 10 минут
извиняюсь.
в 3.6 не течет. в 3.5 течет.
забыл портировать код. сейчас исправлю и выложу билд.
Name4Me, в 3.6 есть.. и вообще... утечки памяти как бы нет. обработка пакета всеголишь заключается в помещении его в список... если чем-то мешает - отфильтруй все пакеты.
Кстати предложений вариант тож не работает так как даж если отфильтровать все пакети програма тож дуеться за 1 мин подключения размер вирос в 20 раз... и продолжает расти 5 мин размер увеличелся в 50 - 60 раз... и ето при том что в даной локации всего 30 чаров если зайти в город расти будет ещо бистрее...
alexteam
15.05.2009, 23:09
сомневался в словах потому что точно помнил что это правил, и тестировал.
дабы не быть голословным сравниваем procedure Ttunel.NewPacket
последнюю строчку в 3.6 (http://l2phx.pp.ru/wsvn/filedetails.php?repname=l2phx3&path=%2F3.6.x%2Funits%2Fusocketengine.pas&rev=123&sc=1) и 3.5 (http://l2phx.pp.ru/wsvn/filedetails.php?repname=l2phx3&path=%2F3.5.x%2Funits%2Fusocketengine.pas&rev=123&sc=1)
Добавлено через 40 секунд
я уже отписался... пардон... держать 2 версии и править одновременно обе - тяжело.
Добавлено через 7 минут
закомитил, закинул в файловый архив и на фтп.
кстати, оно дулось только при использовании сокетного движка. при работе с лсп все было нормально. :p
Только сейчас заметил на шоке немного не такой пакет CharInfo какой прописан в PHX. В поле Title получаеться текст только с 5ой буквы. Тоесть где то убрано чего то на 8 байт . Знать бы ещё что именно убрали.
Нашел! Во всяком случае на шоке эти 2 поля лишние
FlyRunSpd
FlyWalkSpd
Уберите определение этих полей из этого пакета.
//alexteam: а пакетхак предназначен предназначен для использовании только на шоке ?
Добавлено через 20 минут
Значит можно добавить PacketsShock.ini ;).
Понятно что не только для шока, но все таки этот сайт с большим уклоном к шоку как я заметил.
А на другихсервах может тоже так будет?
Yegor, каждый волен, под свой сервер, править все *.ini файлы
vovanchik
17.05.2009, 19:33
Кстати предложений вариант тож не работает так как даж если отфильтровать все пакети програма тож дуеться за 1 мин подключения размер вирос в 20 раз... и продолжает расти 5 мин размер увеличелся в 50 - 60 раз... и ето при том что в даной локации всего 30 чаров если зайти в город расти будет ещо бистрее...
может вообще пора mysql прикрутить :)
alexteam
17.05.2009, 20:24
куда прикрутить ?
mysql база пакетов это уже перебор...
vovanchik, mysql мда крути.
alexteam
17.05.2009, 22:52
xkor,а че так слабо берешь ? фильтры, настройки, все инишки.. скрипты.. все на майскуель :p
зы. если комуто поддержка скуеля нужна - плагины в зубы и вперед нращивать потенциал скриптового двигла. никто не ограничивает.
Я делал програмку для себя по созданию плей листов для винампа на основе имеющейся на Пк музыки, так тоже заморочился и зделал используя БД. Прикольно получилось. Но тут я думаю это лишнее.
У меня возник вопрос: пропускается ли пакет отправленый с вкладки "посылка" через включенные скрипты?
И в связи с этим вопросом появилось предложние :) Добавить в опциях галочку "Не обрабатывать пакет с владки "посылка" скриптами". Галочка снята - пакет проходит через все включенные скрипты и потом на сервер, галочка стоит - пакет идет сразу на сервер.
не вижу смысла обрабатывать такой пакет скриптами...
А смысл все-таки есть ) Проверка скриптов упростится чуть. Например, я хочу проверить верно ли скрипт среагирует на какой-то пакет от сервера, мне не надо будет в клиенте выполнять какие-то действия чтоб такой пакет пришел, просто в опциях поставлю галочку и отошлю нужный пакет, сразу наглядно увижу что произойдет. Аналогично и со стороны клиента.
Еще можно на вкладке "посылка" сделать возможность вводить количество отправок. Когда пакеты отправляться заданное количество раз вырубать таймер отправки и прекращать их отправлять. 0 раз - безконечно отправляет, пока руками не вырубить таймер(как сейчас).
alexteam
19.05.2009, 12:40
А смысл все-таки есть ) Проверка скриптов упростится чуть. Например, я хочу проверить верно ли скрипт среагирует на какой-то пакет от сервера, мне не надо будет в клиенте выполнять какие-то действия чтоб такой пакет пришел, просто в опциях поставлю галочку и отошлю нужный пакет, сразу наглядно увижу что произойдет. Аналогично и со стороны клиента.
подумаю -)
Еще можно на вкладке "посылка" сделать возможность вводить количество отправок. Когда пакеты отправляться заданное количество раз вырубать таймер отправки и прекращать их отправлять. 0 раз - безконечно отправляет, пока руками не вырубить таймер(как сейчас).
скрипты зачем ?
Добавлено через 43 секунды
NLObP, я пользуюсь тем что на фтпхе. на бдс2к6.
Выложил на ФТП и СВН.
3.5.10.115
Author: nlobp
Date: 02:55:00, 20 мая 2009 г.
Message:
[-] при выборе библиотеки перехвата пропадала возможность повторной работы с диалогом выбора библиотеки
[+] выгружается LSP библиотека после завершения работы программы
//alexteam: ..релиз забыл сменить...
+выгружать библиотеку - лишнее. во всяком случа по дефолту.. сделаю пожалуй галочку..
обосновать - легко. допустим есть ланчер который сканирует процессы при запуске линейки.
т.е. при запуске ланчера пх должен быть выкл.:tease:
alexteam
20.05.2009, 12:30
э...
обьясни мне...
какой смысл было править с
procedure TfSettings.ChkLSPInterceptClick(Sender: TObject);
begin
isLSP.Enabled := not ChkLSPIntercept.Checked;
BtnLsp.Enabled := not ChkLSPIntercept.Checked;
if ChkLSPIntercept.Checked then
begin
ChkSocks5.Checked := false;
ChkIntercept.Checked := false;
end;
dmData.LSPControl.setlspstate(ChkLSPIntercept.Chec ked);
end;
на
procedure TfSettings.ChkLSPInterceptClick(Sender: TObject);
begin
if ChkLSPIntercept.Checked then
begin
isLSP.Enabled := false;
BtnLsp.Enabled := false;
ChkSocks5.Checked := false;
ChkIntercept.Checked := false;
end else
begin
isLSP.Enabled := true;
BtnLsp.Enabled := true;
end;
dmData.LSPControl.setlspstate(ChkLSPIntercept.Chec ked);
end;
:(
Добавлено через 1 минуту
порадовало:
if ChkLSPIntercept.Checked then
dmData.LSPControl.setlspstate(not ChkLSPIntercept.Checked);
:D
alexteam, по поводу выгрузки. Мне не понравилось, что в то время когда не нужен пакетхак, библиотека перехвата все равно установлена.
PS: Напаролся на косяк. Не знаю почему пакетхак стал писать, что у меня нет прав на правку реестра. Галочку LSP снять нельзя. Долго не мог понять почему, пока не глянул в лог. Полази в реестре и потер все вхождения path=lspprovider.dll. После этого пакетхак перестал ругаться на невозможность редактирования реестра и дал возможность снять/поставить галочку LSP. Может быть это из-за того, что библиотека устанавливалась из одной папки, а я хотел выгрузить из другой? (У меня много версий ПХ и все в разных папках.)
Добавлено через 23 минуты
э...
обьясни мне...
какой смысл было править
Наверное не было. Тогда и здесь надо для однообразия исправить на это
procedure TfSettings.iInjectClick(Sender: TObject);
begin
if iInject.Checked then
if not LoadLibraryInject (isInject.Text) then iInject.Checked := false
else
begin
ChkIntercept.Checked := false;
FreeMem(pInjectDll);
pInjectDll := nil;
AddToLog(format(rsUnLoadDllSuccessfully,[isInject.Text]));
end;
isInject.Enabled := not iInject.Checked;
BtnInject.Enabled := not iInject.Checked;
HookMethod.Enabled := iInject.Checked;
ChkIntercept.Enabled := iInject.Checked;
JvSpinEdit1.Enabled := iInject.Checked;
if not InterfaceEnabled then exit;
GenerateSettingsFromInterface;
end;
alexteam
20.05.2009, 14:32
Мне не понравилось, что в то время когда не нужен пакетхак, библиотека перехвата все равно установлена.она не перехватывает функции в приложениях не отмеченых для перехвата. и тем более не делает это при отсутствии пх.
в любом случае.. вынес эту опцию в настройки..
Напаролся на косяк. Не знаю почему пакетхак стал писать, что у меня нет прав на правку реестра.там есть трабл... гляну чуть попожже...
Добавлено через 2 минуты
Тогда и здесь надо для однообразия исправить на этону...
...
if iInject.Checked then
if not LoadLibraryInject (isInject.Text) then iInject.Checked := false
else else
begin
....
Vklu4atel^^
20.05.2009, 14:34
Модификация L2phx 3.2.0 (Официальное продолжение программы)
Репозиторий находится тут (svn://l2phx.pp.ru/l2phx3/) (открывать через SVN клиент)
Удобный просмотр через браузер тут (http://l2phx.pp.ru/wsvn/listing.php?repname=l2phx3&path=%2F&sc=1)
Скомпилированные версии тут (http://l2phx.pp.ru/arhive/)
Есть ли предложения по модернизации существующего кода с описанием как должно и что хотелось бы заменить/добавить?
Программа пишется в среде Borland Developer Studio 2006 или 2007 с использованием следующих дополнительных библиотек компонентов:
- FastScript (http://fast-report.com/ru/products/fast-script.html)
- JCL (http://sourceforge.net/projects/jcl/)
- JVCL (http://sourceforge.net/projects/jvcl/)
Дополнительные компоненты брать тут (http://l2phx.pp.ru/arhive/components/).
так чот непоиму где скачать переделаную ???
Скомпилированные версии тут
В этой строчке ссылка на ФТП с готовыми прогами.
alexteam
20.05.2009, 14:39
и вообще.. там довольно много мест с дублями
работе не мешает.. но некрасиво...
меньше на перекуры надо было ходить -) и отвлекатся.
меньше на перекуры надо было ходить -) перекур это святое.
alexteam
20.05.2009, 21:09
угу.. покурил...
r126-129 релиз 3.5.11.118
[+] форма просмотрщика пакетов (такого же как и на панели отправка). вызываеться с главного меню.
убрал генерацию и вложение дебагинфы в 3.5
[+] Автодеинсталл лсп модуля вынесена как опция
небольшие правки..
Добавлено через 4 минуты
чтот как то мелко плаваем -(
Как понять "мелко плаваем" ?
Добавлено через 2 часа 54 минуты
Подборка багов в связи с добавлением окна. (сильно не бейте)
Скрин_http://i069.radikal.ru/0905/c5/c129712275c0.gif
Обьясняю на примере пакета CreatureSay (грация). Когда выбрать сервер>клиент тип пакета отображается верно, но самой структуры нету. Когда выбрать клиент>сервер тип опять отображается верно (он и должен говорить что пакет неизвесный) и отображается структура (которой по идее не должно быть в неизвестном пакете).
В поле где вписывается пакет нельзя писать пробела. В тоже время, с буфера обмена туда можно вставлять даже картинки :)) Текст вставляется с сохранием форматирования (цвет/размер/шрифт). Скрин_http://i043.radikal.ru/0905/95/1dfeccda5cbf.gif
alexteam
21.05.2009, 13:35
ну забыл я отключить поддержку ртф и прочей ериси...
ну и что..
гляну.. но ужо завтра. %)
Добавлено через 1 минуту
да и с кнопочками.. напутал малех :rolleyes:
Добавлено через 11 часов 33 минуты
кстати... бага связана с фиксом вотэтого http://coderx.ru/showpost.php?p=29313&postcount=792
там была такая же проблема.. только из за описания... я ее пофиксил неверно.. вот вылез косяк -)))
Добавлено через 17 минут
поправил.. перезалил под той же версией..
чтот как то мелко плаваем -(
А по крупному - полностью переписать обработку пакетов в newxor.dll может попробовать? Сейчас от клиента первый пакет (ProtocolVersion) не обрабытывается, имя соединения генерируется в программе, а если это переместить в DLL то будет гораздо удобней работать, например можно просто сделать автоопределения протокола (хроник) - со всеми вытекающими. А если еще через newxor.dll добавить возможность пропускать трафик с других портов, как то - логин сервер, ШК, то у ПХ фактически не будет ограничений для работы хитрыми серверами.
alexteam, может после сообщения об отсутствии конфига выводить окно настроек, чтобы их сразу начали настраивать?
APXAHGEJI
22.05.2009, 20:10
У ЛСП глюки постоянные. При запуске любого скрипта у меня прописано выводить в чат сообщения о запуске, так вот эти сообщения обычно приходят абракадаброй или букв не хватает и не в тот чат, иногда бывает что он вообще оказывается в куче различных эфектов типа стана, рута, анчора и тд визуально. Это ладно клиенту такая фигня шлется, а если кривой пакет отощлется на серв, можно и автобан схлопотать. Не знаете почему такое может быть?
alexteam
22.05.2009, 21:29
да, знаем. и тщательно скрываем.
alexteam, лучше тщательно исправлять мне кажется)
alexteam
22.05.2009, 21:35
xkor, э, извини.. канеш.. но "извращенный дебаг" как в случае с корректором тут провернуть не удастся...
alexteam, хех, если багу не удаётся победить её надо записать в особенности программы)
ЗЫ и чего извращенного было в моём дебаге?)
ну не мог я сам у себя сотворить ситуацию чтоб корректор завис ибо ботов у меня почти нет, а так юзеры подсобили)
alexteam
22.05.2009, 23:35
alexteam, хех, если багу не удаётся победить её надо записать в особенности программы)
особенности программы в конкретно взятом случае =\
угу, особенность: "в случае ядерной войны программа может не работать")
Leprikon
01.06.2009, 19:10
Под руофф пнх по прежнему не работает, имея ввиду хотябы стабильный коннект, а так-же расшифровку пакетов от финала?
alexteam
01.06.2009, 19:14
хотябы стабильный коннект, а так-же расшифровку пакетов от финала
http://www.tiga.by/img/photo/2896b.jpg
Leprikon
01.06.2009, 19:42
Ну мало-ли вдруг все-таки это было реализованно, ведь народу на нем играет побольше, чем на всяких фришках и т.п. ...
А автоматической с электроприводом не найдеться, с пультом управления? :)
Зато ингейм бот там уже успешно работает, и геймгвард вообще при старте гасится.
Yegor, гасится наверн не ГГ а ШК?, ГГ то вообще отключается нафиг...
Я это и имел ввиду. Кстати кто нибудь может популярно объяснит что такое ГГ, даже на шоке приходят пакеты в начале типа GGRequest, правда клиент на него отвечает пакетом с нулями
Кстати кто нибудь может популярно объяснит что такое ГГ
http://ru.wikipedia.org/wiki/Gameguard
ratvier, ы, там и про пакетхак словечко замолвлено))
Если кому надо замените в PacketsT1.ini описание пакета на информацию о продаваемых всходах манора
было:
FE2C=ExShowSellCropList:h(subID)
мой вариант:
FE2C=ExShowSellCropList:h(subID)d(CurrentCastleID) d(CropCount:Loop.01.0012)d(ObjectID)d(CropID:Get.F unc01)d(Crop_Level)c(unknown)d(RewardItemCrop:Get. Func01)c(unknown)d(RewardItemCrop2:Get.Func01)d(un known)d(Remaining)d(BuyPrice)c(reward)d(MyCropsCou nt)
Есть одно пожелание.
Нельзя ли сделать чтобы изменения в файле скрипта автоматически обновлялись? Просто я текст скрипта пишу во внешнем редаторе и каждый раз чтобы добавить внесённые изменения приходится копировать весь скрипт и вставлять в L2PacketHack, что очень неудобно. Раньше, например в версии(3.4.1.70) скрит обновлялся автоматически.
alexteam, а что с опцией "не дешифровать трафик" она вообще работает? Пытаюсь пропустить через phx пакеты связи с логин сервером, для последующего анализа, но после первого пакета клиент сразу закрывается, видимо траффик все таки модифицируеться.
К тому же проблемма только при использовании LSP перехвата, с inject нормально. Если с LSP пропускать логин сервер и заходить на гейм сервер - тоже все ОК
Yegor, ну во первых логин с гейм сервером по часте шифрования не связан никак. а так попробуй УПХ там точно все работает что тебе надо
Grinch, и где он его возьмёт?)
alexteam
16.06.2009, 20:49
Релиз 3.5.12.120
Revision: 134
Author: alexteam
Date: 16:29:41, 16 июня 2009 г.
Message:
касаемо 3.5:
[-] исправлен баг с загрузкой скриптов. теперь при старте пх они загружаются и отмечаются к исполнению корректно
изменен способ определения главного окна пх из в инжект.длл
окно выбора языка [+] и окно настроек будет отображатся при первом старте пх.
в onpacket функцию плагинов теперь передается имя соединения (TOnPacket = procedure(const cnt: Cardinal; const fromServer: Boolean; const connectionname:string; var packet : tpacket); stdcall;)
[+] при получении фокуса редактором скрипта происходит проверка на изменение даты модификации файла. если она не совпадает с хранящейся датой в пх (файл был изменен внешней программой) выводиться запрос позволяющий перечитать файл.
правки переводов
Добавлено через 2 часа 8 минут
а... да.. совсем забыл
[+] Кнопочка обрабатывать пакеты.. как она мне дорога...
[+]возможность изменить заголовок главного окна в настройках.
Ммм Большой респект автору, но чот у меня не складиваються взаимоотношения сновим пкх...
Начну с спасибо за кнопку не обрабативать пакети (которую не плохо би подписать и сохранять состояние в настройках...), порадовала, но чот у меня при нажатии отрубились все кнопки на панели... лог очистить не льзя...
При первой попитке запустить плагин результат вирубился пкх, почитал изменил структуру процедури OnPacket пкх при включении плагина не вирубаеться но ни как на него не реагирует... Похоже поменялась не только процедура... Если можна виложите код шаблона рабочего плагина.
P.s. сори если где то тупанул чот заболел и голова варит плохо...
P.s.s. Понимаю что наверно раньше достал с кнопочкой которая "как она мне дорога..." Но имхо билоб очень неплохо вернуть Плагини на место :) А имено сделать не отдельной формой а закладкой или панелькой в просмотре... Имхо даж лучше панелькой, вобще форма для плагинов имхо ооч большая всё добро норм поместилось в панельке 160*200 имхо
alexteam
23.06.2009, 22:05
кнопки отключаются только по той причине что они не нужны..
думаю очистку лога исключу и вынесу состояние "новой кнопАчки" в настройки.. и ... включу showhint на ней... заодно..
и еще..
http://coderx.ru/showthread.php?t=1830
там где-то в конце я приводил пример..
а... да.. формочкой она и останется.. ибо ничего неудобного не вижу... если речь только в нежелании лезть в менюшку - юзаем горячие клавиши.
ММ вот подумал а можна компромис? а имено назначить гарячие клавиши включению викдючению плагинов например Ctrl+1 - первий и тд.... с главной форми а не форми плагинов?
Добавлено через 39 минут
ММ вопросик а чем обусловлен отход от номеров соединения 0...9 к у меня например 1756? И на сколько проблематично сделать как било?
Name4Me, номера теперь представляют собой хендлы сокетов вроде, а к старой системе не вернуться так как порядковый номер в массиве соединений теперь вроде может меняться при удалении предшествующих соединений, да и смысл возвращаться по моему отсутствует...
alexteam
24.06.2009, 12:28
смысла нет.
массива как такового тоже нет.
есть тлист. плюсы очевидны.
любителям красивых циферок рекомендую юзать 83й ревижин.
А как на щот гарячих клавишь?
[+]возможность изменить заголовок главного окна в настройках.
За это спасибо, но было бы хорошо если бы измененный заголовок сохранялся при закрытии Л2пх
alexteam
24.06.2009, 17:32
временно:
[general]
caption=blablabla
в сеттингс.ини.
ММ неплохо би сохранять положение основной форми и форми плагинов в сетингс, чтоб при загрузке они появлялись там где били закрити...
Name4Me, положение окон сохраняется.
ММ уменя v3.5.12.120 положение не сохраняеться хз почему...
Точнее не совсем коректно сохраняеться, положение на основном мониторе сохраняеться аесли переношу на другой нет... Исправте плз.
мм, тогда надо ещё номер монитора сохранять...
alexteam
24.06.2009, 23:01
прошу предоставить мне монитор.
ММ когда я в своей форме сохраняю координати
ml^.Add('Left='+inttostr(Form2.Left));
ml^.Add('Top='+inttostr(Form2.top));
ml^.SaveToFile(CurrentDir+'\Settings\My.ini');
то моя форма откриваеться на месте закрития...
мда, собрался я написать плагин для l2phx на C#, да крепко обломался
да, да именно на шарпе, методика экспорта функций у сборок есть
например, этот инструмент делает это автоматизированно
hxxp://netobf.com/obf_optimization_dllexport
А если руками хочется, то вот описание
hxxp://blog.undsoft.com/programming/export-managed-to-unmanaged/
А облом заключился в том что unmanaged не поддерживает соглашение о вызове fastcall :( То есть я не могу вызывать методы объекта TPluginStruct после получения его в SetStruct. В остальном то порядок, и пакеты могу смотреть и менять на лету. Через класс Marshal все волшебно делается.
Я так понял, что сейчас и на с++ не получится сделать, т.к. у него свои представления о fastcall
Может стоит пересмотреть политику в плане плагинов и сделать более открытым интерфейс для всех языков :)
И не использовать в нем частности тип string.
блин, хотел написать:
la2elpy, где в плагинах fastcall используется??, я почти все функции делал stdcall как раз для совместимости, и сомневаюсь чтобы alexteam это менялно оказывается alexteam зачем то оформил TPluginStruct как класс...
alexteam, зачем???
alexteam
25.06.2009, 12:43
"патамушо индус" ©....
чорт.. обратно менять чтоль...
xkor, а, ну да, очепятался, сорь =)
чорт.. обратно менять чтоль...теперь чтобы не уплыла совместимость с текущими плагинами придется погемороиться если делать и совместимость с другими языками...
alexteam
25.06.2009, 15:06
Хочешь занятся ? а то у меня на работе завал, так что я не скоро -)
не, я лучше буду доделывать uph
Добавлено через 2 минуты
а хотя там не много, посмотрю что можно сделать...
ppck:=@pck;
if (pck.size<3) or (fcl) then exit;
if (user[cnt]=nil) and (FromServer)
and ((pck.pckId=$32) or (pck.pckId=$2F) or (pck.pckId=$11))then Begin ...
Результат прихода пакета видаёт ошибку инвалид поинтер...?
P.s. Автор чото слишал о понятии совместимости.... Если меняем структури нада хотя б сделать нор их описание желательно с рабочими примерами а то уже вторие сутки питаюсь переделать плагин чтоб он работал в новой версии пкх :(
//QaK:не сцать =) у мну та же шняга с плугинами.EInvalidPointer, вроде ... мое скромное мнение - что-то с переменной "ps" типом TPluginStruct
Ок ждём исправлений :)
Угу, именно из-за того, что как класс...
Может тупой вопрос, а если в классе прямо дописать соглашение о вызове около его методов или нельзя так? Так бы можно было кидать в функции первый параметр this. Буду благодарен за исправленную версию :)
la2elpy, ну так впринципе можно, только класс станет не совместимым с уже написанными под него плагинами, хотя сдаётся мне основная часть плагинов всё таки была написана ещё до класса и луче наверно будет вернуться к структуре...
ЗЫ есть ещё вариант не гемороиться с этими структурами и их передачей а просто експортировать нужные функции в stdcall как я делаю в uph
Ну было бы здорово :)
А uph это что ?
la2elpy, UniPacketHack, типа универсальный а не заточеный под линейку, поддержка линейки будет в виде плагина...
ревизия 139:
[+] Плагин переходник (als.dll) экспортирующий функции пакетхака для возможности их использования из плагинов написанных на других языках (не на Delphi)
Сорци на SVN - http://l2phx.pp.ru/wsvn/filedetails.php?repname=l2phx3&path=%2F3.5.x%2FPluginCodding%2Fals.dpr&sc=1
а сама длл + сорци тут: http://l2phx.pp.ru/arhive/components/als.rar
Нашел баг в uPluginData.pas
dmData.SendPacket(packet, tid, False); <--- почему false а не ToServer
и еще
вот здесь
procedure TdmData.SendPacket
есть 2 строчки TlspConnection(LSPConnections.Items[i]).Visual.processpacketfromacum;
они избыточные, т.к. потом в TlspConnection(LSPConnections.Items[i]).encryptAndSend(Packet, toserver);
итак это дело вызывается, поэтому дублируется лог
alexteam
29.06.2009, 12:44
спасибо. поправил.
ММ я так понял пока в 122 ошибку в плагинах со труктурой ps не исправили?
Name4Me, а какая ошибка была со структурой???
Разобрался наконецто в пакете от сервера SystemMessage. Нашел как подставить правильные числовые параметры. Если это вам нужно напишите.
xkor, при обращении к ReadX/WriteX вылетало что-то типа EInvalidPointer
Разобрался наконецто в пакете от сервера SystemMessage. Нашел как подставить правильные числовые параметры. Если это вам нужно напишите.
Нужно, расскажи.
Tип: 0x62 (SystemMessage)
Pазмер: 43+2
Время прихода: 22:28:29:140
0002 d MsgID: $c1 получает от цели $c2 $s3 урона. ID:2262 (0x08D6)
0006 d typesCount: 3 (0x00000003)
0008 d typePar: тип параметра, может принимать значения:
0 - значит это строка (подставляеться вместо $cx)
1 - просто числовое значение (integer 4 байта) (подставляеться вместо $sx)
2 - id NPC (integer 4 байта) (подставляеться вместо $cx)
3 - id предмета (integer 4 байта) (подставляеться вместо $sx)
4 - id скила (integer 4 байта + ещё 4 байта которые я игнорирую) (подставляеться вместо $sx)
7 - где то видел но не нашел этого пакета в логах (12 байт)
могут быть и другие значения типов параметров, но мне пока не попадались.
x - это порядковый номер параметра, все значения в пакете идут по порядку как в строке.
Ну а потом идет собственно само значение и так по кругу typesCount раз.
Теперь мой вариант как прочитать этот пакет:
var
lastSystemMessage: record
msgID: integer;
msgUnformatedString: string;
msgText: string;
end;
function TL2WorldData.GetL2SystemMessage(const pck: string): boolean;
var
i, j: integer;
typesCount: integer;
parType: integer;
st: string;
objSt: string;
sPar: string;
iPar: integer;
begin
Result:= false;
if pck[1] <> #$62 then exit;
i:= 2;
lastSystemMessage.msgID := ReadD(pck, i);
typesCount:= ReadD(pck, i);
lastSystemMessage.msgUnformatedString:= sysMsgIdList.Values[IntToStr(lastSystemMessage.msgID)];
st:= lastSystemMessage.msgUnformatedString;
for j:= 0 to typesCount - 1 do
begin
parType:= ReadD(pck, i);
case parType of
0: begin
sPar:= ReadS(pck, i);
st:= AnsiReplaceStr(st, '$c' + IntToStr(j + 1), sPar);
end;
1: begin
iPar:= ReadD(pck, i);
st:= AnsiReplaceStr(st, '$s' + IntToStr(j + 1), IntToStr(iPar));
end;
2: begin
iPar:= ReadD(pck, i);
objSt:= NpcIdList.Values[IntToStr(iPar - 1000000)];
st:= AnsiReplaceStr(st, '$c' + IntToStr(j + 1), objSt);
end;
3: begin
iPar:= ReadD(pck, i);
objSt:= ItemIdList.Values[IntToStr(iPar)];
st:= AnsiReplaceStr(st, '$s' + IntToStr(j + 1), objSt);
end;
4: begin
iPar:= ReadD(pck, i);
objSt:= SkillIDList.Values[IntToStr(iPar)];
st:= AnsiReplaceStr(st, '$s' + IntToStr(j + 1), objSt);
inc(i, 4);
end;
7: begin
inc(i, 12);
end;
else
begin
SendMSG('Неизвестный идентефикатор параметра в пакета SystemMesage (ID: '
+ IntToStr(lastSystemMessage.msgID) + ') ' + IntToStr(parType));
Exit;// выходим дабы не наделать горя, так как неизвестно сколько байт считывать
end;
end;
end;
lastSystemMessage.msgText:= st;
Result:= true;
end;
alexteam, xkor или кто-нибудь еще профиксите работу плугинов. Плз.
З.Ы. Я не могу в связи с временным отсутствием среды разработки.
alexteam
06.07.2009, 20:25
а я в связи с присутствием работы %)
зы.
по хорошему там либо все надо назад возвращать, либо одно из двух.
alexteam, тогда давай назад =)
alexteam, тогда давай назад =)
+1
alexteam
11.07.2009, 11:59
-1
Работа прежде всего.
Name4Me, попробуй 80й билд юзать, там все норм, вроде ...
до пору до времени ...
LunaticCalm
21.07.2009, 11:20
У меня давече трабл возник : сервак на платформу хэлбаунда переехал, соответственно и клиент другой, так вот при использовании перехвата при помощи inject.dll клиент вылетает с критом, а при исползовании LSP перехвата сам пакет хак виснет при попытке посылки пакета на сервак, причем периодически наблюдаю "синий экран смерти" дасВиндовса(стоит ХП СП3). Перепробовал все билды - эффект одинаковый. Как можно это пофиксить ?
dmitry501
21.07.2009, 11:38
У меня давече трабл возник : сервак на платформу хэлбаунда переехал, соответственно и клиент другой, так вот при использовании перехвата при помощи inject.dll клиент вылетает с критом, а при исползовании LSP перехвата сам пакет хак виснет при попытке посылки пакета на сервак, причем периодически наблюдаю "синий экран смерти" дасВиндовса(стоит ХП СП3). Перепробовал все билды - эффект одинаковый. Как можно это пофиксить ?
Думаю админ Л2 сможет. Приедь к нему с пивом/паяльником и уговори отключить все свистелки и перделки.
LunaticCalm
21.07.2009, 11:47
Думаю админ Л2 сможет. Приедь к нему с пивом/паяльником и уговори отключить все свистелки и перделки.
хЫ .. шутник :) ... не факт , что там что-то в защиту поставили :) ... потому что ник перса расшифровывало :)
У меня давече трабл возник : сервак на платформу хэлбаунда переехал, соответственно и клиент другой, так вот при использовании перехвата при помощи inject.dll клиент вылетает с критом, а при исползовании LSP перехвата сам пакет хак виснет при попытке посылки пакета на сервак, причем периодически наблюдаю "синий экран смерти" дасВиндовса(стоит ХП СП3). Перепробовал все билды - эффект одинаковый. Как можно это пофиксить ?
пользуй сокс. а так же грохни inject.dll и newxor.dll если присутствуют в папке л2пх. еще переназови .ехе файл во что нибудь другое и поменяй заголовок окна. и будет тебе счастье
LunaticCalm
21.07.2009, 13:40
... и поменяй заголовок окна. ...
эммм .. это каким образом ?
alexteam
21.07.2009, 14:52
в настройках...
LunaticCalm
23.07.2009, 10:06
вобщем, разобрался :) ... сперва из-за каспера 8-го не хотела перехватывать, даже если занести в список исключений. поставил кис 2010 - наладилось ... а теперь грешу на 8-й эксплорер : на работе с 7-м все робит просто ПРЕКРАСНО ! :dance3:
alexteam
23.07.2009, 14:51
при чем тут експлорер ?
//QaK:Потому, что гладиолус =)
pascalpwnz
24.07.2009, 20:40
Такой баг нашел:
l2phx.3.5.13.122 ни под каким видом не хочет обрабатывать массивы в процедуре или в функции. Если подобный запрос встречается в скрипте, то на этом скрипт и заканчивается. В тоже время старый l2phx.3.4.1.83 нормально все воспринимает.
Вот пример кода:
var
mas : array [1..10] of string;
procedure msgSend(msg:string); // отправка сообщений клиенту в анносы
begin
buf:=HSTR('4A 00 00 00 00 0A 00 00 00 00 00');
WriteS(msg);
SendToClient;
end;
procedure abc(a: array [1..10] of string);
begin
msgsend('abc');
end;
begin
msgsend('111');
abc(mas);
msgsend('222');
end.
l2phx.3.5.13.122 приходит только '111', то есть в саму процедуру он не может зайти.
l2phx.3.4.1.83 нормально обрабатывает скрипт, приходит '111','abc','222'. (да что там, у меня на нем нормально работал скрипт с матрицей)
alexteam
25.07.2009, 22:17
эм.. опять же это по части фастскрипта.
который кстати работает и в 3.5.13.122 и в 3.4.1.83 одинаково на сколько я понимаю...
В новых версиях alexteam вроде бы другой компонент с фастскрипт использует.
alexteam
26.07.2009, 13:20
тот же.
не путать попытки прилепить пакскриптер к пх с "другой версией фастскрипта"
pascalpwnz
26.07.2009, 16:37
тот же.
не путать попытки прилепить пакскриптер к пх с "другой версией фастскрипта"
Так в итоге кто виноват? ПХ или ФС?
===================
Еще одна ошибка(в поиске не нашел), на этот раз интерфейса l2phx.3.5.13.122:
Если перейти на вкладку "дополнительно", а потом щелкнуть мышкой по полю, то всегда выскакивает эта ошибка:
Exception class: EAccessViolation
Exception message: Access violation at address 00672A9D in module 'l2ph.exe'. Read of address 00000014.
Exception address: 00672A9D
причем такое у меня на двух разных машинах.
Так в итоге кто виноват?
во всем виноват alexteam =)
alexteam
27.07.2009, 00:29
/me уволен.
alexteam, ээ, как уволен, а кто дальше будет модернизацию проводить?, ну или хоть исправление ошибок?)
ЗЫ ваше заявление об увольнении было отклонено)
LunaticCalm
28.07.2009, 15:26
при чем тут експлорер ?
//QaK:Потому, что гладиолус =)
просто не первая прога, которая начинает выдавать "финты ушами" после обновления до 8-го эксплорера :)
IExplorer и винда неразрывное целое, понятно что при его обновлении было так же заменено куча системных библиотек, так что я верю в косяки из за него.
Revision: 141
Author: nlobp
Date: 6:19:11, 9 августа 2009 г.
Message:
правка кода работы с путями к логам и скриптам;
правка кода обновления из *.ini;
правка некоторых пакетов под Gracia Final в packetsT1.ini;
alexteam
09.08.2009, 16:01
в uScripts.pas > procedure TfScript.RefreshScripts;
ты закоментировал кусок кода, тем самым порядок выполненя скриптов не будет восстановлен.
да, там есть проблема когда скрипт запускаеться но не отмечается галочкой.
достаточно было закоментировать вот это
if Options.ReadBool('scripts','checked'+inttostr(i), false) then
newScript.ListItem.Checked := true;
или, разобратся почему тестинит производится а галочкой не отмечается в
procedure TfScript.ListViewWindowProcEx(var Message: TMessage);
alexteam, гляну сейчас, что то не помню, чтобы я там правил. =)
alexteam
09.08.2009, 16:36
http://l2phx.pp.ru/wsvn/blame.php?repname=l2phx3&path=%2F3.5.x%2Funits%2FuScripts.pas&rev=0&sc=0
Строки 151 - 167
alexteam, виноват, забыл расскоментить. Искал причину медленного обновления списка скриптов (1 - 2 минуты весь список составляет, при наличии порядка 20 -30 скриптов, может и вообще весь список не показать).
alexteam
09.08.2009, 16:50
Вообще по задумке, "сохранить порядок" сохраняет не только порядок а и состояние "отмечен"
правда как то коряво это состояние "отмечен" восстанавливает.... компилирует, запускает инит но скрипт не отмечает к исполнению..
именно компилирование и запуск скрипта составляющие этой 2х минутной задержки.
починить бы его -)
Добавлено через 1 минуту
если не хочешь напрягаться - заремарь
if Options.ReadBool('scripts','checked'+inttostr(i), false) then
newScript.ListItem.Checked := true;
Revision: 142
Author: nlobp
Date: 16:03:50, 9 августа 2009 г.
Message:
раскомментил код, который убирал для теста и забыл восстановить как было
ЗЫЖ Залил на фтп.
L2PacketHack 3.5.15.126
при выходе из программы если открыта вкладка скрипты
и скрипт открыт для просмотра но не отмечен
происходит ошибка .об ошибки сообщения нет винда звук
выдает об ошибки
alexteam
13.08.2009, 15:44
знаю, мешает звук ?.
знаю, мешает звук ?.
да нет
извиняюсь, вчера и седня искал инфу по сайту, может плохо искал:
пакетхак на руофф работает? именно сейчас, знаю что работал, рассказывали, сейчас сам пробовал, не получается... моя ошибка или там защита какаято новая которую в пакет хак не обошли?
не работет
ага спс. и не планируется, да? или идет работа по обходу данной проблемы?
alexteam
28.08.2009, 11:55
pppok, не планируется.
pppok, публично доступного точно не планируется...
Revision: 3.5.16.127
Author: nlobp
Date: 03:21:00, 29 августа 2009 г.
Message:
[+] Добавил работу с packetsT2.ini для пакетов в Gracia Final;
правка пакетов Gracia Final by NLObP по данным www.l2jserver.com;
PS: репозиторий не работает
alexteam
29.08.2009, 19:16
к стати,
http://coderx.ru/showpost.php?p=35433&postcount=972
это был звук запроса "сохранить скрипт хххх?"
было поправлено. но билд я кажется не делал (нипомню, пйаный был..)
Добавлено через 2 часа 12 минут
Вопрос
http://l2phx.pp.ru/wsvn/blame.php?repname=l2phx3&path=%2F3.5.x%2Funits%2FuScripts.pas&rev=0&sc=1
161-162 строки зачем были заремарены? (снова)
161-162 строки зачем были заремарены? (снова)
Простите! Виноват. Как прошлый раз ты подсказал, я себе сделал, а для всех убрать опять забыл.
PS: как сделать, чтобы в систрее появлялась подсказка при наведении мыши на иконку пакетхака? Очень не хватает.
alexteam
29.08.2009, 20:11
не забудь поправить/вынести в настройки/поставить там условие на "дебагмод"
как сделать, чтобы в систрее появлялась подсказка при наведении мыши на иконку пакетхака?
fMain.JvTrayIcon1.hint
pascalpwnz
29.08.2009, 23:33
правка некоторых пакетов под Gracia Final в packetsT1.ini;
Каких конкретно?
Каких конкретно?
Сравни packetst1.ini и packetst2.ini, а то я все не вспомню. Помню id пакетов от клиента уточнял и менял, добавились трехбайтные id. Многие команды пока без расшифровки.
Прицепил файл diff.txt с отличиями T1 от T2
Revision: 3.5.17.128
Author: nlobp
Date: 02:14:00, 30 августа 2009 г.
Message:
[+] Добавил сплэшь-скрин, грузится из отдельной длл в отдельном потоке by Юрий Зотов www.delphikingdom.com;
расскоментировал строчки 161-162 в uScripts.pas;
в systray добавил hint;
Залил в файловый архив
PS: нужен сплэшь-скрин? пока на репозиторий не заливал.
alexteam
30.08.2009, 12:16
Почему не задействовать для отображения сплеша фмаинформреплейсер ? ведь он :
1. как интерфейсный элемент вообще не используется. т.е. после создания сразу прячется.
2. является маинформой. со всеми вытекающими.
+к сплешскрину добавить "статусбар" (лейблу) в который выводить текущий шаг загрузки (авто подгрузка и компиляция скриптов, т.е. еще одну форму из проекта можно будет убрать.)
+ после загрузки скриптов не сразу прятать реплейсер а подождать секунду - две (по таймеру естесно, либо ждать клика по сплешу) дав насладится лого и уж затем прятать маинформ (реплейсер) и отображать фмаин, (и выбор языка с сеттингами при первой загрузке)
т.е.
сразу прячем кнопку приложения с таскбара (не вздумай задавать кепшин реплейсеру!!!, дабы не было казусов с защитами сканящими заголовки, отображение рамки у формы лучше вообще убрать. и временнно делать саму форму стейонтоп.)
дожидаемся полной загрузки приложения. при этом устранить все возможные "показы" "дочерних" форм.
подгружаем скрипты и компилируем их выводя попутно в сплеш имена скриптов
ждем пару секунд
прячем реплейсер, отображаем маинформу.
PS: нужен сплэшь-скрин? пока на репозиторий не заливал.[/QUOTE]
спасибо!
можно
на сервере _http://la2friend.ru/ грация финал
работал с l2phx.3.4.1.83
от клиента D04C был Unknown
переименовал:
D04C=RequestEnchantselectItem:h(subID)d(ObjectID)
от сервера FE81 был Unknown
переименовал:
FE81=SelectEnchantItem:h(subID)d(ObjectID)
alexteam
05.09.2009, 12:32
3.5.18.132
splashscreen. все таки надо его было давно добавить. спс за идею NLObP ;)
[-] массивы теперь можно передавать как параметр процедуры/функции (все дружно говорим спасибо гуглу за предоставленные сурсы фастскрипта)
чуточку модифицированые сурсы фастскрипта залиты в файловый архив.
просьба использовать их при создании последующих билдов.
Добавлено через 30 минут
NLObP, просьба закоммитить наработки касающиеся packetsx.ini
просьба закоммитить наработки касающиеся packetsx.ini
Я эти изменения коммитил.
Сегодня косяк нашел с 39 пакетом в Грации
Revision: 152
Author: nlobp
Date: 1:09:08, 6 сентября 2009 г.
Message:
фикс пакета 39 в Грация Финал, он теперь не 2-х байтный;
в детальной расшифровке отключил перенос по словам (имхо так лучше);
в systray добавил hint;
Залил l2phx.3.5.19.133.rar
и поправил changelog.txt
alexteam
06.09.2009, 12:21
чуточку модифицированые сурсы фастскрипта залиты в файловый архив.
просьба использовать их при создании последующих билдов.
Залил l2phx.3.5.19.133.rar
матюкаюсь....
перекомпилил.. перезалил.
Добавлено через 3 минуты
простенький скрипт.
var
mas : array[0..10] of string;
procedure abc(p: array[0..10] of string);
begin
sendMSG(p[0]);
end;
procedure Init;
begin
mas[0] := 'ляляля';
abc(mas); //если редактор после тестинита не пометил это место - все в порядке.
end;
procedure Free;
begin
end;
begin
end.
alexteam, ReadX починил? =)
alexteam
06.09.2009, 13:10
в плагины я не лезу... %)
Угу, как ломать - так все бацаки, а как починить - так все чатлане =(
alexteam
06.09.2009, 13:13
я его не ломал... я эту часть "недопеределал" :P
Восстанавливай взад всё как было =)
alexteam
06.09.2009, 13:18
ну.. если учитывать что прожект был создан с нуля... и все аккуратно туда либо копипастилось либо в основном переписывалось..... то их можно просто удалить... %)
Лентяй =)
Добавлено через 20 секунд
хорошо флудить в общем =)
alexteam
06.09.2009, 14:29
я не леньтяй.. я пытаюсь понять какого черта оно в данном виде не работает прямо сейчас %)
с твоей подачи.... кстати...
Добавлено через 56 минут
Revision: 153
Author: alexteam
Date: 12:22:46, 6 сентября 2009 г.
Message:
[-] починил реадх в плагинах. (tpacket заменен обратно на стринг), в соответствии поправил демо - плагины.
изменил тип переменной для идентификации версии с интежер в лонгворд. ибо инт имеет особенность уходить в минуса.
QaK, тебе больше всех надо было ? :spiteful: марш проверять!
Добавлено через 4 минуты
хотелось бы конечно привести их в полное соответствие со скриптам (к примеру убрать из реадХ и варйтХ первый параметр... ну и в таком духе)
но вопервых все Лехи лентяи.. во вторых я еще и индус.. %)
vBulletin® v3.6.11, Copyright ©2000-2024, Jelsoft Enterprises Ltd. Перевод: zCarot