PDA

Просмотр полной версии : L2PacketHack 3.5.x


Страницы : [1] 2 3 4 5 6

NLObP
01.08.2008, 06:48
Исходники здесь (https://github.com/ixkor/l2ph)
Вот такие (https://yadi.sk/d/oz1L0QhZA4pAT) скомпилированные версии есть у меня.

Ниже данные устарели.
Репозиторий находится тут (http://l2ph.coderx.ru/svn/l2phx3/) (открывать через SVN клиент)
Удобный просмотр репозитория через браузер тут (http://l2ph.coderx.ru/wsvn/listing.php?repname=l2phx3&path=%2F&sc=1)
Скомпилированные версии тут (http://l2ph.coderx.ru/arhive/) Пароль к архиву: coderx.ru

Есть ли предложения по модернизации существующего кода с описанием как должно и что хотелось бы заменить/добавить?

Программа пишется в среде Delphi 2007 и Delphi 7 с использованием следующих дополнительных библиотек компонентов:
- FastScript (http://fast-report.com/ru/products/fast-script.html)
- JCL (http://sourceforge.net/projects/jcl/)
- JVCL (http://sourceforge.net/projects/jvcl/)

Дополнительные компоненты брать тут (http://l2ph.coderx.ru/arhive/components/). (<-- TPerlRegEx есть только там)

/upd:
для компиляции последних ревизий понадобятся JCL, JVCL (ссылки выше) а так же:
jwapi2.2a, SyntEdit, TRichView.v11.0+ScaleRichView.v2.0, TsiLang (letitbit (http://letitbit.net/download/9568.e9abc119b82a7e8b364a162c4/archive.rar.html) / upload.com.ua (http://upload.com.ua/get/901032112/))
Немного подправленный FastScript искать в файловом архиве.

QaK
01.08.2008, 09:03
- модернизированный разбор пакетов (в работе);это что, конкретно?

Добавлено через 4 минуты
А и еще тут обсуждение где-то на форуме было - и предложили грузить расшифровку пакетов в начале загрузки ПНХ и при нажатии кнопочки - "перечитать из инишек"

Добавлено через 1 минуту
Можно сделать возможность выбора инишек, т.е. сделать менюшку, в которой будет отображаться все Packet.ini, и выбирать из нее, ну и для ItemID, и прочих инишек можно то же самое.

NLObP
01.08.2008, 12:17
это что, конкретно?

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

А и еще тут обсуждение где-то на форуме было - и предложили грузить расшифровку пакетов в начале загрузки ПНХ и при нажатии кнопочки - "перечитать из инишек"

Вот мне бы таких предложений и развернутых поподробнее. Чтобы воплотить можно было полегче. Многого даже в мыслях нет, а по готовой подсказке додумать могу.

Можно сделать возможность выбора инишек, т.е. сделать менюшку, в которой будет отображаться все Packet.ini, и выбирать из нее, ну и для ItemID, и прочих инишек можно то же самое.

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

Вот была тема от OllyDebug про правку HookCode, так и заглохла.
Цитата:HookCode исправленный не выложишь тут ?

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


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 секунд
На абиссе пофиксили ПНХ дллкой под названием blinkw32.dll , хотелось бы увидеть в твоем ПНХ возможность обхода фикса если это возможно .. Жаль конечно :(

На х300 работает.

PanAm
01.08.2008, 14:08
А и еще тут обсуждение где-то на форуме было - и предложили грузить расшифровку пакетов в начале загрузки ПНХ и при нажатии кнопочки - "перечитать из инишек"Жто я предлогал сделать ini фалы по папкам и на главной странице загружать инишки присетами, или сделать выпадающие списки для каждого ini, фактически нужна переменная для пути к набору файлов или набор переменных для каждого из INI, КомбоБокс, и кнопка загрузить, устанавливающая переменную... и незабыть сделать аналог "По умолчанию" :D

Добавлено через 9 минут
кстати, очень неплохо получилось, даже без подсветки - логи вполне читаемы
Только вот что-то со скилами у мну не фурычит
d skillID: 1204 Unknown Skill :confused:

PanAm
01.08.2008, 14:26
значения dword надо бы в HEX типа - (0h4B4) 1204
или даже в самом packets.ini предусмотреть как выводить в логах.

Добавлено через 9 минут
И npcID.ini можно добавить ;)

Breadfan
02.08.2008, 17:07
Что то странное происходит с перехватом у меня: пакеты расшифровываются верно, но в списке соединений пусто.Как возможно это исправить? Вот полученные пакеты от серва в расшифрованном виде:
Tип: 0x09 (CharSelectionInfo)
Pазмер: 301+2
Время прихода: 15:36:56:156
d ListSize: 1
d 7: 0
b 0:
s Name: ?????
d CharID: 51083776
s LoginName: ??????
d SessionID: 715892224
d ClanID: 234
d 0: 0
d Sex: 256
d Race: 768
d ClassID: 11264
d 1: 256
d 0: 0
d 0: 0
d 0: 0
f CurrentHP: 5,20938627568739E238
f CurrentMP: 1,74980057982643E100
d SP: 19776
f Exp: 1,99207268403191E-317
d Level: 1792
d Karma: 0
d PkKills: 0
d 0: 0
d 0: 0
d 0: 0
d 0: 0
d 0: 0
d 0: 0
d 0: 0
d 0: 0
i Unknown:
i RightEarring:
i LeftEarring:
i Necklace:
i RightRing:
i LeftRing:
i Head:
i RightHand:
i LeftHand:
i Gloves:
i Chest:
i Legs:
i Boots:
i Unknown:
i Unknown:
i Hair:
i Face:
i Unknown:
i Unknown:
d 0: 0
d 0: 0
d 0: 28672
d 0: 0
d 0: 0
d 0: 29696
d HairStyle: 0
d HairColor: 606464
d Face: 0
f MaxHP: 1,14078493722293E-310
f MaxMP: 1,45073483719657E-318
d DeleteDays: 0
d ClassID: 0
d ActiveID: 0
b EnchantEffect:
w AugmentationID:
w 0:
d TransformID: 0

как видите здесь сумбур, но в пакете данных байты содержащие ник перса верные(
а вот следующий пакет от сервера:
Tип: 0x0B (CharSelected)
Pазмер: 280+2
Время прихода: 15:36:58:812
s Name: Laska
d CharID: 199546
s Title:
d SessionID: -366302298
d ClanID: 0
d 0: 0
d Sex: 1
d Race: 3
d ClassID: 44
d 1: 1
d X: -45278
d Y: -111875
d Z: -265
f CurrentHP: 280
f CurrentMP: 83
d SP: 77
f Exp: 7,78153392199963E-320
d Level: 7
d Karma: 0
d 0: 0
d INT: 18
d STR: 40
d CON: 47
d MEN: 27
d DEX: 26
d WIT: 12
d 0: 0
d 0: 0
d ClassID: 0
d 0: 0
d 0: 0
d 0: 0
d 0: 0
b Empty:
Вобщем поразмыслив догнал что в первом пакете неверно считываются данные (по крайней мере в моем случае) например SP=19776 что есть 40 4D однако, т.к. байты пишутся в обратном порядке и сп фактически 77, должна имется строка 4D 00 которую я и нашел в виде: 40 4D 00...вот такой вот баг( как поправить?

Добавлено через 32 минуты
Пробовал заменить файл packets.ini на packetst1.ini в исходном пнх, обрабатывает верно, но соединение все равно не создается. Пишет Создано новое соединение - 0 но список пуст

Emocean
02.08.2008, 19:32
Теперь не надо писать длинные строчки в packets.ini, понимает циклы и функции в нем
В при выделении пакетов CharInfo и UserInfo пакетхак зацикливается вот в этом месте: h(cubics:For.0001)h(cubID).
Наверное это происходит из-за того, что если h(cubics:For.0001) равно нулю, то h(cubID) отсутствуют.

NLObP
03.08.2008, 00:24
Вот так получаем в пакетхаке имя соединения:
$04: if Thread[id].Name='' then begin
ii:=5*4+1;
while not((Packet.DataB[ii]=0)and(Packet.DataB[ii+1]=0)) do Inc(ii);
Dec(ii,5*4);
SetLength(WStr,ii div 2);
Move(Packet.DataB[5*4+1],WStr[1],ii);
Thread[id].Name:=WideStringToString(WStr,1251);
L2PacketHackMain.ComboBox1.Items.BeginUpdate;
iii:=L2PacketHackMain.ComboBox1.ItemIndex;
L2PacketHackMain.ComboBox1.Items.Clear;
for h1:=0 to MaxThr-1 do
if not Thread[h1].NoUsed
then L2PacketHackMain.ComboBox1.Items.Add(IntToStr(h1)+ ' - '+Thread[h1].Name)
else L2PacketHackMain.ComboBox1.Items.Add(IntToStr(h1)+ ' - пусто');
L2PacketHackMain.ComboBox1.ItemIndex:=iii;
L2PacketHackMain.ComboBox1.Items.EndUpdate;
end;

То есть если имя не читаемое, то значит неверно расшифровывается трафик.

Breadfan
04.08.2008, 04:10
Да нет, в том то и дело, что сами данные отображены верно, т.е. сверяя значения пришедших данных я получаю верные значения (ник, лвл и т.д.), удалось запустить SkyBot (ессно переправив ID пакетов в скрипте и длл), но вот не создает соединение и все тут! То есть работать с двумя и более клиентами не получится(
Потому и интересно, как принудительно присвоить соединению имя...
Вот пример пакета CharSelectionInfo
09 01 00 00 00 00 00 00 00 01 4C 00 61 00 73 00
6B 00 61 00 00 00 7A 0B 03 00 73 00 6C 00 65 00
73 00 61 00 72 00 00 00 A7 3A 41 1B 96 2F 07 10
00 00 00 00 01 00 00 00 03 00 00 00 2E 00 00 00
01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
4B EA 04 34 51 2D A9 40 00 00 00 00 00 40 85 40
FD 2C 1E 00 49 82 0F 02 00 00 00 00 30 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 70 00 00 00
53 03 00 00 91 03 00 00 72 03 00 00 72 03 00 00
2F 00 00 00 8E 22 00 00 00 00 00 00 5D 02 00 00
60 01 00 00 4A 09 00 00 78 09 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 02 00 00 00
02 00 00 00 02 00 00 00 00 00 00 00 00 B2 AA 40
00 00 00 00 00 40 85 40 00 00 00 00 2E 00 00 00
01 00 00 00 00 00 00 00 00 00 00 00 00

Выделенный кусок легко переводится в ник перса, однако пнх не принимает это, а просто вывел в описании:
Tип: 0x09 (CharSelectionInfo)
Pазмер: 301+2
Время прихода: 03:17:05:187

И вот еще выявленные недочеты:
1. Выдает ошибку при запуске, если загружено окно Л2
2. Иногда без всяких сообщений прекращает работу и закрывается
3.Нет ограничения на кол-во запоминаемых пакетов, что приводит к ошибке после некоторго времени с этой опцией
4. Кстати, по крайней мере в Камаеле вылетает при переключении на вкладку Посылка

NLObP
04.08.2008, 18:29
Каким образом можно принудительно присвоить соединению имя?

Есть как оказалась процедура, при помощи которой можно присвоить имя соединению:
SetName(Name: string);

Добавлено через 2 минуты
В при выделении пакетов CharInfo и UserInfo пакетхак зацикливается вот в этом месте: h(cubics:For.0001)h(cubID).
Наверное это происходит из-за того, что если h(cubics:For.0001) равно нулю, то h(cubID) отсутствуют.

Проверил. Надо для Интерлюдии в packets.ini поправить пакет UserInfo он отличается от C4. На цикле кубиков зацикливается. :D
Наверно надо такие, попробуй
03=CharInfo:d(X)d(Y)d(Z)d(Heading)d(ObjectID)s(Nam e)d(Race)d(Sex)d(ClassID:Get.ClassID)d(DHair)d(Hea d:Get.Func01)d(RHand:Get.Func01)d(LHand:Get.Func01 )d(Gloves:Get.Func01)d(Chest:Get.Func01)d(Legs:Get .Func01)d(Feet:Get.Func01)d(Back:Get.Func01)d(LRHa nd:Get.Func01)d(Hair:Get.Func01)d(Face)z(0048)d(Pv pFlag)d(Karma)d(MSpeed)d(PSpeed)d(PvpFlag)d(Karma) d(runSpd)d(walkSpd)d(swimRSpd)d(swimWSpd)d(flRunSp d)d(flWalkSpd)d(flyRSpd)d(flyWSpd)f(SpdMul)f(ASpdM ul)f(collisRadius)f(collisHeight)d(HairStyle)d(Hai rColor:Get.FCol)d(Face)s(Title)d(clanID)d(clanCres t)d(allyID)d(allyCrest)d(siegeFlag)c(isStand)c(isR un)c(isInFight)c(isAlikeDead)c(Invis)c(Mount)c(sho p)h(cubics:For.0001)h(cubID)c(findparty)d(abnEffec ts)c(RecomLeft)h(RecomHave)d(classID:Get.ClassID)d (maxCP)d(curCP)c(isMounted)c(Team)d(clanBigCrestId )c(isNoble)c(isHero)c(isFishing)d(fishX)d(fishY)d( fishZ)d(NameColor:Get.FCol)d(isRun)d(PledgeClass)d (PledgeColor:Get.FCol)d(TitleColor:Get.FCol)d(d)d( Cursed)
04=UserInfo:d(X)d(Y)d(Z)d(Heading)d(ObjectID)s(Nam e)d(Race)d(Sex)d(ClassID:Get.ClassID)d(Level)q(Exp )d(STR)d(DEX)d(CON)d(INT)d(WIT)d(MEN)d(MaxHP)d(Cur HP)d(MaxMP)d(CurMP)d(SP)d(CurLoad)d(MaxLoad)d(d)d( DHair)d(Rear)d(Lear)d(Neck)d(RFinger)d(LFinger)d(H ead)d(RHand)d(LHand)d(Gloves)d(Chest)d(Legs)d(Feet )d(Back)d(LRHand)d(Hair)d(Face)d(DHair:Get.Func01) d(Rear:Get.Func01)d(Lear:Get.Func01)d(Neck:Get.Fun c01)d(RFinger:Get.Func01)d(LFinger:Get.Func01)d(He ad:Get.Func01)d(RHand:Get.Func01)d(LHand:Get.Func0 1)d(Gloves:Get.Func01)d(Chest:Get.Func01)d(Legs:Ge t.Func01)d(Feet:Get.Func01)d(Back:Get.Func01)d(LRH and:Get.Func01)d(Hair:Get.Func01)d(Face)z(0068)d(P atk)d(Paspd)d(Pdef)d(evasion)d(accur)d(crithit)d(M atk)d(Maspd)d(Paspd)d(Mdef)d(PvpFlag)d(Karma)d(run Spd)d(walkSpd)d(swimRSpd)d(swimWSpd)d(flRSpd)d(flW Spd)d(flyRSpd)d(flyWSpd)f(MoveMul)f(aspdMul)f(coll isRadius)f(collisHeight)d(HairStyle)d(HairColor:Ge t.FCol)d(Face)d(AccessLvl)s(Title)d(clanID)d(clanC restId)d(AllyID)d(AllyCrestId)d(ClanLeader)c(Mount )c(shop)c(DwarfCraft)d(PKkills)d(PVPkills)h(cubics :For.0001)h(cubID)c(findparty)d(abnEffects)c(c)d(c lanPrivil)h(RecomLeft)h(RecomHave)d(d)h(InventLimi t)d(classId:Get.ClassID)d(sEff)d(maxCP)d(curCP)c(M ount)c(Team)d(clanBigCrestId)c(Noble)c(Hero)c(Fish ing)d(fishX)d(fishY)d(fishZ)d(NameColor:Get.FCol)c (isRun)d(PledgeClass)d(d)d(TitleColor:Get.FCol)d(d )d(CurseWeap)


Добавлено через 17 минут
Да нет, в том то и дело, что сами данные отображены верно, т.е. сверяя значения пришедших данных я получаю верные значения (ник, лвл и т.д.), удалось запустить SkyBot (ессно переправив ID пакетов в скрипте и длл), но вот не создает соединение и все тут! То есть работать с двумя и более клиентами не получится(
Потому и интересно, как принудительно присвоить соединению имя...
Вот пример пакета CharSelectionInfo

Выделенный кусок легко переводится в ник перса, однако пнх не принимает это, а просто вывел в описании:
Tип: 0x09 (CharSelectionInfo)
Pазмер: 301+2
Время прихода: 03:17:05:187

Запиши лог и выложи здесь. Я буду настраивать.

Это Камаель. Попробуй нормальную расшифровку 09 и 0B пакета подсунуть. Я основываюсь на Сауроновских packets.ini

09=CharSelectInfo:d(Count:For.0065)d(d)c(c)s(Name) d(CharID)s(LoginName)d(SessionID)d(ClanID)d(d)d(Se x)d(Race)d(ClassID:Get.ClassID)d(active)d(X)d(Y)d( Z)f(cur_HP)f(cur_MP)d(SP)q(Exp)d(Level)d(Karma)z(0 036)d(Under)d(Rear)d(Lear)d(Neck)d(RFinger)d(LFing er)d(Head)d(RHand)d(LHand)d(Gloves)d(Chest)d(Legs) d(Feet)d(Back)d(LRHand)d(Hair)d(Face)d(Under:Get.F unc01)d(Rear:Get.Func01)d(Lear:Get.Func01)d(Neck:G et.Func01)d(RFinger:Get.Func01)d(LFinger:Get.Func0 1)d(Head:Get.Func01)d(RHand:Get.Func01)d(LHand:Get .Func01)d(Gloves:Get.Func01)d(Chest:Get.Func01)d(L egs:Get.Func01)d(Feet:Get.Func01)d(Back:Get.Func01 )d(LRHand:Get.Func01)d(Hair:Get.Func01)d(Face)d(Ha irStyle)d(HairColor:Get.FCol)d(Face)f(Max_HP)f(Max _MP)d(DELdays)d(ClassID:Get.ClassID)d(autSel)c(Enc hEffect)h(face)h(face)
0B=CharSelected:s(Name)d(CharID)s(Title)d(SessionI D)d(ClanID)d(d)d(Sex)d(Race)d(ClassID:Get.ClassID) d(active)d(X)d(Y)d(Z)f(Cur_HP)f(Cur_MP)d(SP)q(EXP) d(Level)d(Karma)d(d)d(INT)d(STR)d(CON)d(MEN)d(DEX) d(WIT)z(0128)d(inGameTime)z(0072)


Добавлено через 19 минут
{Minor and major changes by NLObP
Что уже есть:
-------------
3.2.1
+ поддержка ДЛЛ by QaK
+ небольшая оптимизации кода by OllyDebug;

3.2.3 от 01.08.2008
+ при запуске программы загрузка packets.ini или packetst1.ini в зависимости от галочки Камаель;
+ при установки/снятии галочки Камаель перечитываем packets.ini или packetst1.ini;
+ парсер понимает одно и двухбайтные коды пакетов;
+ в редакторе скриптов горячие клавиши: ctrl-S - сохранение, ctrl+F9 проверка скрипта;

3.2.4 от 02.08.2008
+ парсер пакетов использует циклы и функции в packets.ini by Sauron
Get.Skill - возвращает название скила по его ID из значения аргумента
Get.MsgID - возвращает текст по его ID из значения аргумента
Get.Func01 - возвращает название Item'а по его ID из значения аргумента
Get.Func02 - возвращает тип Say2
Get.Func09 - разное

3.2.5 от 04.08.2008
+ сохраняет размеры окна в конфиге
+ парсер пакетов использует циклы и функции в packets.ini by Sauron
+ kID=1000000 в конфиге для Get.NpcID - возвращает текст по его ID из значения аргумента
+ Get.ClassID - профа
+ Get.FSup - Status Update ID
}

Добавлено через 8 минут
ЗЫЖ 50 минут на Абиссе рыбу ловит.

Добавлено через 12 часов 37 минут
Сделал
3.2.6 от 04.08.2008
+ по ProtocolVersion грузим разные packets.ini

С Интерлюдией и С4, с packets.ini, которые у меня есть вроде работает нормально, а для Камаеля пакетхак фигню всякую показывает и подвисает в циклах.
Есть у кого правильный packets.ini для Камаеля и лог пакетов для тестов?

Emocean
05.08.2008, 22:52
Закрываю пакетхак и

http://s47.radikal.ru/i115/0808/58/5d7d036afb45.gif

NLObP
06.08.2008, 00:12
А можно подробнее о SetName(Name: string); с примером желательно? Близкая связь с ней была у меня но результата небыло

Не буду утверждать, но вроде так надо:

Const
Name='Test';

...

Procedure Init;
begin
Setname(Name);
end;

Добавлено через 1 минуту
Закрываю пакетхак и

Не обещаю, что смогу поправить. Буду думать.

Breadfan
06.08.2008, 12:53
А вот возникает при запуске программы если уже запущено окно Л2
http://img108.imageshack.us/img108/9170/errorvn3.th.jpg (http://img108.imageshack.us/my.php?image=errorvn3.jpg)

Добавлено через 1 час 15 минут
Не буду утверждать, но вроде так надо:

ммм а как же указать какому соединению присваеваем имя? пожалуй этот вопрос к xkor лучше адресовать
(черт..что за слово присваеваем?? хз...пол пятого утра ничего не понимаю..чет навевает: "баю-баю")

Добавлено через 7 часов 11 минут
Вот нашел в исходниках как это делается:
Const
Name='Test';

...

Procedure Init;
begin
ConnectID:=x; //здесь номер нужного соединения
Setname(Name);
end;

Breadfan
06.08.2008, 15:51
Есть предложение добавить функцию поиска текста в окне редактирования скрипта)
Продолжаем о камаеле: наконец начальный пакет расшифрован верно) но паразит все равно упорно не создает автоматически соединение))

Breadfan
06.08.2008, 18:23
Вот что произошло после некоторого времени работы Sky-бота:
http://img386.imageshack.us/img386/2396/erroron9.th.jpg (http://img386.imageshack.us/my.php?image=erroron9.jpg)

NLObP
06.08.2008, 20:30
Продолжаем о камаеле: наконец начальный пакет расшифрован верно

Пакты должны расшифровываться правильно, если в packets??.ini правильно прописано, как его расшифровать.
Если все Get:Func*, Get:For*, Get:Loop* убрать, то будет стандартная расшифровка, как в 3.2.0. Если их неправильно вставить, то будут зависы во время показа таких пакетов.

но паразит все равно упорно не создает автоматически соединение

Может это связяно с защитой? У меня на Asterios.ru тоже не видно имени соединения, но пакеты идут, не знаю правильные или нет.

Breadfan
06.08.2008, 20:48
Пакеты верные, переделанные скрипты работают, после ручного присвоения имени начинают работать и для конкретного соединения

Добавлено через 1 минуту
Тут кроме меня что, с камаелем никого нету больше? Отзовитесь о результатах

NLObP
07.08.2008, 03:10
Пакеты верные, переделанные скрипты работают, после ручного присвоения имени начинают работать и для конкретного соединения

Может тогда это поможет и другим, у кого в соединении "ПУСТО", а пакеты идут? Надо тоже попробовать.

Тут кроме меня что, с камаелем никого нету больше? Отзовитесь о результатах

Я немного попробовал, но увидев, что в соединении нет имени чара оставил это дело.

Добавлено через 5 часов 49 минут
3.2.9 от 07.08.2008
+ в редакторе скриптов горячие клавиши: ctrl-F - поиск;

Добавлено через 3 минуты
Вот что произошло после некоторого времени работы Sky-бота:

Для правильного отображения пакетов и соответственно фильтров необходим пакет ProtocolVersion. Есть идеи как без него обойтись? Или может в глобальной переменной протокол сохранять?

Breadfan
07.08.2008, 12:26
Насчет присвоения имени поторопился я. Хоть и присваевается но работать в большинстве случаев скрипты отказываются, сейчас стал запускать несколько копий пнх, изменив порты

Emocean
07.08.2008, 12:56
Если сохранить лог пакетов, а потом его загрузить и выделить пакет, то происходит это:

http://s53.radikal.ru/i142/0808/49/9dbf368b9384t.jpg (http://radikal.ru/F/s53.radikal.ru/i142/0808/49/9dbf368b9384.gif)

Примерно такая же ошибка, когда пытаешься вставить пакет в отправку.

Ни в коем случае не упрекаю, просто инфа)

PanAm
07.08.2008, 14:06
еще бы крависенько оформить расшифровку пакетов
например
сейчас
d skillID: 1078 Concentration
лучше что-то типа
d skill: ID:1078 Concentration
или
d skill: Concentration ID:1078
ну и совсем хорошо
d skill: Concentration ID:1078 (0x436)

NLObP
07.08.2008, 14:44
что мешает тупо вставить гденить комбобокс с выбором какой файл юзать?)

Хотелось больше автоматизации и поменьше думать.
Но раз и протокол могут специально подменять, то надо ручной выбор добавить.

я в пакетхак 4 именно так буду делать)

Жду. Скорее бы.

PanAm
07.08.2008, 17:34
Вот еще одно пожелание -
на вкладке "Просмотр" заменить все ЧекБоксы на ТулКнопки, там если мне не изменяет маразм, это вполне возможно, заодно чуть освободится место, да и саму панель с кнопками наверно логичней разместить вверху.

Добавлено через 3 минуты
и кстати, синие и красные метки с черным текстом напротив пакетов, не очень - или C и S надо светлые или фон светлей...

Добавлено через 4 минуты
а вот еще
в SkillsID.ini надо убрать первые 2 строки, или дороботать "Учение скилов"

NLObP
07.08.2008, 17:56
Вот еще одно пожелание -
на вкладке "Просмотр" заменить все ЧекБоксы на ТулКнопки, там если мне не изменяет маразм, это вполне возможно, заодно чуть освободится место, да и саму панель с кнопками наверно логичней разместить вверху.
Я уже к такому расположению привык. Но можно и попробовать на верх перенести. А вот заменить чекбоксы на кнопки... как проверять что мы их выбрали и что на них нарисовать?

и кстати, синие и красные метки с черным текстом напротив пакетов, не очень - или C и S надо светлые или фон светлей...

Это я у KiberPrizrak взял из его PacketViewer. Мне нравиться. Может назад, как было сделать?

а вот еще
в SkillsID.ini надо убрать первые 2 строки, или дороботать "Учение скилов"

Все ini можно и нужно править. Желательно выкладывая на форум, если были глобальные правки. Я один не в сосоянии всё проверить и исправить.

PanAm
07.08.2008, 18:14
А вот заменить чекбоксы на кнопки... как проверять что мы их выбрали и что на них нарисовать?
у ToolButton свойство Style установить tbsCheck и можно проверять свойство Down на True или False, а также если этого мало. можно использовать свойство Marked.
а картинки... ну тут полет фантазии, самое простое - на первые (от куда пакеты) поставить теже картинки что и в списке пакетов

PanAm
07.08.2008, 18:50
Все ini можно и нужно править. Желательно выкладывая на форум, если были глобальные правки. Я один не в сосоянии всё проверить и исправить.
не глабальная правка, но всеж
для с4
вместо
FA=FriendList:d(FriendCount:For.0005)h(h)d(friendI D)s(friendName)d(isOnLine)h(h)
надо
FA=FriendList:d(FriendCount:For.0004)d(friendID)s( friendName)d(isOnLine)d(ObjecID)
последнее ObjecID - Под вопросом, но очень похоже на то.

Emocean
08.08.2008, 11:52
Хотелось бы, чтобы по нажатию кнопки "Перечитать инишки" не сбрасывался фильтр.
Кнопка "Убирает все пакеты текущего типа из списка пакетов" у меня почему-то не убирает пакеты от клиента.
А вообще здорово получилось)

NLObP
08.08.2008, 12:04
Хотелось бы, чтобы по нажатию кнопки "Перечитать инишки" не сбрасывался фильтр.

Сейчас не сохраняется в файл опций какие включены позиции в фильтре. Как пойму, что надо сделать, так исправлю.
// !!!не пойму как здесь сделать, пока закомментил!!!
// temp:=HexToString(Options.ReadString('Snifer','Fil ter','FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF'));
// for i:=0 to 31 do for h1:=0 to 7 do ListView2.Items.Item[i*8+h1].Checked:=Boolean((Byte(temp[i+1])shr h1) and 1);
// for i:=0 to 31 do for h1:=0 to 7 do ListView1.Items.Item[i*8+h1].Checked:=Boolean((Byte(temp[i+33])shr h1)and 1);

Кнопка "Убирает все пакеты текущего типа из списка пакетов" у меня почему-то не убирает пакеты от клиента.
А вообще здорово получилось)

А у меня убирает. Картинки кинь, где видно какие пакеты выбираешь и что галочка не убираются в фильтре.
А ты последнюю версию 3.2.10 смотрел?

Emocean
08.08.2008, 15:10
А можно ли как-то исправить такую неприятную особенность оригинального пакетхака: если выйти чаром из игры, то становится невозможно просматривать его пакеты, хотя они остаются в списке

http://s40.radikal.ru/i087/0808/c7/0c774dc4861e.gif

NLObP
08.08.2008, 15:15
А можно ли как-то исправить такую неприятную особенность оригинального пакетхака: если выйти чаром из игры, то становится невозможно просматривать его пакеты, хотя они остаются в списке

http://s40.radikal.ru/i087/0808/c7/0c774dc4861e.gif

Нельзя это исправить, по той простой причине, что после отключения, если ничего не предпринимать, список пакетов очищается. Надо и список очищать, дабы не искушать.
Сохраняй список в файл до отключения и смотри потом из него.

Emocean
08.08.2008, 15:16
Картинки кинь, где видно какие пакеты выбираешь и что галочка не убираются в фильтре.
Я даже не знаю что именно лучше запечатлеть на скриншоте...
Последовательность действий была такая: загружаю лог пакетов, выделяю пакет от клиента, нажимаю эту кнопку - и список пакетов мотается обратно на самое начало, но галочка в фильтрах напротив этого пакета не убирается, и соответственно пакет остается в логе...

Добавлено через 1 минуту
А ты последнюю версию 3.2.10 смотрел?
Да, на ней пробовал.

PanAm
08.08.2008, 17:51
При удалении скрипта на вкладке "Скрипты", логично было б завершать его, очищать окно от текста самого скрипта.

PanAm
08.08.2008, 19:01
Я могу и запущенным, не суть важно, просто не логично как сейчас сделано, а защиты от дурака ни кто не отменял :confused:

Hellboy
09.08.2008, 19:29
Такая проблема, хотел протестировать вашу новую версию на сервере la2.raid.ru , сервер Interlude , защита смена XOR ключа.
В старой версии l2phx 3.1.8 зашло, отображались пакеты в норм. виде.
Бок в l2phx 3.1.8 в том что после отправки первого пакета, последущие пакеты к примеру если я даю трейд и шлю пакет положить итем, то отменяется трейд, после первой отправки пакета, также нельзя управлять чаром, он как в заморозке, а если пишу сообщение в чате сразу дисконектит. Я вот думал что надо сменить версию с l2phx 3.1.8 на более новую. Скачал, настроил как старую версию. Вот ошибки какие , это когда в окне ввожу логин и пароль и жму ок. Решите проблему буду благодарен.

http://coderx.ru/attachment.php?attachmentid=85&stc=1&d=1218291608

Hellboy
09.08.2008, 20:55
В первом сообщении написано, что нового в этой версии. Ничего другого отличного от 3.2.0 и 3.1.8 она не может. Если шифрование трафика, то надо самостоятельно разбираться с шифрованием и править исходники newxor.dll. В этом направлении больше ничем не могу помочь.

Ну я говорю факт что есть, я незнаю какие были внесены изменения в этой новой версии, но то что при 3.1.8 нормально заходит и принимает пакеты , а в этой доходя до сервера выкидывает с куча ошибок - это факт. Не веришь, скачай патч для сервера la2.raid.ru запусти свой релиз и запусти 3.1.8 и итог будет тот же что я выше описал.

PanAm
11.08.2008, 14:48
А не подскажите, не очень разобрался в документации к ФастСкрипту, можно ли в ПХ определить свой класс, и сделать его свойства и методы доступным в скриптах?

xkor
11.08.2008, 16:29
PanAm, можно, published свойства наверно даже на автомате станут из скрипта доступны если класс добавить в скрипт, а вот методы и не публикуемые свойства придётся каждое добавлять

PanAm
11.08.2008, 17:10
Тогда есть предложение изменить / расширить скриптовцю часть программы - Добавить обработку расшифрованных пакетов до обработки скриптов, например - создать класс TCharInfo со всей информацией о чаре, заполнять ее из входящих пакетов, и дальше к полученному объекту уже можно будет обращатся из скриптов. Фактически скрипт всегда будет знать координаты чара его ID, состояние, текущие показатели и т.д. Тоже самое можно сделать с инвентарем и окружающими объектами.Объектная модель позволит сделать сам процесс достаточно универсальным, и рабочим для различных протоколов.

xkor
11.08.2008, 18:26
это уже заготовка бота получиться)

xkor
11.08.2008, 20:03
NLObP, хех, ну классы можеш сделать как у меня тут в 3-м коде http://coderx.ru/showpost.php?p=9169&postcount=19
заодно будет легче адаптировать потом скрипты под моего бота)

PanAm
12.08.2008, 14:16
Кстати, еще с пол года назад, на старом форуме, поднимал вопрос, что ПХ странно обрабатывает CryptoInit - только один раз, xkor тогда отписалса, что возможно уберет там флаг в следующей версии, чтобы обрабатывать все пакеты 0x00, но есть еще более интересный вариант - сделать на главной странице ЧекБокс Обрабатывать все пакеты CryptoInit или только первый. Получится и совместимость со старыми версиями и еще один вариант обход защит.

NLObP
13.08.2008, 06:11
3.2.12 от 10.08.2008
+ в поиске назначил кнопки по умолчанию enter/esc;
! разбираюсь с потоками;

3.2.13 от 13.08.2008
+ сделал раскраску расшифровки пакетов. В правом нижнем окне бывает сбивка раскраски
из-за переноса строк. Надо просто раздвинуть окно и снова щёлкнуть по выбранному пакету;

PanAm
13.08.2008, 15:05
3.2.12 от 10.08.2008
3.2.13 от 13.08.2008
А когда это будет доступно для скачивания и тестирования? :confused:

NLObP
13.08.2008, 22:53
Кстати, еще с пол года назад, на старом форуме, поднимал вопрос, что ПХ странно обрабатывает CryptoInit - только один раз, xkor тогда отписалса, что возможно уберет там флаг в следующей версии, чтобы обрабатывать все пакеты 0x00, но есть еще более интересный вариант - сделать на главной странице ЧекБокс Обрабатывать все пакеты CryptoInit или только первый. Получится и совместимость со старыми версиями и еще один вариант обход защит.

Этого (http://coderx.ru/showpost.php?p=6994&postcount=9) достаточно будет сделать? А это (http://coderx.ru/showpost.php?p=12059&postcount=14) из тойже оперы?

Добавлено через 4 минуты
А когда это будет доступно для скачивания и тестирования? :confused:

Выше в посте выложил файлик.

Emocean
14.08.2008, 14:17
В инфе по FastScript есть такие строки:
Вот некоторые предопределенные события, доступные в модуле FS_iEvents:
TfsNotifyEvent
TfsMouseEvent
TfsMouseMoveEvent
TfsKeyEvent
TfsKeyPressEvent
TfsCloseEvent
TfsCloseQueryEvent
TfsCanResizeEvent
Смотрите главы "Компонент TfsFormsRTTTI ", "Компонент TfsExtCtrlsRTTI " и "Компонент TfsDBCtrlsRTTI " для получения списка доступных событий.
Это значит из скрипта как-то можно обрабатывать такие события, как нажатие клавиш, клик и т.д?

Grinch
14.08.2008, 21:19
Затестил прикольно ) но обжект ИД надо в с параметром h выводить а не с d, числа длинные выходят неудобно свой высматривать

Добавлено через 3 минуты
- не работает или заглючило кнопку убрать пакет для пакетов клиента приходиться лазить в фильтр

Добавлено через 6 минут
+ поправка выборочно ) нельзя удалить кнопкой нет пинг и валит позишин )
- в просмотрщике пакет 0x27 InventoryUpdate не до конца раскрашивается в принципе не критично ) видел пакет где раскраска идёт не столбиком, а хаотично

Emocean
14.08.2008, 23:09
Запустил несколько окон, затем загрузил пакетхак, чтобы под ним еще окно загрузить, но при заходе персом вылетает такая ошибка:

http://s53.radikal.ru/i140/0808/be/e97836609475.gif

Далее сыпется куча самых разных ошибок и пакетхак даже нельзя закрыть :(

NLObP
14.08.2008, 23:41
Emocean, это родовые проблемы с потоками в пакетхаке. Думаю, изучаю, не обещаю, что сделаю.

Grinch, надеюсь поправить глюки.

xkor
15.08.2008, 00:40
Emocean, это родовые проблемы с потоками в пакетхаке. Думаю, изучаю, не обещаю, что сделаю.не завидую тебе, с взаимодействием потоков с данными я там жуткий огород нагородил)

NLObP
15.08.2008, 01:44
- не работает или заглючило кнопку убрать пакет для пакетов клиента приходиться лазить в фильтр
+ поправка выборочно ) нельзя удалить кнопкой нет пинг и валит позишин )

Исправил.

Добавлено через 51 секунду
не завидую тебе, с взаимодействием потоков с данными я там жуткий огород нагородил)

Да уж. Если ещё учесть, что я в потоках полный ноль. =(

PanAm
15.08.2008, 17:56
Этого достаточно будет сделать? Что-то около того, но ИМХО с учетом открытия РуОффа надобность в этом сильно уменьшается....

Emocean
15.08.2008, 20:37
Emocean, это родовые проблемы с потоками в пакетхаке. Думаю, изучаю, не обещаю, что сделаю.
Что-то я не могу юзать больше пакетхак вообще. Загружаю одну копию клиента, загружаю пакетхак, логинюсь персом - вылетает ошибка:

http://s39.radikal.ru/i083/0808/6f/915607c64078.gif

Не пойму в чем дело...

Grinch
15.08.2008, 21:25
Исправил
+1 а где скачать можно ?

NLObP
15.08.2008, 22:02
3.2.14 от 15.08.2008
[-] исправил скрытие пакетов заданного типа из лога пакетов;

удалил по просьбе QaK учение скиллов;

Добавлено через 1 минуту
Что-то я не могу юзать больше пакетхак вообще. Загружаю одну копию клиента, загружаю пакетхак, логинюсь персом - вылетает ошибка:

Попробуй галочку перехват ставить только на экране выбора сервера.
По моему Inject.dll сильно колбасит, пока не знаю, что делать.

Emocean
17.08.2008, 23:22
удалил по просьбе QaK учение скиллов;
Левое поле хекс преобразований немного съехало влево, и часть текста в нем не видно)

NLObP
17.08.2008, 23:49
3.2.15 от 17.08.2008
+ в расшифровке пакетов добавил вывод смещения значений;
+ поправил: левое поле хекс преобразований немного съехало влево, и часть текста в нем не видно), спс. Emocean;
+ исправил, отменив перенос строк - в правом нижнем окне бывает сбивка раскраски из-за переноса строк.

ps: с access violation совсем труба =(

Emocean
18.08.2008, 00:10
Не пробовал, как в 15й версии, а в 14й у меня такие глюки:

Сбивается раскраска пакетов:

http://s46.radikal.ru/i114/0808/b4/60ca965ebb8at.jpg (http://radikal.ru/F/s46.radikal.ru/i114/0808/b4/60ca965ebb8a.gif) http://s51.radikal.ru/i131/0808/cc/78317974a6fct.jpg (http://radikal.ru/F/s51.radikal.ru/i131/0808/cc/78317974a6fc.gif)

Ой, извиняюсь, не заметил, что В правом нижнем окне бывает сбивка раскраски из-за переноса строк.
Надо просто раздвинуть окно и снова щёлкнуть по выбранному пакету;

Emocean
18.08.2008, 00:10
И приходят такие пакеты:

http://s39.radikal.ru/i085/0808/60/c1c01d9228c7t.jpg (http://radikal.ru/F/s39.radikal.ru/i085/0808/60/c1c01d9228c7.gif) http://s49.radikal.ru/i126/0808/0b/fc0361ce686ct.jpg (http://radikal.ru/F/s49.radikal.ru/i126/0808/0b/fc0361ce686c.gif) http://s51.radikal.ru/i134/0808/14/8cf9e5d8e142t.jpg (http://radikal.ru/F/s51.radikal.ru/i134/0808/14/8cf9e5d8e142.gif)

ЗЫ. 4 изображения на один пост - маловато имхо

NLObP
18.08.2008, 00:51
По первой картинке могу сказать - не правильный файл packets.ini выбран и/или неправильно расписан пакет (на циклах начинает колбасить).
По второму и третьему рисунку - пакеты не правильно определились? Может тоже протокол не совпадает?

А вот как смещение значений сделал. Пойдет так?

NLObP
18.08.2008, 01:08
Сбивается раскраска пакетов:

Исправил.

Emocean
18.08.2008, 01:21
По первой картинке могу сказать - не правильный файл packets.ini выбран и/или неправильно расписан пакет (на циклах начинает колбасить).
Нет, инишник правильный, и "расшифровку" пакетов не трогал.

По второму и третьему рисунку - пакеты не правильно определились? Может тоже протокол не совпадает?
Да, пакеты приходят какие-то дикие =) Как будто неправильно расшифрованные. Но в то же время есть и правильные пакеты. Инишник опять же выбрал под свои "хроники". Версия 3.2.0 всё норм кажет.
Ой, а это может быть из-за того, что я сделал, как советовалось выше - включал перехват на экране выбора сервера?

А вот как смещение значений сделал. Пойдет так?Теперь очень удобно) А это равноширинный шрифт? может пробелов вначале напихать, чтоб выровнить по раскрашенному столбцу?

NLObP
18.08.2008, 03:12
Да, пакеты приходят какие-то дикие =) Как будто неправильно расшифрованные. Но в то же время есть и правильные пакеты. Инишник опять же выбрал под свои "хроники". Версия 3.2.0 всё норм кажет.

3.2.0 не падает на расшифровке потому, что не парсит их так сильно, как модификация (ошибка, когда в цикле выходим за границу пакета), то есть именно неправильная расшифровка пакета подсовывается, и именно того, где ошибка выскакивает. Надо смотреть правильность применения в пакете функций для его расшифровки. Можно для теста убрать функции из пакета в packets.ini.

Теперь очень удобно) А это равноширинный шрифт? может пробелов вначале напихать, чтоб выровнить по раскрашенному столбцу?

Посмотрю. Мне и так нравиться.

Добавил:
+ сохраняем выбранный протокол:
+ берем имя соединения из пакетов CharSelected, теперь при рестарте и выборе нового чара, имя соединения корректно меняется;
+ Стало показывать имя соединения на Камаеле, раньше не показывало из-за того, что имя бралось из UserInfo, а он в камаеле имеет другой Id.

Игнорю все ошибки и нормально продолжаю работать с пакетхаком. Сейчас для теста, рыбу ловлю на Абиссе. =)

Breadfan
18.08.2008, 06:00
Уважаемый NLObP, в последнее время начал обращать внимание на странную особенность работы пнх: играю в 6 окон (ну приходится) сразу после их загрузки все нормально и здорово, бегают стреляют и т.п и т.д. но стоит сделать несколько раз телепорт и вся система начинает жутко тормозить, пока не повисает окончательно (повторюсь это происходит при условии нескольких телепортов). Если же находиться в одном месте то все идет нормально. Ради пробы грузил их бех пнх, делал прыжки по одиночке и массово, однако данного эффекта не наблюдалось. Возможно ли бороться с этим?

xkor
18.08.2008, 06:23
Breadfan, галочка Запоминать пакеты включена?, при телепортах идёт много пакетов а пакетхак счас плохо переживает большие списки пакетов...

Emocean
18.08.2008, 11:50
то есть именно неправильная расшифровка пакета подсовывается, и именно того, где ошибка выскакиваетНо ведь я же не изменял расшифровку пакетов, только выбрал Т0, потому что проверяю на Абиссе.

Breadfan
18.08.2008, 18:47
Breadfan, галочка Запоминать пакеты включена?, при телепортах идёт много пакетов а пакетхак счас плохо переживает большие списки пакетов...
Да сейчас там уже и не галочки) но снимаю всегда при запуске ее

NLObP
19.08.2008, 02:37
Подскажите куда копать?

First chance exception at $7C812AEB. Exception class EAccessViolation with message 'Access violation at address 0040322C in module 'l2pbx.exe'. Read of address 01AFFF90'. Process l2pbx.exe (3776)

Как посмотреть в Делфи 2007 на каком месте в коде вызывается эта ошибка?

Как правильно потоки отлаживать?

xkor
19.08.2008, 02:52
Как посмотреть в Делфи 2007 на каком месте в коде вызывается эта ошибка?ставиш в параметрах компилятора создание детального map файла, далее при возникновении ошибки смотриш по какому адресу она произошла, в твоём случае 0040322C. Затем открываеш блокнотом map файл пакетхака там в начале будет небольшая таблица со смещениями секций, скорее всего первая секция будет со смещением 00401000, значит отнимаеш от 0040322C смещение 00401000 и получаеш адрес ошибки относительно начала секции - 0000222C и далее с помощью поиска ищеш в таблицах ниже какая строка какого модуля будет наиболее близка от начала к этому значению

ЗЫ скорее всего 0000222C поиском не найдёш так что придётся искать 0000222 а может и 000022 и дальше листать немног вручную

Emocean
20.08.2008, 11:51
Вроде пакеты стали нормально распознаваться :yahoo:

Добавлено через 12 часов 53 минуты
Заметил такую особенность:
если отключить перехват (снять галочку), а затем залогиниться и на экране выбора сервера включить перехват (поставить галочку), то перехват не работает до тех пор, пока снова не снимешь галочку.
Так и задумано?

Breadfan
20.08.2008, 14:34
А вот иногда выскакивает такого рода сообщения

NLObP
20.08.2008, 20:52
В версии 3.3.0 не надо галочку Перехват отключать. У меня без ошибок с ней стало работать.

Emocean
21.08.2008, 13:46
Комментарии опять синие :( А мне так нравились зелёные :D

Добавлено через 2 часа 24 минуты
А можно сделать для фильтра переключатели "Все|Отмеченные|Неотмеченные"? А то иногда так устаёшь искать нужный тип пакета среди отключенных...

Добавлено через 4 минуты
Или сортировку списка по "отмеченности"... или по имени...

xkor
22.08.2008, 02:21
[+] рефакторинг вызова скриптов;шо ещё за рефакторинг??
Рефакторинг или Реорганизация — процесс полного или частичного преобразования внутренней структуры программы при сохранении её внешнего поведения. В его основе лежит последовательность небольших эквивалентных (т.е., сохраняющих поведение) преобразований. Поскольку каждое преобразование маленькое, программисту легче проследить за его правильностью, и в то же время, вся последовательность может привести к существенной перестройке программы и улучшению её согласованности и четкости. Рефакторинг позволяет разрабатывать архитектуру программы постепенно, откладывая проектные решения до тех пор, пока не станет более ясной их необходимость.и какое это отношение имеет к вызову скриптов???

NLObP
22.08.2008, 02:21
Комментарии опять синие

Вернул зеленый цвет комментариям.

xkor
22.08.2008, 02:23
NLObP, кстати, будет время глянь на расцветку в моём кусочке 4го пакетхака, че то я там помойму с оттенками намудрил...

NLObP
22.08.2008, 02:28
шо ещё за рефакторинг??
и какое это отношение имеет к вызову скриптов???

Ну, может неправильно обозвал. У тебя там через три п. вызов был, я укоротил.


...
procedure ExecuteScripts(var msg: TMessage); Message WM_ExecuteScripts;
...


procedure TL2PacketHackMain.ExecuteScripts(var msg: TMessage);
var
i: Integer;
packet: string;
FromServer: boolean;
id: byte;
begin
packet:=pstr(msg.WParam)^;
FromServer:=Boolean(msg.LParamLo);
id:=msg.LParamHi;
SetCurrentDir(ExtractFilePath(ParamStr(0)));
EnterCriticalSection(_cs);
for i:=0 to CheckListBox2.Count-1 do begin
if CheckListBox2.Checked[i] then begin
Scripts[i].fsScript.Variables['pck']:=packet;
Scripts[i].fsScript.Variables['ConnectID']:=id;
Scripts[i].fsScript.Variables['ConnectName']:=Thread[id].Name;
Scripts[i].fsScript.Variables['FromServer']:=FromServer;
Scripts[i].fsScript.Variables['FromClient']:=not FromServer;
Scripts[i].fsScript.Execute;
packet:=Scripts[i].fsScript.Variables['pck'];
end;
end;
LeaveCriticalSection(_cs);
end;
...

procedure PacketProcesor(PacketData: array of Byte; SendSocket: TSocket; id, From: Byte);
...
//>>>>>>>>!!!!!!!!!<<<<<<<<
//пакет от сервера - клиенту
a.a:=Word(true);
a.b:=id;
SendMessage(L2PacketHackMain.Handle, WM_ExecuteScripts, Integer(@temp),a.ab);
//>>>>>>>>!!!!!!!!!<<<<<<<<
...
end;

Emocean
22.08.2008, 09:45
[+] в расшифровке пакетов смещение значений теперь в HEX для выравнивания;А для чего так? Разве не удобнее было подставлять в Read и Write значения смещения в десятичной системе? Как теперь правильно надо писать? 0x02, 0x06, 0x0A?..

AlexS
22.08.2008, 11:44
Присваиваю переменной pck пустой пакет, но пакет на сервер отправляется без изменений, а хотелосьбы чтобы при обнулении пакета он на сервер не отправлялся.
Пример кода:

if FromClient and (pck=HStr('34 0B 00 00 00')) then // Социальное действи "Аплодисменты"
begin
// Требуемые действия
pck := '';
exit;
end;
В результате этого кода персонажь выполняет соц. действие "Аплодисменты".

Emocean
22.08.2008, 12:48
Да, только что тоже столкнулся с такой же неприятностью.

QaK
22.08.2008, 12:51
if FromClient and (pck=HStr('34 0B 00 00 00')) then // Социальное действи "Аплодисменты"
begin
// Требуемые действия
pck := '';
exit;
end;
В результате этого кода персонажь выполняет соц. действие "Аплодисменты".
так пакет отправляется на сервер, или перс выполняет соц действие?
по просмотру смотрите, а не в окно клента/бота.

Emocean
22.08.2008, 12:56
Я в своём скрипте убиваю пакет от сервера, но он всё равно приходит клиенту. От клиента к серверу тоже доходят убиваемые мной команды в чат, к примеру.

AlexS
22.08.2008, 15:27
В том то все и дело что на сервер после "обнуления" отправляется нормальный пакет а не нулевой, а в скрипте он является нулевым.

pck:='';
if (pck='') then exit;

по if выйду из скрипта но не обнуленный пакет будет отправлен на сервер.

Добавлено через 6 минут
В версиях 3.1.8-3.2.0 с данной проблемой не сталкивался.

Emocean
22.08.2008, 16:12
В 3.3.0 вроде тоже норм было.

Grinch
22.08.2008, 22:28
NLObP, проверь 3.3.0 чёта снова троян говорит на 3.3.1 не ругается

NLObP
23.08.2008, 02:15
Я в своём скрипте убиваю пакет от сервера, но он всё равно приходит клиенту. От клиента к серверу тоже доходят убиваемые мной команды в чат, к примеру.

Нашёл ошибку. Сейчас выложу.

3.3.2 от 23.08.2008
[+] исправил - В скрипте убиваю пакет от сервера, но он всё равно приходит клиенту;
Выложил исходники для сомневающихся.

Файл l2phx332_by_NLObP.rar получен 2008.08.22 23:03:24 (CET)
Текущий статус: закончено
Результат: 7/35 (20%)
Форматированные
Печать результатов Антивирус Версия Обновление Результат
AhnLab-V3 2008.8.21.0 2008.08.22 -
AntiVir 7.8.1.23 2008.08.22 TR/ATRAPS.Gen
Authentium 5.1.0.4 2008.08.22 -
Avast 4.8.1195.0 2008.08.22 -
AVG 8.0.0.161 2008.08.22 PSW.OnlineGames.AYSO
BitDefender 7.2 2008.08.22 -
CAT-QuickHeal 9.50 2008.08.22 TrojanPSW.OnLineGames.rymz
ClamAV 0.93.1 2008.08.22 -
DrWeb 4.44.0.09170 2008.08.22 -
eSafe 7.0.17.0 2008.08.21 -
eTrust-Vet 31.6.6040 2008.08.22 -
Ewido 4.0 2008.08.22 -
F-Prot 4.4.4.56 2008.08.21 -
F-Secure 7.60.13501.0 2008.08.22 -
Fortinet 3.14.0.0 2008.08.22 -
GData 2.0.7306.1023 2008.08.20 -
Ikarus T3.1.1.34.0 2008.08.22 -
K7AntiVirus 7.10.425 2008.08.22 Trojan-PSW.Win32.OnLineGames.rymz
Kaspersky 7.0.0.125 2008.08.22 -
McAfee 5368 2008.08.22 -
Microsoft 1.3807 2008.08.22 -
NOD32v2 3381 2008.08.22 -
Norman 5.80.02 2008.08.22 -
Panda 9.0.0.4 2008.08.22 Suspicious file
PCTools 4.4.2.0 2008.08.22 -
Prevx1 V2 2008.08.22 -
Rising 20.58.42.00 2008.08.22 -
Sophos 4.32.0 2008.08.22 Mal/Behav-053
Sunbelt 3.1.1571.1 2008.08.22 -
Symantec 10 2008.08.22 -
TheHacker 6.3.0.6.058 2008.08.22 -
TrendMicro 8.700.0.1004 2008.08.22 -
ViRobot 2008.8.22.1346 2008.08.22 -
VirusBuster 4.5.11.0 2008.08.22 -
Webwasher-Gateway 6.6.2 2008.08.22 Trojan.ATRAPS.Gen
Дополнительная информация
File size: 755566 bytes
MD5...: 590274aaf8ad38ca15e6501fde5ea564
SHA1..: d859ca82d6d07904c87a1739df2ca797a5b82187
SHA256: d15c266c59dd4e191f2cf88be20c2296a0314fce507c2231af 28c7314208b259
SHA512: 7b0dc57b0566c8e4351067d795a1c2624d345e28b9d64944f7 47fb0c2a3c89c2
93d34d9abbf4d519396447426552b4575a3f9f6131cb2f49a6 db4b297e1cc467

Добавлено через 22 минуты
А для чего так? Разве не удобнее было подставлять в Read и Write значения смещения в десятичной системе? Как теперь правильно надо писать? 0x02, 0x06, 0x0A?..

Это чтобы не делать выравнивание. В Hex все время 4 символа. А писать наверно надо $02, $06, $0A или в калькуляторе(уме) в десятичное перевести. :)

Breadfan
23.08.2008, 09:36
Заметил одну особенность: некоторые сервера не следят за количеством предметов в сумке и после покупки\обмена можно получить ситуацию когда инвентарь полон на (например) 154 ячейки из 150 )). Естественно если в этот момент сработает процедура CreateItemBase то возникает ошибка переполнения массива. В предыдущих версиях пакетхака достаточно было подтвердить сообщение об ошибке и выключить выполняемый скрипт, после чего можно было продолжить работу. Сейчас же программа продолжает блокировать входящие пакеты даже после отмены выполнения ошибочного скрипта.

NLObP
24.08.2008, 03:59
Завершать работу с пакетхак надо так:
- Останавливаем скрипты.
- Закрываем все клиенты.
- Закрываем пакетхак.
Иначе можно увидеть разнообразные сообщения об ошибках.
Еще. Если закрыть пакетхак, соединение рвется. Клиент остается на запросе логин/пароль. Второй раз запустив пакетхак пропатчить клиент не получиться, клиент падает с критической ошибкой. Связано стем, что инжект не убирается при выходе из пакетхака.

Добавлено через 10 часов 36 минут
3.3.3 от 23.08.2008
[+] в редакторе скриптов горячие клавиши:
ctrl-S - сохранение,
ctrl-F - поиск,
ctrl-R - поиск с заменой,
ctrl+F9 проверка скрипта;
[!] после поиска с заменой undo невозможна;

PanAm
24.08.2008, 17:29
Кстати, стало неудобно - при разрыве соединения лог пакетов отчищается, и теперь невозможно отследить с какого пакета крит.

NLObP
24.08.2008, 18:21
Кстати, стало неудобно - при разрыве соединения лог пакетов отчищается, и теперь невозможно отследить с какого пакета крит.

Можно исправить как было.

xkor
24.08.2008, 21:05
NLObP, лучше думаю сделать опционально автологирование пакетов в файл, только вот как файл обзывать...

Grinch
24.08.2008, 21:17
вообще то было бы прикольней если б 3.3.3 версию расшарили )

NLObP
24.08.2008, 22:20
вообще то было бы прикольней если б 3.3.3 версию расшарили )

Выявилась ошибка. Косяк пока вот какой.
//поиск начинается всегда с начала строки
//если слово CallPr -> CallProc = CallPrococococococ... зацикливание!

Emocean
24.08.2008, 23:21
Двойной клик по слову в скрипте теперь выделяет не слово, а всю строку :(

NLObP
25.08.2008, 03:07
Двойной клик по слову в скрипте теперь выделяет не слово, а всю строку :(

Да, а надо слово?

QaK
25.08.2008, 10:34
//если слово CallPr -> CallProc = CallPrococococococ... зацикливание!Попробуй поменяй имя процедуры на что-нить абсолютно другое, GetPr, например.

Emocean
25.08.2008, 10:44
Да, а надо слово?Ну лично мне так было удобнее. Если нужно выделить название переменной, процедуры, функции, то просто дабл клик по нему, а далее можно копировать или заменить другим.
Например, в опере два клика - слово, три - предложение, четыре - абзац.

xkor
25.08.2008, 15:47
Например, в опере два клика - слово, три - предложение, четыре - абзац.не только в опере, так почти везде, эт уже стандарт можно сказать)

NLObP
25.08.2008, 22:10
Попробуй поменяй имя процедуры на что-нить абсолютно другое, GetPr, например.

Если менять одно слово на совершенно другое, то всё отлично работатет. Но стоит сделать как я уже писал - зависон.

Добавлено через 5 минут
Если нужно выделить название переменной, процедуры, функции, то просто дабл клик по нему, а далее можно копировать или заменить другим.

Сделал.

Добавлено через 2 минуты
NLObP, лучше думаю сделать опционально автологирование пакетов в файл, только вот как файл обзывать...

Если выбрали "Запоминать пакеты", то при разрыве связи с сервером сохраненяем лог в файл с именем соединения.

Добавлено через 30 минут
Заметил одну особенность: некоторые сервера не следят за количеством предметов в сумке и после покупки\обмена можно получить ситуацию когда инвентарь полон на (например) 154 ячейки из 150 )). Естественно если в этот момент сработает процедура CreateItemBase то возникает ошибка переполнения массива. В предыдущих версиях пакетхака достаточно было подтвердить сообщение об ошибке и выключить выполняемый скрипт, после чего можно было продолжить работу. Сейчас же программа продолжает блокировать входящие пакеты даже после отмены выполнения ошибочного скрипта.

А если на таких серверах массив больше, чем размер инвентаря сделать?
Попробуй кнопку "Обновить список" нажать. Мне при глюках в скриптах помогало.

Добавлено через 2 минуты
PS: А какая версия делфи 2007 круче - Архитект или Энтерпрайз?

PanAm
26.08.2008, 16:24
PS: А какая версия делфи 2007 круче - Архитект или Энтерпрайз?по видимому архитект
http://www.codegear.com/article/37818/images/37818/radstudio-2007-datasheet.pdf

Professional
CodeGear RAD Studio 2007 Professional combines Delphi, Delphi for .NET, and C++Builder in one environment for rapidly developing Windows and .NET 2.0 applications on and for Windows 2000, XP, and Vista. Includes local database access to Blackfish SQL, InterBase, and MySQL.

Enterprise
CodeGear RAD Studio 2007 Enterprise includes everything in the Professional edition plus database server connectivity to Blackfish SQL, InterBase, MySQL, Microsoft SQL, Oracle, DB2, Informix and Sybase. Also included are additional UML modeling functionality and expanded VCL for the Web for AJAX web site development.

Architect
CodeGear RAD Studio 2007 Architect provides the most complete solution for modeling and developing Windows and .NET 2.0 applications. It includes everything in the Enterprise edition plus Enterprise Core Objects (ECO) for rapid model-driven development, and advanced UML modeling including import and transformation.

на 4 странице сравнее по компонентам

ak47
26.08.2008, 16:42
запуская прогу, запускаю клиент и сразу ошибка
http://s46.radikal.ru/i113/0808/5d/c69ec76a6084.jpg
после этой ошибки ещё одна
http://s40.radikal.ru/i087/0808/7c/986d4e31907e.jpg
и так при каждом запуске елиента

NLObP
26.08.2008, 20:18
запуская прогу, запускаю клиент и сразу ошибка

Адрес сервера какой? У меня на lagam.net так же, а на абиссе и астериосе нормально работает.

ak47
27.08.2008, 01:45
Адрес сервера какой? У меня на lagam.net так же, а на абиссе и астериосе нормально работает.
Да да тот же lagam. Вот уже что только не пробывал. Серьездно на лагаме поработал ГМ. кстате если знаете прогу l2control то она пашет, и все таки можно как-то к серверу подключиться.

Breadfan
27.08.2008, 14:28
А возможно ли сделать нумерацию строк и столбцов в окошке "Выделенный пакет" ?

xkor
27.08.2008, 14:47
Breadfan, хм, а её нету?, в оригинальном пакетхаке же была под самим пакетом, хотя NLObP наверн 3.1.8 переделывал в которой ещё небыло...

PanAm
28.08.2008, 17:26
Появилась еще одна бредовая мдея :confused:
Вставить еще одну функцию в ФастСкрипт, которая будет возращать строку с названием процесса пославший/принимающий пакет - тогда можно будет в скрипте четко различать бота и клиента.

QaK
28.08.2008, 17:27
Вставить еще одну функцию в ФастСкрипт, которая будет возращать строку с названием процесса пославший/принимающий пакет - тогда можно будет в скрипте четко различать бота и клиента.а практический смысл ее?

PanAm
28.08.2008, 17:43
нужна :D
а вообще для того чтобы боту подсунуть правельный KeyInit, когда еще нет имени соеденения.

NLObP
29.08.2008, 04:02
Выложил версию 3.3.3 от 29.08.2008.
[+] в редакторе скриптов горячие клавиши:
ctrl-S - сохранение,
ctrl-F - поиск,
ctrl-R - поиск с заменой,
ctrl+F9 проверка скрипта;
[!] после поиска с заменой undo невозможна;
[+] если запоминать пакеты включено, то при отключении от сервера пишем лог пакетов в папку .\log\имя_соединения.txt;

Добавлено через 51 минуту
Фича: чтобы искать и/или заменять с начала текста надо закрыть и снова открыть окно поиска/замены.

xkor
29.08.2008, 16:20
[+] если запоминать пакеты включено, то при отключении от сервера пишем лог пакетов в папку .\log\имя_соединения.txt;мне кажется лучше будет log\имя_соединения_дата.txt или log\дата_имя_соединения.txt

NLObP
30.08.2008, 01:24
3.3.4 от 30.08.2008
+ при дабл-клике в поле разбора выделяется кусок пакета соответствующий этой строке
+ исправил работу 'заменить все' (съедался конец строки);
+ дополнил, если включено запоминать пакеты, то при отключении от сервера пишем лог
пакетов в файл 'logs\'+Thread[ID].Name+'_'+datetostr(now)+'.txt');

german
30.08.2008, 02:44
нлобп не переплюнь хкора с его пх4

NLObP
30.08.2008, 04:01
нлобп не переплюнь хкора с его пх4

Как я его переплюну, если я кроме рюшечек ничего не могу?!

xkor
31.08.2008, 01:37
NLObP, ну рюшечки у тебя надо сказать очень хорошие)

Breadfan
31.08.2008, 02:34
В папке скриптов накопилось порядка 55 кусочков, и стала появлятся ошибка.

http://img165.imageshack.us/img165/2623/erno7.th.jpg (http://img165.imageshack.us/my.php?image=erno7.jpg)

Кстати, для камаеля неверна расшифровка пакета #$07-BuyList


оффтоп: когда-то только начинал заниматься борьбой, и друг тренера сказал:"Все норм Санек, еще тренера завалишь :)", на что тренер отреагировал незамедлительно:"Сразу ... вылетишь отсюда "оО ;)

NLObP
31.08.2008, 04:40
В папке скриптов накопилось порядка 55 кусочков, и стала появлятся ошибка

Ограничение на количество скриптов - их может быть всего 64.
У меня похожая ошибка если более 65 скриптов в папке SCRIPTS.
Лишние скрипты я кладу в другую папку.

Emocean
31.08.2008, 14:39
3.3.4 от 30.08.2008
Почему-то в этой версии у меня краказярбра вместо имени соединения и пакеты тоже отображаются перепутанные. А в 3.3.3 всё нормально.

valter
01.09.2008, 03:31
зачем менюшку с учением скилов убрали(:fool:

Grinch
01.09.2008, 06:19
зачем менюшку с учением скилов убрали(
что б дегенераты не задавали дебильных вопросов почему эта фишка не работает. те что то не нравиться имхо ищи струю версию пнх

NLObP
02.09.2008, 02:03
Почему-то в этой версии у меня краказярбра вместо имени соединения и пакеты тоже отображаются перепутанные. А в 3.3.3 всё нормально.

Было один раз замечено такое. В течении сеанса игры приходили пакеты s>c CharSelected. По этому пакету сейчас определяется имя соединения.
По идее он не должн приходить, кроме как при выборе чара. Видимо ошибки в приеме/расшифровке пакетов?

dmitry501
03.09.2008, 09:13
У меня D7 и я к ней привык. Пожалуйста, уберите в настройках для D2006 - IDE-Tools-Options-Environment Options-VCL Designer-Show Virtual screen position
Это отключит сохранение дебильных ExplicitLeft, ExplicitTop, ExplicitWidth, ExplicitHeight, которые всё-равно ReadOnly
И сохраняйте форму main.pas в CP-1251, а не в unicode

И проект станет почти совместим с D7
Если еще и TrayIcon сделать нормально, без компонентов, а это 10 строчек кода, то будет вообще полная совместимость.

p.s.
Посмотрел, что можно сделать с trayicon
Раз уж используем JVCL, то кинем на форму JvTrayIcon вместо используемого TrayIcon1, назначим ему свойства Active=True и PopupMenu=PopupMenu1

Будет работать нормально и в D7 и в D2006 без изменений.

PanAm
03.09.2008, 15:05
Если еще и TrayIcon сделать нормально+1, TrayIcon, кстати не работает в висте.

xkor
03.09.2008, 15:06
PanAm, оО, сам компонент точно в висте пашет, мой патчик к валкеру его использует и на висте в трее появляется нормально...

PanAm
03.09.2008, 17:23
ну тогда хз, у меня на ХР/2003 в трей сворачивается, а в висте кнопочки нет.

NLObP
04.09.2008, 00:22
Пожалуйста, уберите в настройках для D2006 - IDE-Tools-Options-Environment Options-VCL Designer-Show Virtual screen position
Это отключит сохранение дебильных ExplicitLeft, ExplicitTop, ExplicitWidth, ExplicitHeight, которые всё-равно ReadOnly
И сохраняйте форму main.pas в CP-1251, а не в unicode

Сделал.

Если еще и TrayIcon сделать нормально, без компонентов, а это 10 строчек кода, то будет вообще полная совместимость.

Можно мне дать исходник этих 10 строк, я их вставлю.

3.3.5 от 02.09.2008
+ дополнил имя лога временем записи;
+ добавил проверку на отсутствие папки logs;
+ добавил проверку на превышение в папке scripts более 64 скриптов;

PS: просьба выкладывать замеченные баги/ошибки с указанием версии проги

Добавлено через 6 минут
ну тогда хз, у меня на ХР/2003 в трей сворачивается, а в висте кнопочки нет.

В Висте кнопочка в_трей на форме налазиет на другие.

dmitry501
04.09.2008, 05:35
Кхм, файлы .dfm забыл добавить?
Вот проект от D7
Заменен TTRrayIcon на TJvTrayIcon

NLObP
04.09.2008, 12:10
Кхм, файлы .dfm забыл добавить?
Точно, забыл.

PS: Выложил все исходные файлы.

Emocean
05.09.2008, 12:34
Почему-то в этой версии у меня краказярбра вместо имени соединения и пакеты тоже отображаются перепутанные. А в 3.3.3 всё нормально.Неужели ни у кого больше нет такой проблемы? Я из-за этого не могу пользоваться версиями старше 3.3.3 :(

NLObP
05.09.2008, 13:22
Неужели ни у кого больше нет такой проблемы? Я из-за этого не могу пользоваться версиями старше 3.3.3 :(

У меня на Граци asterios.ru периодически появляется такая ошибка. Один раз подключишся, всё нормально, другой раз - сбой дешифровки.

Есть вариант решения проблемы, если брать имя соединения не из пакета,
0B=CharSelected:s(Name) - Камаель
15=CharSelected:s(Name) - Интерлюдия
а из
32=UserInfo:d(X)d(Y)d(Z)d(Heading)d(ObjectID)s(Nam e) - Камаель
04=UserInfo:d(X)d(Y)d(Z)d(Heading)d(ObjectID)s(Nam e) - Интерлюдия

По логике, CharSelected, однозначно определяет, кого мы выбрали, но бывает сбивка, а UserInfo всё время получаем. Будет ли толк, ведь сбивка шифрации пошла? В версии 3.1.8 и 3.2.0 имя соединения берется из 04=UserInfo (первый пакет). Для Камаеля тоже из него берется, поэтому нет имени соединения. Сделать?

exit
05.09.2008, 13:34
а как было в версии 3.3.3? она же работает без сбивки.

xkor
05.09.2008, 13:43
у меня кста на интерлюдии тож имя кракозябиной отображается хотя все пакеты правильно расшифровываются)
ЗЫ версия 3.3.5

NLObP
05.09.2008, 15:20
а как было в версии 3.3.3? она же работает без сбивки.

Попробуйте inject.dll и newxor.dll взять из версии 3.3.3 может это из-за них?

Emocean
05.09.2008, 15:36
Взял newxor.dll от 3.3.3. Всё стало нормально. Чем они отличаются?

NLObP
06.09.2008, 01:18
Взял newxor.dll от 3.3.3. Всё стало нормально. Чем они отличаются?

Делал
3.2.13 от 13.08.2008
+ добавил в newxor.dpr - CryptoInit: Boolean; //Добавил новый флаг by PanAm

library newxor;

uses
windows,
Coding in 'Coding.pas';

type
TXorCoding = class(TCodingClass)
private
keyLen: Byte;
CryptoInit: Boolean; //Добавил новый флаг
public
constructor Create;
procedure InitKey(const XorKey; Interlude: Boolean = False);override;
procedure DecryptGP(var Data; const Size: Word);override;
procedure EncryptGP(var Data; const Size: Word);override;
end;

TXorCodingOut = class(TCodingClass)
private
keyLen: Byte;
public
constructor Create;
procedure InitKey(const XorKey; Interlude: Boolean = False);override;
procedure DecryptGP(var Data; const Size: Word);override;
procedure EncryptGP(var Data; const Size: Word);override;
end;

function CreateCoding(Value:PCodingClass): HRESULT; stdcall;
begin
Result:=0;
try
Value^:=TXorCoding.Create;
except
Result:=-1;
Value^:=nil;
end;
end;

function CreateCodingOut(Value:PCodingClass): HRESULT; stdcall;
begin
Result:=0;
try
Value^:=TXorCodingOut.Create;
except
Result:=-1;
Value^:=nil;
end;
end;

exports CreateCoding, CreateCodingOut;

{ TXorCoding }

constructor TXorCoding.Create();
begin
FillChar(GKeyS[0],SizeOf(GKeyS),0);
FillChar(GKeyR[0],SizeOf(GKeyR),0);
keyLen := 0;
CryptoInit := false;
End;

procedure TXorCoding.DecryptGP(var Data; const Size: Word);
var
k:integer;
pck:array[0..$4FFF] of Byte absolute Data;
begin
if pck[0] = 0 then begin //вставил проверку
CryptoInit := true; //поднял флаг
InitKey(pck[2]); //устанавил новый ключ шифрования, InitKey(pck[2], true); для интрерлюда
exit; //дальнейшая обработка не нужна, вышел
end;
for k:=size-1 downto 1 do
pck[k]:=pck[k] xor GKeyR[k and keyLen] xor pck[k-1];
if size<>0 then pck[0]:=pck[0] xor GKeyR[0];
Inc(PLongWord(@GKeyR[keyLen-7])^,size);
end;

procedure TXorCoding.EncryptGP(var Data; const Size: Word);
var
i:integer;
pck:array[0..$4FFF] of Byte absolute Data;
begin
if CryptoInit then begin //это был CryptoInit
CryptoInit := false; //сбосил флаг
exit; //шифрация не требуется - вышел
end;
if size<>0 then pck[0]:=pck[0] xor GKeyS[0];
for i:=1 to size-1 do
pck[i]:=pck[i] xor GKeyS[i and keyLen] xor pck[i-1];
Inc(PLongWord(@GKeyS[keyLen-7])^,size);
end;

procedure TXorCoding.InitKey(const XorKey; Interlude: Boolean = False);
const
KeyConst: array[0..3] of Byte = ($A1,$6C,$54,$87);
KeyIntrl: array[0..7] of Byte = ($C8,$27,$93,$01,$A1,$6C,$31,$97);
var key2:array[0..15] of Byte;
begin
if Interlude then begin
keyLen:=15;
Move(XorKey,key2,8);
Move(KeyIntrl,key2[8],8);
end else begin
keyLen:=7;
Move(XorKey,key2,4);
Move(KeyConst,key2[4],4);
end;
Move(key2,GKeyS,16);
Move(key2,GKeyR,16);
end;

{ TXorCodingOut }

constructor TXorCodingOut.Create;
begin
FillChar(GKeyS[0],SizeOf(GKeyS),0);
FillChar(GKeyR[0],SizeOf(GKeyR),0);
keyLen := 0;
end;

procedure TXorCodingOut.DecryptGP(var Data; const Size: Word);
var
k:integer;
pck:array[0..$4FFF] of Byte absolute Data;
begin
for k:=size-1 downto 1 do
pck[k]:=pck[k] xor GKeyR[k and keyLen] xor pck[k-1];
if size<>0 then pck[0]:=pck[0] xor GKeyR[0];
Inc(PLongWord(@GKeyR[keyLen-7])^,size);
end;

procedure TXorCodingOut.EncryptGP(var Data; const Size: Word);
var
i:integer;
pck:array[0..$4FFF] of Byte absolute Data;
begin
if size<>0 then pck[0]:=pck[0] xor GKeyS[0];
for i:=1 to size-1 do
pck[i]:=pck[i] xor GKeyS[i and keyLen] xor pck[i-1];
Inc(PLongWord(@GKeyS[keyLen-7])^,size);
end;

procedure TXorCodingOut.InitKey(const XorKey; Interlude: Boolean);
const
KeyConst: array[0..3] of Byte = ($A1,$6C,$54,$87);
KeyIntrl: array[0..7] of Byte = ($C8,$27,$93,$01,$A1,$6C,$31,$97);
var key2:array[0..15] of Byte;
begin
if Interlude then begin
keyLen:=15;
Move(XorKey,key2,8);
Move(KeyIntrl,key2[8],8);
end else begin
keyLen:=7;
Move(XorKey,key2,4);
Move(KeyConst,key2[4],4);
end;
Move(key2,GKeyS,16);
Move(key2,GKeyR,16);
end;

begin

end.


PS: Надо из 3.2.0 newxor.dpr нормальный брать.

Добавлено через 9 часов 15 минут
3.3.6 от 05.09.2008
[-] вернул newxor.dpr как в версии 3.2.0;
[+] заменен TTRrayIcon на TJvTrayIcon;

Файл l2pbx.exe получен 2008.09.05 22:16:13 (CET)
Текущий статус: закончено
Результат: 2/36 (5.56%)
Форматированные
Печать результатов Антивирус Версия Обновление Результат
AhnLab-V3 2008.9.5.1 2008.09.05 -
AntiVir 7.8.1.28 2008.09.05 -
Authentium 5.1.0.4 2008.09.05 -
Avast 4.8.1195.0 2008.09.05 -
AVG 8.0.0.161 2008.09.05 -
BitDefender 7.2 2008.09.05 -
CAT-QuickHeal 9.50 2008.09.02 -
ClamAV 0.93.1 2008.09.05 -
DrWeb 4.44.0.09170 2008.09.05 -
eSafe 7.0.17.0 2008.09.03 -
eTrust-Vet 31.6.6071 2008.09.05 -
Ewido 4.0 2008.09.05 -
F-Prot 4.4.4.56 2008.09.05 -
F-Secure 8.0.14332.0 2008.09.05 -
Fortinet 3.14.0.0 2008.09.03 -
GData 19 2008.09.05 -
Ikarus T3.1.1.34.0 2008.09.05 -
K7AntiVirus 7.10.443 2008.09.05 -
Kaspersky 7.0.0.125 2008.09.05 -
McAfee 5378 2008.09.05 -
Microsoft 1.3903 2008.09.05 -
NOD32v2 3419 2008.09.05 -
Norman 5.80.02 2008.09.05 -
Panda 9.0.0.4 2008.09.05 -
PCTools 4.4.2.0 2008.09.05 -
Prevx1 V2 2008.09.05 -
Rising 20.60.42.00 2008.09.05 -
Sophos 4.33.0 2008.09.05 Mal/Basine-C
Sunbelt 3.1.1610.1 2008.09.05 -
Symantec 10 2008.09.05 -
TheHacker 6.3.0.8.072 2008.09.04 -
TrendMicro 8.700.0.1004 2008.09.05 -
VBA32 3.12.8.5 2008.09.05 -
ViRobot 2008.9.5.1365 2008.09.05 -
VirusBuster 4.5.11.0 2008.09.05 -
Webwasher-Gateway 6.6.2 2008.09.05 Virus.Win32.FileInfector.gen!90 (suspicious)
Дополнительная информация
File size: 1669632 bytes
MD5...: c28108e095410bd106c965b9779a600e

PanAm
07.09.2008, 04:51
3.3.6 от 05.09.2008
не сохраняется при выходе состояние переключателя "способ внедрения.."

NLObP
07.09.2008, 11:34
3.3.6 от 05.09.2008
не сохраняется при выходе состояние переключателя "способ внедрения.."

Никогда и не сохранялось.

[+] сохраняем выбранный метод внедрения;

ennot
07.09.2008, 16:21
Версия 3.3.6. И есть два ноута: на первом стоит Vista Buissness x32, на втором Vista Home Premium SP1 x32. Копии линейки однаковые. Запуск от админа. Контроль юзеров выключен. FW нет. Антивирусов нет.

Так вот проблема в том что на первом ноуте все работает, а на втором линейка трапается с криками (крики ниже) сразу после авторизации (или после выбора сервера, но сообщение чуть иначе). Изменение способа inject не влияет.

Где искать камни?

ICQ 394054815

OS: Windows XP 5.1 (Build: 2600)
CPU: GenuineIntel PentiumPro-class processor @ 1796 MHz with 1023MB RAM
Video: NVIDIA GeForce 8400M GT (111)

General protection fault!

History: NConsoleWnd::RequestAuthLogin <- NCVirtualWndMain::PassToFocusedWindow <- NCVirtualWndMain::PassToFocusedWindow <- NCVirtualWndMain::PassToFocusedWindow <- NCVirtualWndMain::PassToFocusedWindow <- NCVirtualWndMain::DispatchWndMsg <- NConsoleWnd::DispatchWndMsgX <- NConsoleWnd::DispatchWndMsg <- UWindowsViewport::ViewportWndProc <- WWindow::StaticProc <- MessagePump <- MainLoop

xkor
07.09.2008, 16:23
ennot, eula-e.dat есть в папке system клиента?, если нет то из за того что нет)

ennot
07.09.2008, 16:42
ennot, eula-e.dat есть в папке system клиента?, если нет то из за того что нет)

Разумеется есть. Клиенты полностью одинаковые (специально синкнул).

Такой трап возникает если "перехват" включать после логина и перед выбором сервера.


OS: Windows XP 5.1 (Build: 2600)
CPU: GenuineIntel PentiumPro-class processor @ 1796 MHz with 1023MB RAM
Video: NVIDIA GeForce 8400M GT (111)

General protection fault!

History: UNetworkHandler::Tick <- Function Name=RevivePacket <- UGameEngine::Tick <- UpdateWorld <- MainLoop

Breadfan
07.09.2008, 22:09
Чтобы исключить перехват до выбора гейм сервера, добавь в Неигровые порты 2106;

PanAm
08.09.2008, 14:38
не писал, думал привыкну, а нет.. :D
на вкладке "просмотр" в списке паетов, можно номер пакета поставить первым столбцом?

ennot
08.09.2008, 19:16
Чтобы исключить перехват до выбора гейм сервера, добавь в Неигровые порты 2106;

Это ясно, но проблему не решает... так как падает и во время выбора сервера (я выше написал об этом).

Так-же встретилась машина с Windows 2003 на которой тоже линейка падает в момент коннекта.

Вообщем тут что-то во внедрении в код не так происходит. Мыслей нет?


ps. похоже пора ставить винайс =)

NLObP
08.09.2008, 21:17
не писал, думал привыкну, а нет.. :D
на вкладке "просмотр" в списке паетов, можно номер пакета поставить первым столбцом?

[+] на вкладке "просмотр" в списке паетов, можно поставить первым столбцом номер пакета;

PanAm
09.09.2008, 15:31
и еще
В расшифровке пакетов, лучше смещение показывать в десятичной системе, отсчитывать будет удобней.

APXAHGEJI
09.09.2008, 16:00
Поддерживаю ^

Breadfan
09.09.2008, 17:36
Не, в 16-ой норм, например: смещение 2E - ищем строку (2+1) столбец Е; смещение 32 - ищем строку (3+1) стобец 2 вот и все и при этом сохраняется читабельная визуальная структура пакета

PanAm
09.09.2008, 18:46
Не, в 16-ой норм, например: смещение 2E - ищем строку (2+1) столбец Е; смещение 32 - ищем строку (3+1) стобец 2 вот и все и при этом сохраняется читабельная визуальная структура пакетадык строки плавающии...

Добавлено через 14 минут
на вкладке "посылка" разбор пакета идет вроде только по С4, а хотелось бы или сделать соответствующии переключатели для смены протокола или брать параметры с вкладки "просмотр"

APXAHGEJI
10.09.2008, 07:21
Не, в 16-ой норм, например: смещение 2E - ищем строку (2+1) столбец Е; смещение 32 - ищем строку (3+1) стобец 2 вот и все и при этом сохраняется читабельная визуальная структура пакета

Найти нужную часть пакета можно и двойным щелчком по его описанию,
а вот в здоровом пакете высчитывать смещение для скрипта сложнее.

xkor
10.09.2008, 10:32
а вот в здоровом пакете высчитывать смещение для скрипта сложнеечем?

Emocean
10.09.2008, 10:36
чем?В десятичной системе гораздо привычнее.
А можно переключатель?) чтобы всем удобно было)

APXAHGEJI
10.09.2008, 16:13
чем?
Что 'чем'? Чем вычислять или чем сложнее?)))

xkor
10.09.2008, 16:33
чем сложнее)

APXAHGEJI
10.09.2008, 17:42
Выщитывать вручную начало нужной инфы вообще проблематично (пример, информация в UserInfo о кол-ве ЦП, если считать от начала там вапще жесть скока + смещение на ник, но там хоть с конца мона))) и очень хорошо что сделали нумерацию, но если бы еще ее не приходилось пихать в преобраователь, а сразу использовать было бы вообще замечательно))

PanAm
10.09.2008, 19:11
APXAHGEJI, +1
не всегда удобно считать 9+7=10 чаще кажется =16 :)

xkor
10.09.2008, 20:35
ну дык так и пишите в скрипт: $19+$7 например...

Kusha
12.09.2008, 20:05
всем привет! народ нужно ваша помощь !!l2phx336_by_NLObP.rar....l2phx336_src_by_NLObP.r ar
//la2onix.ru/ на этом серве не как нехочит пропуска 5часом ужу мучаюсь
кто подскажет !!!!!! как вс правельно сделать

NLObP
12.09.2008, 20:25
Выложил свежую версию. Тестируйте.
--------------------------------------------------------------------------
L2PBX 3.3.7 (12.09.2008)
--------------------------------------------------------------------------
3.3.7 от 12.09.2008
[+] немного ускорил загрузку лога из файла;
[+] сохраняем выбранный метод внедрения;
[+] на вкладке "просмотр" в списке паrетов, можно поставить первым столбцом номер пакета;
[+] сделал раскраску расшифровки пакета на вкладке "посылка", при дабл-клике в поле разбора выделяется кусок пакета соответствующий этой строке;

PS: времени практически нет, так что моя активность на форуме на минимуме.

Добавлено через 42 секунды
Kusha, попробуй для начало на шоках или абиссе.

APXAHGEJI
13.09.2008, 09:15
При надежном методе внедрения клиент и пакетхак подвисают, порою загружается окно ввода логина и пароля, но после их ввода и отправки все зависает окончательно и безвозвратно. При всем при этом менджер задач выдает что клиент игры загружает проц на 99%
В скрытом режиме получше, тормозит поменьше, но дальше окна выбора песра не уходил, все опять таки безнадежно подвисает как пакетхак так и клиент.

Выложите пожалуйста L2PBX 3.3.6, а то я потер.

NLObP
14.09.2008, 00:01
Выложите пожалуйста L2PBX 3.3.6, а то я потер.
Вот она

Argot
14.09.2008, 14:56
Может кто то возмется и исправит все утечки памяти в l2phx ?

вот маленький лог.



This block was allocated by thread 0x250, and the stack trace (return addresses) at the time was:
402A7F [System][@GetMem]
425592 [Classes][TStrings.LoadFromStream]
425506 [Classes][TStrings.LoadFromFile]
53C64E [main.pas][main][TL2PacketHackMain.FormCreate][915]
4A3887 [Forms][TCustomForm.DoCreate]
4A3567 [Forms][TCustomForm.AfterConstruction]
4AAD7C [Forms][TApplication.CreateForm]
54CBD0 [D:\l2pbx\l2pbx.dpr][l2pbx][l2pbx][19]
7C816FD7 [Unknown function at RegisterWaitForInputIdle]
...................
This block was allocated by thread 0x250, and the stack trace (return addresses) at the time was:
402A7F [System][@GetMem]
44D77E [IniFiles][TCustomIniFile.WriteInteger]
53CE0C [main.pas][main][TL2PacketHackMain.FormDestroy][973]
4A3903 [Forms][TCustomForm.DoDestroy]
4A3769 [Forms][TCustomForm.BeforeDestruction]
54ACB6 [main.pas][main][TL2PacketHackMain.SpeedButton1Click][3596]
48E370 [Controls][TWinControl.WndProc]
4E22CE [JvWndProcHook.pas][JvWndProcHook][TJvHookInfos.WindowProc][767]
48DFEB [Controls][TWinControl.MainWndProc]
42E156 [Classes][StdWndProc]
77D38734 [Unknown function at GetDC]

и этот лог в 36 метров

к примеру:
GetMem(dllScr, Size); <= тут выделятся память под длл но нигде она не освобождается.
тоже самое с класами

Processes,
ItemsList,
SysMsgIdList,
NpcIdList,
ClassIdList,
Options


ЗЫ и это только запустив и закры приложение

NLObP
14.09.2008, 22:25
Может кто то возмется и исправит все утечки памяти в l2phx ?

вот маленький лог.
...
ЗЫ и это только запустив и закры приложение

Чем ты это делал? Расскажи подробнее, как искать места с утечкой памяти. Я попробую пофиксить.

Argot
15.09.2008, 08:50
FastMM4 рулит )) под фул дебагом

Да и Fast`a не обезательна чтоб найти где классы создають но не разрушаются, тоже самое с веделеной памятью. +кое где нехватает проверок на то существует ли класс чтоб его юзать.

ЗЫ по правил немного ошибо попозже выложу ))

DashKAaa
15.09.2008, 20:24
Жесть, модернизированный пакет хак при 4 окнах комп в даун уводит... 100% загрузки процессора без перерыва...

NLObP
16.09.2008, 03:30
Выложил свежую версию. Тестируйте.

3.3.8 от 16.09.2008
[+] устранил утечки памяти, спс. Argot;

Добавлено через 6 минут
ЗЫ по правил немного ошибо попозже выложу ))
Выкладывай, я посмотрю. что можно ещё сделать.

PS: так и не понял, что тут можно сделать:

tmp:='На '+IntToStr(ntohs(LPortConst))+' зарегистрирован локальный сервер';
LogMsg:=PChar(tmp);
SendMessage(L2PacketHackMain.Handle, WM_ListBox3_Log, 0, integer(@LogMsg));


Без IntToStr(ntohs(LPortConst)) утечки нет. :confused:

Faeton
16.09.2008, 04:11
Выложил свежую версию. Тестируйте.

3.3.8 от 16.09.2008
[+] устранил утечки памяти, спс. Argot;

Добавлено через 6 минут

Выкладывай, я посмотрю. что можно ещё сделать.

PS: так и не понял, что тут можно сделать:

tmp:='На '+IntToStr(ntohs(LPortConst))+' зарегистрирован локальный сервер';
LogMsg:=PChar(tmp);
SendMessage(L2PacketHackMain.Handle, WM_ListBox3_Log, 0, integer(@LogMsg));


Без IntToStr(ntohs(LPortConst)) утечки нет. :confused:

попробуй так:
tmp := format('На %d зарегистрирован локальный сервер',[ntohs(LPortConst)]);
SendMessage(L2PacketHackMain.Handle, WM_ListBox3_Log, 0, integer(@tmp[1]));

Argot
16.09.2008, 13:02
Выложил свежую версию. Тестируйте.

3.3.8 от 16.09.2008
[+] устранил утечки памяти, спс. Argot;

Добавлено через 6 минут

Выкладывай, я посмотрю. что можно ещё сделать.

PS: так и не понял, что тут можно сделать:

tmp:='На '+IntToStr(ntohs(LPortConst))+' зарегистрирован локальный сервер';
LogMsg:=PChar(tmp);
SendMessage(L2PacketHackMain.Handle, WM_ListBox3_Log, 0, integer(@LogMsg));


Без IntToStr(ntohs(LPortConst)) утечки нет. :confused:


Вообще для красоты кода все сообщения надо вынести в шаблоны и забить в константы Вида.
const
StartServ= 'На %d зарегистрирован локальный сервер';


юзать
format(StartServ,[ntohs(LPortConst)]);

PanAm
16.09.2008, 15:56
так не долеко до мульти-языковости :D и скоро тут будут форумы для греков :D

APXAHGEJI
16.09.2008, 18:30
Все равно нагружает клиент по самые нехочу, играть не реал, такого в 3.3.6 нет.

Argot
16.09.2008, 20:16
Все равно нагружает клиент по самые нехочу, играть не реал, такого в 3.3.6 нет.

Нагружается не клиент, а процессор.

ЗЫ. по теме Кто будет удалять хендлы отработаных Фредов ?

ЗЫЫ Думаю есть смысл вместо SendMessage юзать Events

APXAHGEJI
16.09.2008, 22:06
Если чесн мне пох кто кого. Хотя с какой стороны посмотреть.
Не пакетхак нагружает проц, а клиент. То есть коим то образом
пакетхак нагружает клиент, а клиент в свою очередь уже нагружает процессор.

NLObP
17.09.2008, 00:37
Мне кажется я inject.dll кривой выложил, замените из 3.3.6

Grinch
17.09.2008, 18:39
Мне кажется я inject.dll кривой выложил, замените из 3.3.6
откуда ты их берёшь кривые?

NLObP
17.09.2008, 20:41
откуда ты их берёшь кривые?

компилю наверно :) Обыкновенная 20кб, а там 80кб. Может когда утечку фиксил и туда чего нибудь попало?

Argot
17.09.2008, 23:05
компилю наверно :) Обыкновенная 20кб, а там 80кб. Может когда утечку фиксил и туда чего нибудь попало?

угу это FastMM4 отлаживал l2.exe ))

NLObP
19.09.2008, 02:47
Утечки памяти всё ещё имеют место быть :(

nezabudkin
19.09.2008, 20:30
Попробовал 3.3.8
Вставил inject.dll из 3.3.6 все заработало нормально.
Не сразу разобрался с галочкой kamael, если ее выключить, то получаем дешифрацию пакетов камаель, а если включить то interlude. Так и задумано?
А так вроде пока все работает! Предыдущие версии подключивали в разных местах, а эта пока нет)

МОЛОДЕЦ NLObP

NLObP
19.09.2008, 21:41
Не сразу разобрался с галочкой kamael, если ее выключить, то получаем дешифрацию пакетов камаель, а если включить то interlude. Так и задумано?

Без галочки Kamael: C4 - Interlude
С галочкой Kamael: Kamael - Hellbound - Gracia

3.3.8 от 16.09.2008
[+] устранил утечки памяти (не все), спс. Argot;
[!] inject.dll by ratvier;

wanick
21.09.2008, 23:42
Немогу удержатся анонсирую
Сегодня после, после нескольких часов ломания головы реализована новая функция дает возможность взаимодействия между скриптами
что как я считаю переведет програмирование в l2phx на совершенно новый уровень
вот и новинка

function CallSF(ScriptName:String;FunctionName:String;Param s:array of variant):variant;



принцип такой
1. есть скрипт "inventory" - стандартный обработчик инвенторя с ним уже все знакомы
расширяем скрипт inventory - чтобы он следил за инвентарем всех подключенных клиентов

далее есть функция

// cID - надо передать ConectID
function GetInv(obj,up,down, cID:integer): integer; // up и down не проверяются
var
i: integer;
begin
for i:=0 to ItemMaxCount do
if (Inventory[cID, i,up]=obj) then begin
Result:=Inventory[cID, i,down];
exit;
end;
Result:=-1;
end;


скрипт Inventory - включен постоянно (вами, галочкой около названия)

2. мы создаем новый скрипт в котором хотели бы узнать сколько у нашего чара в количестве к примеру аден ItemID =57
и получаем из второго скрипта обращаемся к скрипту Inventory


AdenaItemID :=57;
AdenaCount := CallSF ('Inventory', 'GetInv', [AdenaItemID, 2, 3, ConnectIDByName('testChar')]);


результатом будет количество аден у вашего чара, если произойдет ошибка , результат будет '-1': variant

часто придется использовать щункцию
function VarToStr(v: Variant): String
Перевод variant в строку

Для не расхождения версий, и для повторных тестов исходники отправил NLObP, ка только все проверим выложим.

ждите новинку :)

xkor
22.09.2008, 02:38
wanick, на будущее - используй [ HIGHLIGHT="delphi" ] а не [ PHP ]

NLObP
23.09.2008, 02:00
Новая версия. Пробуйте.

3.3.9 от 23.09.2008
by wanick
[+] теперь включенный скрипт нельзя удалить;
[+] при удалении скрипта не вызывается процедура RefreshScripts (она полностью обновляет список скриптов при этом скидывает "галочки" остальных);
[+] процедура sendMSG(msg), для вывода сообщений в окно лога;
[+] новая функция CallSF, которая дает возможность взаимодействия между скриптами;

by NLObP
[+] заменил сообщения для вывода в окно лога на константы, спс. Argot;
[+] освобождаются хэндлы завершившихся потоков, спс. Argot;
[+] устранил несоответствие во всплывающих подсказках (Completion.Identifiers.Strings)
для вкладки "дополнительно" и "скрипты", спс wanick;
[+] устранил мелкие ошибки в коде;

xkor
23.09.2008, 03:04
хех, совместная разработка похоже рулит), надо будет замутить для новой версии пакетхака SVN или типа того)

NLObP
23.09.2008, 03:29
хех, совместная разработка похоже рулит), надо будет замутить для новой версии пакетхака SVN или типа того)

Может и для текущей замутишь? Мало ли, еще люди подключатся.

xkor
23.09.2008, 03:38
ну можно и с этой начать эксперименты)

wanick
23.09.2008, 03:38
да не мешало бы SVN :)

NLObP, куча замечаний нашел
во вкладке скрипто удаленный скрипт не надо давать редактировать , и сохранять по новой просто пусть весить до обновления. - это я сам сделаю

во вкладке пакетов, при очистке списка сбрасывается состояние фильтров как я долго мучался пока настраивал потом очистил список пакетов и ппц :( , кстати надо потыкать может еще когда скидывает он.

NLObP
23.09.2008, 03:47
Подскажите, как устранить здесь утечку памяти?


const
{The name of the debug info support L2phx}
StartLocalServer = 'На %d зарегистрирован локальный сервер';
FailedLocalServer = 'Неудалось зарегистрировать локальный сервер на порте %d'+ #13#10+ 'Возможно этот порт занят другим приложением';
CreateNewConnect = 'Создано новое соединение - %d';
ConnectBreak = 'Соединение %d разорвано';



procedure TL2PacketHackMain.Log(var msg: TMessage);
var
p : Pchar;
begin
move(Pointer(MSG.lParam)^,P,SizeOf(PChar));
ListBox3.Lines.Add(p);
end;

procedure sendMSG (msg: string);
var
LogMsg: pchar;
begin
LogMsg:=PChar(msg);
SendMessage(L2PacketHackMain.Handle, WM_ListBox3_Log, 0, integer(@LogMsg));
end;


сам вызов происходит здесь

msg:=format(StartLocalServer,[ntohs(LPortConst)]);
sendMSG (msg);

если в сообщении нет чисел, то все нормально, как только есть, то fastmm4 сообщает о небольшой утеке памяти
типа такого:
This application has leaked memory. The small block leaks are (excluding expected leaks registered by pointer):

13 - 20 bytes: AnsiString x 2
21 - 36 bytes: AnsiString x 2
37 - 52 bytes: AnsiString x 1
53 - 68 bytes: AnsiString x 2
85 - 100 bytes: AnsiString x 1

И ещё. Правильно ли закрываю хэндл потока?
CloseHandle(SLH);

Добавлено через 3 минуты
во вкладке пакетов, при очистке списка сбрасывается состояние фильтров как я долго мучался пока настраивал потом очистил список пакетов и ппц , кстати надо потыкать может еще когда скидывает он.

Я не все перенес из твоих исходников?

Grinch
23.09.2008, 08:13
опенсорес блин уних не зря таким великим стал )

Argot
23.09.2008, 08:35
Подскажите, как устранить здесь утечку памяти?


const
{The name of the debug info support L2phx}
StartLocalServer = 'На %d зарегистрирован локальный сервер';
FailedLocalServer = 'Неудалось зарегистрировать локальный сервер на порте %d'+ #13#10+ 'Возможно этот порт занят другим приложением';
CreateNewConnect = 'Создано новое соединение - %d';
ConnectBreak = 'Соединение %d разорвано';



procedure TL2PacketHackMain.Log(var msg: TMessage);
var
p : Pchar;
begin
move(Pointer(MSG.lParam)^,P,SizeOf(PChar));
ListBox3.Lines.Add(p);
end;

procedure sendMSG (msg: string);
var
LogMsg: pchar;
begin
LogMsg:=PChar(msg);
SendMessage(L2PacketHackMain.Handle, WM_ListBox3_Log, 0, integer(@LogMsg));
end;


сам вызов происходит здесь

msg:=format(StartLocalServer,[ntohs(LPortConst)]);
sendMSG (msg);

если в сообщении нет чисел, то все нормально, как только есть, то fastmm4 сообщает о небольшой утеке памяти
типа такого:
This application has leaked memory. The small block leaks are (excluding expected leaks registered by pointer):

13 - 20 bytes: AnsiString x 2
21 - 36 bytes: AnsiString x 2
37 - 52 bytes: AnsiString x 1
53 - 68 bytes: AnsiString x 2
85 - 100 bytes: AnsiString x 1

И ещё. Правильно ли закрываю хэндл потока?
CloseHandle(SLH);

Добавлено через 3 минуты


Я не все перенес из твоих исходников?


я так делаю


procedure TL2PacketHackMain.WmFinished(var msg: TMessage);
var h1:integer;
begin
h1:=msg.WParam; // хендел отработаного потока
CloseHandle(h1);
end;

wanick
23.09.2008, 09:00
NLObP, все все, это я уже позже заметил

xkor
24.09.2008, 15:46
Такс, буду делать для пакетхака SVN репозиторий, в связи с этим есть впросики:
- ктонить знает будет ли ругаться sourceforce.net если там сделать репозиторий?, ругаться может на то что в пакетхаке используется FastScript демоверсии с подавлением окна о том что это демоверсия (кстати тут надыбал исходники FastReport в комплет которых входят и исходники FastScript, комунить надо?)
- стоит ли создавать в категории пакетхака подкатегорию "Разработка", чтобы там все модификации выкладывать и обсуждать собсно разработку?

NLObP, сори что в твоей теме но поскольку твоя модификация на данный момент лучшая (и почти единственная) скоре всего её и сделаем основной версией, если ты не против конечно), а учитывая что ты выкладываеш сори я думаю ты не против)

QaK
24.09.2008, 15:50
кстати тут надыбал исходники FastReport в комплет которых входят и исходники FastScript, комунить надо?угу, мне надо.
- стоит ли создавать в категории пакетхака подкатегорию "Разработка", чтобы там все модификации выкладывать и обсуждать собсно разработку?думаю, стоит.

NLObP
24.09.2008, 17:23
NLObP, сори что в твоей теме но поскольку твоя модификация на данный момент лучшая (и почти единственная) скоре всего её и сделаем основной версией, если ты не против конечно), а учитывая что ты выкладываеш сори я думаю ты не против)

Я только за. Общими усилиями доведем до ума.

Добавлено через 1 минуту
кстати тут надыбал исходники FastReport в комплет которых входят и исходники FastScript, комунить надо?

Мне тоже давай.

Добавлено через 2 минуты
используется FastScript демоверсии с подавлением окна о том что это демоверсия

В исходниках это можно закомментить или удалить совсем. Кому надо поправят. А исполняемый файл на форуме выкладывать правленный.

PS: Еще бы пройтись по исходникам и поправить явные ляпы, которые я внес по незнанию. Заодно прокоментировать, чтобы больше так не делать.

wanick
24.09.2008, 17:50
а что разве нету других SVN серверов
уж больно не люблю я sourceforce.net но это лично мое мнение :o :)

вот например нашел описалово
http://habrahabr.ru/blogs/development/29440/ - как на винду ставить
там также есть ссылки как на unix ставить SVN :)

хотя если подумать это лишний геморрой. забивать себе голову установкой своего сервера SVN
но sourceforce.net - всеравно не люблю , неудобный баг-репорт, грузится все еле еле
навигация непонятная все время путаюсь что откуда скачивать там
да и еще все на english - хотя как программера меня это не должно волновать ... ну незнаю я английский что теперь поделаешь :pardon:

xkor
24.09.2008, 22:03
wanick, ну я впринципе могу и у себя...
http://xkor.homeip.net/svn/l2phx3/ - вот экспериментирую счас)
логин - all
пароля нет

wanick
25.09.2008, 03:24
круто лучше и не придумаешь чем на этот sourceforce.net лазить, и еще баг-репорт какойнить организовать чтоб еще автоматом changelog делал. тогда бы вобще шаколадненько было :cool:, кстати это у тебя на компе дома или сервак где-то или VPS ??

походу дома , такс надо клиента svn хорошего где-то искать, кто подскажет какой по удобнее, да и так чтоб на Русском :cool:, пошел в яндекс :)

dmitry501
25.09.2008, 06:18
На русском хороший клиент под винду TortoiseSVN http://tortoisesvn.net/
Все просто и доступно

RoZ
25.09.2008, 10:41
На русском хороший клиент под винду TortoiseSVN http://tortoisesvn.net/
Все просто и доступно
+1

Так же вношу предложение основным разработчикам. Определитесь с основным пакетом разработки (а то тут некоторые чем только некомпилят ^_^), напишите требования к оформлению, комментированию кода (а то очень много вопросов возникает) и на чтение из свн поставьте свободный доступ, а вот на запись ограничьте основными разрабами иначе будет бардак :)

З.Ы. Очень рад что проект развивается, и переходит на следующий этап.

wanick
25.09.2008, 10:51
На русском хороший клиент под винду TortoiseSVN http://tortoisesvn.net/
Все просто и доступнопасибо.


насчет комментированию кода, :rolleyes: это сложный вопрос, хотя решаемый...

а это я думаю так и должно быть, и даже думать не надо, разве не везде так ;) и на чтение из свн поставьте свободный доступ, а вот на запись ограничьте основными разрабами иначе будет бардак

xkor, а когда ты планируешь, выход PHX-4? Может его стоит сразу на SVN делать, он сильно будет отличаться от PHX-3?

xkor
25.09.2008, 11:47
На русском хороший клиент под винду TortoiseSVN http://tortoisesvn.net/
Все просто и доступномм чтот я там русского не нашел, там впринципе и так всё понятно но всётаки хотелосьбы и русский найти)

Так же вношу предложение основным разработчикам. Определитесь с основным пакетом разработки (а то тут некоторые чем только некомпилят ^_^), напишите требования к оформлению, комментированию кода (а то очень много вопросов возникает) и на чтение из свн поставьте свободный доступ, а вот на запись ограничьте основными разрабами иначе будет бардак согласен, только вот пока непонял как сделать свободный доступ на чтение...

Добавлено через 4 минуты
xkor, а когда ты планируешь, выход PHX-4? Может его стоит сразу на SVN делать, он сильно будет отличаться от PHX-3?я его выложу когда основное доделаю, а то счас кроме разборщика пакетов ничего нет.., если выложить счас то неуверен что равитие пойдёт в верном направлении...
отличаться будет сильно, по скриптам будет неполная совместимость с версией 3 так как 4ю затачивается под универсальность а не линейку конкретно...

dmitry501
25.09.2008, 11:56
По поводу русского.
Заходишь на http://tortoisesvn.net/downloads
и внизу есть Language Pack
Качаешь русский

xkor
25.09.2008, 12:00
блин, придётся сервак другой ставить - anonymous access is not supported by VisualSVN Server...

Grinch
25.09.2008, 15:54
есть предложение хз как пойдёт, но вкладку новую добавить где можно будет длл подгружать и ставить её в поток что б через скрипт не тянуть пакеты, а то если я правильно понял то длл в скрипте работает на таймере на проверке готово или нет, если да то забрать, что впринципи левые действия. хотя могу ошибаться не программер :)

QaK
25.09.2008, 16:02
есть предложение хз как пойдёт, но вкладку новую добавить где можно будет длл подгружать и ставить её в поток что б через скрипт не тянуть пакеты, а то если я правильно понял то длл в скрипте работает на таймере на проверке готово или нет, если да то забрать, что впринципи левые действия. хотя могу ошибаться не программернасколько я понял - это реализация поддержки плугинов, которая у хкора пока не получается.

Grinch
25.09.2008, 16:05
насколько я понял - это реализация поддержки плугинов, которая у хкора пока не получается.
:(

Добавлено через 34 секунды
а может у кого нить выйдет :) я оптимист :) все сдохнем

QaK
25.09.2008, 16:09
Кстати, НЛО, прикрепи плз док к первому посту, типа архив новостей, а в первом посте пости только последние добавления/фиксы.

NLObP
25.09.2008, 16:37
Кстати, НЛО, прикрепи плз док к первому посту, типа архив новостей, а в первом посте пости только последние добавления/фиксы.

Так подойдёт?

wanick
25.09.2008, 16:40
классно, а то портянку крутить постоянно :)
NLObP, ну как дела с патоками? умня ниче не получилось пока что, но phx не зависает больше как больше сделал подключений

QaK
25.09.2008, 16:44
Так подойдёт?угу =) пасиб

NLObP
25.09.2008, 16:44
классно, а то портянку крутить постоянно :)
NLObP, ну как дела с патоками?

плохо, ничего не получается

При подключении 1 клиента, делфи показывает, что запущено 6 нитей (stopped).
Почему 6 и почему остановлены, хотя пакеты шлются?

wanick
25.09.2008, 16:47
а по какому пакету он рубит соединение якобы
веть в лог то пишет что закрыл

NLObP
25.09.2008, 16:53
а по какому пакету он рубит соединение якобы
веть в лог то пишет что закрыл

вот этот пакет последний
Tип: 0x7E (LogOutOk)
Pазмер: 1+2
Время прихода: 13:25:14:937

wanick
25.09.2008, 16:55
в коде main.pas какая строчка? где он определяет что надо разрывать ?
или в асю стукни :)

:)
такие обсуждения надо в багре-порт на SVN, xkor есть успехи с SVN?

xkor
25.09.2008, 17:06
которая у хкора пока не получаетсяне получается это когда пытаешся а не выходит, а чтот не припомню чтобы пытался делать поддержку плагинов.., я тока собирался.., но пока что недо собрался...

Добавлено через 6 минут
wanick, пакетхак не определяет что надо разрывать, покрайней мере мой, он просто читает из сокетов данные пока один из двух сокетов соединения не вернёт ошибку и если произошла ошибка разрывает второй сокет и уничтожает соединение.

wanick
25.09.2008, 17:13
в том и дело когда выход жмешь, значит сокет не закрывается ни с одной стороны,
пакеты продолжают идти

xkor
25.09.2008, 21:53
wanick, клиент рвёт соединение при получении пакета LogOutOk

Argot
25.09.2008, 23:07
советаю почитать о Select ))

и подумать о применении функции ))

function WaitForData(Socket:TSocket,Timeout: Longint): Boolean;
var
FDSet: TFDSet;
TimeVal: TTimeVal;
begin
TimeVal.tv_sec := Timeout div 1000;
TimeVal.tv_usec := (Timeout mod 1000) * 1000;
FD_ZERO(FDSet);
FD_SET(Socket, FDSet);
Result := select(0, @FDSet, nil, nil, @TimeVal) > 0;
end;

RoZ
26.09.2008, 11:01
блин, придётся сервак другой ставить - anonymous access is not supported by VisualSVN Server...
http://subversion.tigris.org/ этот смотрел ? У меня под никсой работает вполне стабильно, да и конфиги там простенькие.

wanick
26.09.2008, 14:01
советаю почитать о Select ))

и подумать о применении функции ))

function WaitForData(Socket:TSocket,Timeout: Longint): Boolean;
var
FDSet: TFDSet;
TimeVal: TTimeVal;
begin
TimeVal.tv_sec := Timeout div 1000;
TimeVal.tv_usec := (Timeout mod 1000) * 1000;
FD_ZERO(FDSet);
FD_SET(Socket, FDSet);
Result := select(0, @FDSet, nil, nil, @TimeVal) > 0;
end;


мм занятно, надо подробнее почитать еще раз, пока времени не густо :confused:

PanAm
26.09.2008, 17:59
а можно сделать настройку для кооффициента вычитания для NPCID в просмотре пакетов?

NLObP
26.09.2008, 18:05
а можно сделать настройку для кооффициента вычитания для NPCID в просмотре пакетов?

kid в optios.ini ставь тот,который нужен для просмотра пакетов для NPCID.

Name4Me
27.09.2008, 23:27
Есть предложение добавить в ПКХ возможность записи пакетов(или даних из пакетов) в базу даних (например в мускул) имхо етим можно уменьшить время обработки пакета и увеличить гибкость виборки даних...

xkor
28.09.2008, 03:52
Name4Me, надо просто оптимизировать способ хранения пакетов, будет намного быстрее мускула ибо не так универсально...

Name4Me
28.09.2008, 11:47
надо просто оптимизировать способ хранения пакетов, будет намного быстрее мускула ибо не так универсально...

Может бить и так, но мускул даёт возможность доступа к инфе по сети, мне например оч актуально так как приходиться юзать несколько компов... один собирает инфу а остальние её юзают.... Главное то чтоби постараться свести к минимуму время обработки пакета. Насколько я понял то сейчас пакет при перехвате не отправляеться клиенту пока не закончит роботу скрипт, поетому чтоб уменьшить время обработки большинства пакетов, которие не нуждаються в изменении, их проще сохранить, установить флаг что они пришли и отослать а потом уже обработать...

wanick
28.09.2008, 13:22
Name4Me, как определить , какой покет в своих скриптах ты хочеш изменить , а какой нет?

Name4Me
28.09.2008, 14:02
как определить , какой покет в своих скриптах ты хочеш изменить , а какой нет?

через список пакетов нуждающихся в обработке... В даний момент я осуществляю запись в базу через функции с внешней длл но ето не очень удобно например при обработке пакетов цикличной инхормацией (например скилист) получаеться двойная потяря времени сначала пакетхак расшифровивает пакет потом дллка пишет инфу... еслиб пакетхак сам писал инфу в базу имхо время би реально сократилось.

Вобщето можна целиком записать пакет в базу а потом его повторно разобрать длкой, но получаеться что ми будем делать двойную работу...

Добавлено через 5 минут
Ммм наверно снимаю своё предложение, по ходу действительно проще ето реализовать через функцию во внешней длл.

wanick
28.09.2008, 15:41
ну вот если подумать , то все можно решить :)

Murdoc
28.09.2008, 16:23
Есть проблемка. Тут ее описание:
http://la2-empire.net/forum/index.php?action=printpage;topic=1433.0

Неплохо было бы назвать инжект.длл как нибудь подругому. Возможно эмулировать проксификатор(проксифайр, сокскап, фрикап). Еще лучше дать возможность называть инжект и ньюксор.длл любым именем и прописывать его в настройкаж программы(кстати для ньюксора это актуально еще и тем кто сам менял в нем метод дешифрации и использует несколько отличающихся длл-ин).

wanick
28.09.2008, 17:42
Есть проблемка. Тут ее описание:
http://la2-empire.net/forum/index.php?action=printpage;topic=1433.0

Неплохо было бы назвать инжект.длл как нибудь подругому. Возможно эмулировать проксификатор(проксифайр, сокскап, фрикап). Еще лучше дать возможность называть инжект и ньюксор.длл любым именем и прописывать его в настройкаж программы(кстати для ньюксора это актуально еще и тем кто сам менял в нем метод дешифрации и использует несколько отличающихся длл-ин).

мдя жесткая защита

Murdoc
28.09.2008, 18:21
мдя жесткая защита

Она не жосткая. мысли про легкий обход имеются. Но есть одна проблема. автобан по железу. т.е. стоит получить бан 1м персом и ты получаешь бан всем кто пытается зайти с твоего компа. поэтому лучше подстраховываться изо всех сил :)
Кстати автор защиты Хинт - автор хлапекса и хингейма.

ratvier
28.09.2008, 18:26
Она не жосткая. мысли про легкий обход имеются
Скрытый режим инжектинга помогает?)
автобан по железу
Чоткая защита "_#

Murdoc
28.09.2008, 19:52
Скрытый режим инжектинга помогает?)



Честно говоря не знаю :) на бан по железу не хочу нарываться. вот в понедельник выйду на работу там и буду пробовать.

Grinch
28.09.2008, 20:58
Честно говоря не знаю на бан по железу не хочу нарываться. вот в понедельник выйду на работу там и буду пробовать.поставь виртуалную машину :) и пусть хоть забаниться )

Murdoc
28.09.2008, 21:12
поставь виртуалную машину :) и пусть хоть забаниться )

Пробовал. только клиент л2 не стартует в виртуалке. неполноценный директХ и директ3д в виртуалках.

еще в тему защиты и произвольных имен длл. вот пример лог файл мона при работе торгового бота:



18:50:54 xxx.exe:11620 OPEN C:\program files\alwil software\avast4\ SUCCESS Options: Open Directory Access: 00100001
18:50:54 xxx.exe:11620 DIRECTORY C:\program files\alwil software\avast4\ NO SUCH FILE FileBothDirectoryInformation: newxor.dll
18:50:54 xxx.exe:11620 CLOSE C:\program files\alwil software\avast4\ SUCCESS
18:50:54 xxx.exe:11620 OPEN C:\program files\alwil software\avast4\ SUCCESS Options: Open Directory Access: 00100

001
18:50:54 xxx.exe:11620 DIRECTORY C:\program files\alwil software\avast4\ NO SUCH FILE FileBothDirectoryInformation: newxor.dll
18:50:54 xxx.exe:11620 CLOSE C:\program files\alwil software\avast4\ SUCCESS
18:50:54 xxx.exe:11620 OPEN C:\windows\ SUCCESS Options: Open Directory Access: 00100001
18:50:54 xxx.exe:11620 DIRECTORY C:\windows\ NO SUCH FILE FileBothDirectoryInformation: newxor.dll
18:50:54 xxx.exe:11620 CLOSE C:\windows\ SUCCES

S
18:50:54 xxx.exe:11620 OPEN C:\progra~1\alwils~1\avast4\ SUCCESS Options: Open Directory Access: 00100001
18:50:54 xxx.exe:11620 DIRECTORY C:\progra~1\alwils~1\avast4\ NO SUCH FILE FileBothDirectoryInformation: newxor.dll
18:50:54 xxx.exe:11620 CLOSE C:\progra~1\alwils~1\avast4\ SUCCESS
18:50:54 xxx.exe:11620 OPEN C:\windows\system32\ SUCCESS Options: Open Directory Access: 00100001
18:50:54 xxx.exe:11620 DIRECTORY C:\windows\system32\

NO SUCH FILE FileBothDirectoryInformation: newxor.dll


Ищет этот бот newxor.dll в директориях запущенных программ. а к этому торговому боту примотана та же длл с защитой что и к клиенту этого сервера л2. так что клиент, я уверен ведет себя так же.

RoZ
29.09.2008, 13:52
Народ вношу предложение. Сейчас много развелось различных newxor.dll, и с этим надо что то делать. Если возможно сделайте вывод в лог об:
1) Удачной загрузке newxor.dll (иначе используется стандартный внутренний механизм)
2) В newxor.dll ввести функцию version() которая возвращала бы строку с версией newxor.dll а также дату редактирования и кем. И при загрузке тоже выводило бы в лог.

wanick
29.09.2008, 15:10
Народ вношу предложение. Сейчас много развелось различных newxor.dll, и с этим надо что то делать. Если возможно сделайте вывод в лог об:
1) Удачной загрузке newxor.dll (иначе используется стандартный внутренний механизм)
2) В newxor.dll ввести функцию version() которая возвращала бы строку с версией newxor.dll а также дату редактирования и кем. И при загрузке тоже выводило бы в лог.

в чем смысл выводить лог ?

RoZ
29.09.2008, 16:37
в чем смысл выводить лог ?
1) Чтобы знать что загрузка длл была успешной, и не используется внутренний механизм расшифровки пакетов.
2) Чтобы знать какая версия используется и кто её автор.

wanick
29.09.2008, 16:54
1) Чтобы знать что загрузка длл была успешной, и не используется внутренний механизм расшифровки пакетов.
2) Чтобы знать какая версия используется и кто её автор.


не совсем понял что ты имееш ввиду говоря именно "загрузка dll", inject в процесс или что?

RoZ
29.09.2008, 17:24
не совсем понял что ты имееш ввиду говоря именно "загрузка dll", inject в процесс или что?
Нет, попробую объяснить. Сейчас в программе используется две возможности дешифровки трафика:
1) Встроенная XorCoding.pas
2) Загрузка newxor.dll

Lib:=LoadLibrary(PChar(ExtractFilePath(Application .ExeName)+'newxor.dll'));
if Lib>0 then begin
@CreateXorIn:=GetProcAddress(Lib,'CreateCoding');
@CreateXorOut:=GetProcAddress(Lib,'CreateCodingOut ');
if @CreateXorOut=nil then CreateXorOut:=CreateXorIn;
end;
Если библиотеку не подгружает мы об этом даже не подозреваем. И используется старый метод. Хотелось бы чтобы он нас информировал об этом.
З.Ы. Или это я недостаточно правильно понимаю Delphi ? :)
З.Ы.Ы. Непонял при чем тут inject...я про newxor.dll ^_^

NLObP
29.09.2008, 18:38
1) Чтобы знать что загрузка длл была успешной, и не используется внутренний механизм расшифровки пакетов.

Если включен - "Обход смены XOR ключа" загружается newxor.dll
Иначе - внутренний механизм.

Murdoc
29.09.2008, 18:52
to NLObP:
Огромная просьба! Сделайте таки в следующей версии возможность произвольных имен файлов для newxor и inject. Так же кроме обхода защит это будет полезно для выбора своих newxor для разных серверов.

NLObP
29.09.2008, 19:00
Надо попробовать имя dll в options.ini вынести.

RoZ
29.09.2008, 20:33
Если включен - "Обход смены XOR ключа" загружается newxor.dll
Иначе - внутренний механизм.Извиняюсь, нет Delphi под рукой. isChangeXor:=ChkXORfix.Checked; если имеется ввиду этот CheckBox, то он никак не влияет на загрузку newxor.dll (внутренний механизм или внешняя dll), или я ошибаюсь ?

Murdoc
29.09.2008, 20:39
Надо попробовать имя dll в options.ini вынести.

Было бы просто замечательно!!! Только если выносить, то сразу обе длл: и инжект и ньюксор. С нетерпением жду реализации! :)

wanick
29.09.2008, 20:39
Надо попробовать имя dll в options.ini вынести.

может вынести dll в отдельные папки , сделать авто детект и в селекте выбирать какую на inject.dll делать в какую newxor.dll
а хранить конечно же в конфигах и еще вынести в настройку в каких папках искать inject и newxor

xkor
29.09.2008, 21:21
Если включен - "Обход смены XOR ключа" загружается newxor.dll
Иначе - внутренний механизм.оО, с каких пор???, у меня эта галка включала переопределение первых 4х байт ключа шифрования из 3го или 4го пакета и с newxor.dll никак не была связана, и сомневаюсь что ты настолько сильно там это менял)

wanick
29.09.2008, 22:01
:o, а я еще дотудо недошел

NLObP
30.09.2008, 01:22
оО, с каких пор???, у меня эта галка включала переопределение первых 4х байт ключа шифрования из 3го или 4го пакета и с newxor.dll никак не была связана, и сомневаюсь что ты настолько сильно там это менял)

Извиняюсь, ступил.

Murdoc
30.09.2008, 02:16
Сделано.

Это не спасибо, а СПАСИБИЩЩЕ!!! Пару дней потестю, а потом отпишусь как там с защитой все прошло. Или не прошло и я в бане по серийнику винта ;)

wanick
30.09.2008, 13:55
NLObP, последний вариант работает замечательно, но пока есть соединение с интернетом + сервер ла2 не падает,
вобщем-то релогин и нужен чтобы при отключении интернета или рестарте сервера , бот сам зашел на сервер и продолжил нужную операцию,
у мня сегодня в 4 часа утра отключили интернет , до 9 утра
все это время 8 ботов каждые 2-4 минуты пытались релогинится
потоки не закрывались , после выключения phx, в BSD, у мня минут 20 закрывались открывшиеся потоки :o, это просто опупеть

Murdoc
30.09.2008, 16:21
Что то у меня все равно не получается. Защита мать ее...
Буду разбираться. Вопрос. А что это такое и зачем:
На 56574 зарегистрирован локальный сервер?
Что это за порт? Какое его назначение? Как им пользоваться?
Может это уже где и писалось, но я пропустил :(

xkor
30.09.2008, 17:29
Murdoc, на этом порту пакетхак принимает соединения от клиента чтобы перенаправить их на сервер)

Murdoc
30.09.2008, 17:48
Murdoc, на этом порту пакетхак принимает соединения от клиента чтобы перенаправить их на сервер)

я так и думал... Т.е. я беру проксификатор и перенаправляю коннект клиента л2 на локалхост порт 56574. я так понимаю в таком случае не производится инжект, из списка клиентов/ботов л2.ехе можно убирать. надо пробовать...

to NLObP:
Ты не мог бы выложить исходники той версии что с произвольными именами длл?