Вернуться   CoderX :: Forums > Lineage II > L2PacketHack > Разработка
Войти через OpenID

Разработка Раздел для совместной разработки/доработки программы

Чат (Новых сообщений с момента вашего последнего визита нет)
Загрузка...
Задавайте ваши вопросы на форуме. Чат предназначен для небольших разговоров.
 
 
 
Опции темы Опции просмотра
Старый 18.06.2010, 02:50   #1
Новичок
 
Аватар для ecl
 
Регистрация: 15.06.2010
Адрес: Москва
Сообщений: 11
Сказал Спасибо: 9
Имеет 1 спасибку в 1 сообщении
ecl пока неопределено
По умолчанию Решил написать PH на C#.

Начал сегодня этот длинный и нелегкий путь.
Собственно на данный момент имею перехваченые пакеты в виде
масивов byte[].
С дельфи дружиться как то плохо, в плане попыток разобрать исходный код PH.
На данный момент имею несколько вопросов.
1. Что означают первые 2 байта в каждом пакете, я сравнил то что я получаю и то что отображается в PH, в пакет хаке эти 2 байта вообще не отображаются. (Вопрос отпал, это длина пакета)
2.Подскажите как можно попроще освоить синтаксис дельфи для восприятия исходиков PH.(Гугл рулит)
3.Так и не смог найти на форуме описание работы PH в плане шифровки\дешифровки.(анализ дельфийского кода + пример от alexteam на C++) Синтаксис примера arrjj труден для восприятия.

К 3ему вопросу ,насколько я понимаю это функции дешифровки,шифровки и получения ключа для для этого.
Разобраться в этом алгоритме в силу незнания delphi пока не могу, дельфийцы прокоментите пожалуйста код чтобы можно было понять алгоритм работы крипта\декрипа.


Код:
procedure L2Xor.DecryptGP(var Data; var Size: Word); // Прототип процедуры
var //Объявление переменных
  k:integer; //объявление переменной типа Integer
  i,t:byte;  //объявление переменных типа byte
  pck:array[0..$FFFD] of Byte absolute Data; //объявление масива переменных типа Integer длинной $FFFD (65533 байт) и запись в него всего пакета.
begin
  i:=0; //зануление счетчика i
  for k:=0 to size-1 do //начало цикла по k до конца пакета (обработка каждого байта пакета)
    begin 
     t:=pck[k]; //Присваиваем значение текущего байта переменной t
     pck[k]:=t xor GKeyR[k and keyLen] xor i xor IfThen(isAion and(k>0),Byte(KeyConst2[k and 63])); // Текущему байту пакета присваиваем значение этогоже байта отксореного на GKeyR[k and keyLen](байт ключа шифрования под номером (k and keyLen)), ксорим полученый результат на i , далее еще раз ксор если клиет=Aion(Меня Aion не интересует, пишу для себя под интерлюд шифрация стандартная)
     i:=t; //Теперь устанавливаем i равным предыдущему байту, получается ксорим каждый последующий байт на GKeyR и потом еще на предыдущий байт.
    end;
  Inc(PCardinal(@GKeyR[keyLen-7])^,size); // Не используется пристандартной шифрации
  if isAion and(Size>0)then pck[0]:=(pck[0] xor $EE) - $AE; // и нафига это... //эт для айона
end;

// На данный момент не понято:
//GKeyR[k and keyLen] - ответ дан arrjj
//Inc(PCardinal(@GKeyR[keyLen-7])^,size); - не используется при стандартном шифровании

procedure L2Xor.EncryptGP(var Data; var Size: Word);
var
  i:integer;
  k:byte;
  pck:array[0..$FFFD] of Byte absolute Data;
begin
  if isAion and(Size>0)then pck[0]:=(pck[0] + $AE) xor $EE; // и нафига это...
  k:=0;
  for i:=0 to size-1 do begin
    pck[i]:=pck[i] xor GKeyS[i and keyLen] xor k xor IfThen(isAion and(i>0),Byte(KeyConst2[i and 63]));
    k:=pck[i];
  end;
  Inc(PCardinal(@GKeyS[keyLen-7])^,size);
end;
Буду благодарен за любую помощ.

Спасибо.

Последний раз редактировалось ecl, 18.06.2010 в 19:53.
ecl вне форума   Ответить с цитированием
 

  CoderX :: Forums > Lineage II > L2PacketHack > Разработка



Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 12:44.

vBulletin style designed by MSC Team.
Powered by vBulletin® Version 3.6.11
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Locations of visitors to this page
Rambler's Top100

Вы хотите чувствовать себя в безопасности? чоп Белган обеспечит её!