Исходники здесь
Вот такие скомпилированные версии есть у меня.
Ниже данные устарели.
Репозиторий находится тут (открывать через SVN клиент)
Удобный просмотр репозитория через браузер тут
Скомпилированные версии тут Пароль к архиву: coderx.ru
Есть ли предложения по модернизации существующего кода с описанием как должно и что хотелось бы заменить/добавить?
Дополнительные компоненты брать тут. (<-- TPerlRegEx есть только там)
/upd:
для компиляции последних ревизий понадобятся JCL, JVCL (ссылки выше) а так же:
jwapi2.2a, SyntEdit, TRichView.v11.0+ScaleRichView.v2.0, TsiLang (letitbit / upload.com.ua)
Немного подправленный FastScript искать в файловом архиве.
Последний раз редактировалось NLObP, 17.10.2016 в 00:02.
Yegor, ГГ вроде сканирует несколько важных по его мнению функций на наличие джампов в начале и если находит то восстанавливает правильное начало функций
в число важных входит и connect
__________________
Я здесь практически не появляюсь!, Skype - ikskor
ну неправильно через реестр с ним работать когда для этого есть намного более удобные API функции...
Ну, функции инсталяции там в отдельном юните, поправь того индуса, переписав его на свой лад..
а то индус кудато пропал.. видно опять какуюто глюкалку пишет
Во втором варианте мне кажется пакетхак это не проглотит?
он об этом и не узнает), const от var при передаче параметров отличаются только на этапе разработки, после компиляции между ними нет разници, ну развешто переменная переданная по const может быть в области памяти предназначенной только для чтения, но это только если переменная была константой на этапе разработки что к EncryptGP точно не относиться...
Добавлено через 1 минуту
ЗЫ тут тока другой вопрос - на сколько адекватно пакетхак воспримет изменение размера ибо я не помню кода вызывающего EncryptGP...
__________________
Я здесь практически не появляюсь!, Skype - ikskor
Последний раз редактировалось xkor, 02.05.2009 в 23:05.
Причина: Добавлено сообщение
ну, не особо то и получиться. во всяком случае у меня в коде так уж точно.
ибо.
xorS.DecryptGP(packet.data, Packet.Size - 2);
для того чтобы было возможно должно быть аля
temp := Packet.Size -2;
xorS.DecryptGP(packet.data, temp);
Packet.Size := temp + 2; //пакеты с длинной <= 2 будут всеравно игнорироваться.
ну, вызывать то оно и не должно. переменная явно не в защищенной памяти так как считаеться во время вызова. но и толку от такого изменения тоже нет. результат не запишеться магическим образом обратно.. а уничтожиться оптимизатором по прыжку в стеке на уровень вверх.
В предыдущих версиях быда опция: "Пропускать логин - программа начинает работать после соединения с Game-Сервером". Кто подскажет для чего это? Из кода ниже тоже непонятно что оно делает .
delphi Код:
//пропускать логин?//если (пропускать логин и мы не в игре)if isPassLogin and(not IsGamel)thenbegin//отсылаем данные, сначала длину, а потом сам пакет
send(CSockl,PacketB, 2, 0);
repeatuntil send(CSockl, PacketB, recv(SSockl, PacketB, $FFFF, 0), 0)<=0;
endelsebegin//иначе (пропускать логин и мы в игре)//прием пакетовrepeatifnot GetSocketData(SSockl, Packet.DataB, Packet.Size-2)thenbreak;
if IsGamel
then PacketProcesor(PacketB, CSockl, id, 4)else PacketProcesor(PacketB, CSockl, id, 2);
ifnot GetSocketData(SSockl, Packet, 2)thenbreak;
//sendMSG('size: '+IntToStr(Packet.Size));untilFalse;
end;
Такое ощушение что изначально должна была быть возможность залогиниваться с помошью PH, но это так и не было реализовано.
Добавлено через 1 час 28 минут
И ещё просветите зачем функция:
delphi Код:
function GetSocketData(Socket: TSocket; var Data; const Size: Word): Boolean;
var
Position: Word;
Len: Integer;
DataB: array[0..$5000] ofByte absolute Data;
begin
Result:=False;
Position:=0;
while Position<Size dobegin
Len:=recv(Socket,DataB[Position],1,0);
if Len<=0thenExit;
Inc(Position, Len);
end;
Result:=True;
end;
Я как понял она с помошью "recv" считывает нужное количество байт с сокета по 1 байту. Почему так сделали? Что случится если попытаться сразу считать необходимое кол-во байт одним махом.
зы: прошу прощения за обилие вопросов, приспичило разобраться с программой.
Последний раз редактировалось Yegor, 03.05.2009 в 05:10.
Причина: Добавлено сообщение