Ну это я еще вчера скачал,щас если чесно думал поискать исходники сервера для 2.1.
На щет того что-бы подправить просто протокол в самом пх а не в дллке то тут не должно быть проблем.
Как по мне то если делать то сразу на совесть.
Если мне не изменяет память то в новых версиях пх доступны на выбор aion2.1 aion2.5,вот сдесь уже нужно искать где они и добавлять сразу 2.7.
Если найдете место где они сообщите сдесь,а я покамись буду искать исходники сервера 2.1 и потом сюда выложу отличия в EncryptionKeyPair.java
в ссылках что я скинул есть сравнение для 2.1 и 2.7 и что конкретно изменено.
там все есть, тока с ревизии r107 прешли на поддержку 2.7
Добавлено через 4 минуты
Цитата:
Сообщение от lakoko
по моим свединьям за шифровку покетов отвечает вот ети строки
Код:
library newxor;
uses
windows,
Coding in 'Coding.pas';
type
TXorCoding = 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;
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;
End;
procedure TXorCoding.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 TXorCoding.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 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.
это все для линейки и на данный момент newxor для aion не задействуется
работает стандартный алгоритм вшитый в l2ph
Последний раз редактировалось manyunya; 23.12.2011 в 17:00.
Причина: Добавлено сообщение
Ну это я еще вчера скачал,щас если чесно думал поискать исходники сервера для 2.1.
На щет того что-бы подправить просто протокол в самом пх а не в дллке то тут не должно быть проблем.
Как по мне то если делать то сразу на совесть.
Если мне не изменяет память то в новых версиях пх доступны на выбор aion2.1 aion2.5,вот сдесь уже нужно искать где они и добавлять сразу 2.7.
Если найдете место где они сообщите сдесь,а я покамись буду искать исходники сервера 2.1 и потом сюда выложу отличия в EncryptionKeyPair.java
Допустим проблема в длине,но это не обясняет почему одна и таже версия пх работает на ньюайон(ру криент 2.7) и в туже очередь не работает на евро клиенте 2.7.
Защита не может мешать,ибо на нью защит убиваешь до включения пх ну а на втором там вообще батник у меня.
Допустим проблема в длине,но это не обясняет почему одна и таже версия пх работает на ньюайон(ру криент 2.7) и в туже очередь не работает на евро клиенте 2.7.
Защита не может мешать,ибо на нью защит убиваешь до включения пх ну а на втором там вообще батник у меня.
ты пробуеш на ньюайон сначало (ру криент 2.7) потом (евро клиенте 2.7)?
и там на ру норм а на евро нет?
ты пробуеш на ньюайон сначало (ру криент 2.7) потом (евро клиенте 2.7)?
и там на ру норм а на евро нет?
или ты пробуеш на разных серверах?
Именно так.
Цитата:
Сообщение от kain1982
на нью клиент 2,5 с оболочной 2,7
Ну любой 2.7 это обновленный более ранний клиент.
Если честно то на нью я не обновлял 2.5 и просто скопировал руофф клиент 2.7 когда он еще стоял там=).
Допустим проблема в длине,но это не обясняет почему одна и таже версия пх работает на ньюайон(ру криент 2.7) и в туже очередь не работает на евро клиенте 2.7.
На многих серверах где (ру криент 2.7) пх также работает некорректно.Поэтому не вижу смысл сравнивать.Все объясняется тем что на каждом сервере своя сборка стоит.