NLObP, хм, обосную плиз позицию строк
if value='range error' then exit;
потому как по хорошему они должны следовать сразу за вызовом value:=GetValue(...)
а у тебя получается что могут сработать строки типа
if param1='FUNC01' then value:=GetFunc01(strtoint(value))
когда value='range error' а это приведёт к ошибке...
Моё мнение эта ошибка появляется при несоответствии расшифровки пакета в packets.ini и содержимым пакета. Например пакет от грации, а расшифровка от С4.
Обычно эта ошибка пакетов содержащих циклы, типа таких
18=StatusUpdate(ObjectID)d(ListSize:Loop.1.2)d(ID)d(Value)
или
0E=StatusUpdate:d(ObjectID)d(AttribCount:For.0002)d(AttrID:Get.FSup)d(AttrValue)
для примера:
Код:
Tип: 0x5F (SkillList)
Pазмер: 122+2
Время прихода: 01:50:44:234
0002 d ListSize: 9 (0x00000009)
[Начало повторяющегося блока 1/9]
0006 d isPassive: 0
000A d Level: 1
000E d skillID: Escape: 5 minutes ID:2099 (0x0833)
0012 c c: 0
[Конец повторяющегося блока 1/9]
[Начало повторяющегося блока 2/9]
0013 d isPassive: 1
0017 d Level: 1
001B d skillID: Create Common Item ID:1320 (0x0528)
001F c c: 0
[Конец повторяющегося блока 2/9]
[Начало повторяющегося блока 3/9]
0020 d isPassive: 1
0024 d Level: 1
0028 d skillID: Magician's Movement ID:118 (0x0076)
002C c c: 0
[Конец повторяющегося блока 3/9]
[Начало повторяющегося блока 4/9]
002D d isPassive: 0
0031 d Level: 1
0035 d skillID: Common Craft ID:1322 (0x052A)
0039 c c: 0
[Конец повторяющегося блока 4/9]
[Начало повторяющегося блока 5/9]
003A d isPassive: 0
003E d Level: 1
0042 d skillID: Self Heal ID:1216 (0x04C0)
0046 c c: 0
[Конец повторяющегося блока 5/9]
[Начало повторяющегося блока 6/9]
0047 d isPassive: 1
004B d Level: 1
004F d skillID: Spellcraft ID:163 (0x00A3)
0053 c c: 0
[Конец повторяющегося блока 6/9]
[Начало повторяющегося блока 7/9]
0054 d isPassive: 0
0058 d Level: 1
005C d skillID: Wind Strike ID:1177 (0x0499)
0060 c c: 0
[Конец повторяющегося блока 7/9]
[Начало повторяющегося блока 8/9]
0061 d isPassive: 1
0065 d Level: 1
0069 d skillID: Mana Recovery ID:214 (0x00D6)
006D c c: 0
[Конец повторяющегося блока 8/9]
[Начало повторяющегося блока 9/9]
006E d isPassive: 1
0072 d Level: 1
0076 d skillID: Lucky ID:194 (0x00C2)
007A c c: 0
[Конец повторяющегося блока 9/9]
Но может конечно я и ошибаюсь с местом расположения проверки.
Моё мнение эта ошибка появляется при несоответствии расшифровки пакета в packets.ini и содержимым пакета. Например пакет от грации, а расшифровка от С4.
угу а ещё при ручном наборе пакета на вкладке отправка так как туда не всегда просто копируют пакет, а ещё могут и полностью или частично его воодить ручками, а поскольку пакетхак его анализирует прямо в процессе ввода то вылазиет ошибка
__________________
Я здесь практически не появляюсь!, Skype - ikskor
Еще не большой совет. Так как в используемом вами AdvApiHook.pas есть серьезные не дочеты, а конкретней не корректно работают некоторые функции. Используйте более новую версию, там решены эти проблемы )).
И пора менять метод перехвата.)) Так написать защиту от ваших методов очень просто.
то что ты не видел незначить что ее нет. Юзайте поиск.
в той версии что вы используете не всегда правильно работают функции.
SaveOldFunction, SizeOfCode... и еще какието. не помню просто в свое время я их сам начинал править потом случайно нашел, что MS-Rem :-) исправился и выпустил апграйд.
Argot, ты лучше бы ссылку выложил, не качать же каждую встречную AdvApiHook и сравнивать с имеющейся исча непойми какие изменения...
Добавлено через 1 минуту
такс, сделал удобный веб просмотр для svn: http://l2phx.pp.ru/wsvn/
если заметите там гдето проблемы с кодировкой отпишитесь плиз
__________________
Я здесь практически не появляюсь!, Skype - ikskor
Последний раз редактировалось xkor, 26.10.2008 в 14:52.
Причина: Добавлено сообщение
Что-то не ищется новой версии. Может выложиши или ссылку дашь?
Добавлено через 8 часов 48 минут
L2phx ver. 3.4.1.60, что нового:
delphi Код:
Revision: 60
Author: nlobp
Date: 1:17:05, 26 октября 2008 г.
Message:
[*] изменил реагирование на ошибку выхода за границу пакета, пишем в расшифровку пакета 'range error'
[*] на вкладке "просмотр" и "посылка" добавил показ места, где расположены данные, по клику мыши и нажатию клавиш (стрелок) вверх/вниз.
Репозиторий находится тут
Удобный просмотр тут
Скомпилированная версия тут
У меня есть предложения по доработке алгоритма вызовов библиотеки newxor.dll.
(поправьте меня, если я неправ!)
Эксперементируя с newxor, понял следующее:
1. Первые два пакета (ProtocolVersion и CryptInit) не передаются в newxor, а зачастую там храниться бесценная информация по начальным ключам шифрования.
2. Из пакета CryptInit в newxor передается начальный ключ шифрования, но, во первых, пакетхак сам решает какова длинна ключа, а во вторых, чего-то с ним делает, из-за чего этот ключ уже нельзя применять для нестандартных защит.
Суть моих предложений сводится к следующему:
1. Доработать пакетхак, чтобы он вызывал newxor.dll (функции шифрования-дешифрования) начиная с самого первого пакета и от сервера и от клиента.
2. Для совместимости с предыдущими версиями newxor.dll, добавить в пакетхак еще одну галочку, или радио-кнопку, для выбора версии используемой newxor (нового типа, или старого).
Введение в вакетхак таких изменений значительно упростит написание(изменение) newxor, а так-же облегчит перенос алгоритмов дешифрации между пакетхаком и wpf.