Регистрация Главная Сообщество
Сообщения за день Справка Регистрация

помощь newxor.dll

-

Общение и обсуждение Aion

- События, информация, вопросы и ответы по Aion

Ответ
 
Опции темы
Старый 03.03.2015, 19:57   #1
 Разведчик
Аватар для nicolas1985
 
nicolas1985 никому не известный тип
Регистрация: 01.08.2013
Сообщений: 2
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию помощь newxor.dll

кто-то может исправить для Aion?

// JCL_DEBUG_EXPERT_GENERATEJDBG OFF
// JCL_DEBUG_EXPERT_INSERTJDBG OFF
// JCL_DEBUG_EXPERT_DELETEMAPFILE OFF
library newxor;

uses
usharedstructs in '..\units\usharedstructs.pas',
Classes,
windows,
sysutils;

{$R *.res}

type
TXorCoding = class(TCodingClass)
private
keyLen: Byte;
DecAccumulatorSize, EncAccumulatorSize : integer;
DecAccumulator, EncAccumulator : array [0..$ffff] of byte;
public
constructor Create;
procedure InitKey(const XorKey; Interlude: Byte = 0);override;
procedure DecryptGP(var Data; var Size: Word);override;
procedure EncryptGP(var Data; var Size: Word);override;
procedure PreDecrypt(var Data; var Size: Word); override;
procedure PostEncrypt(var Data; var Size: Word); override;
end;

TXorCodingOut = class(TCodingClass)
private
keyLen: Byte;
DecAccumulatorSize, EncAccumulatorSize : integer;
DecAccumulator, EncAccumulator : array [0..$ffff] of byte;
public
constructor Create;
procedure InitKey(const XorKey; Interlude: Byte = 0);override;
procedure DecryptGP(var Data; var Size: Word); override;
procedure EncryptGP(var Data; var Size: Word); override;
procedure PreDecrypt(var Data; var Size: Word); override;
procedure PostEncrypt(var Data; var 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;
EncAccumulatorSize := 0;
DecAccumulatorSize := 0;
End;

procedure TXorCoding.DecryptGP(var Data; var Size: Word);
var
k:integer;
pck:array[0..$FFFD] of Byte absolute Data;
begin
//server>>PreDecrypt>[DecryptGP]>(PH)>EncryptGP>PostEncrypt>>client
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; var Size: Word);
var
i:integer;
pck:array[0..$FFFD] of Byte absolute Data;
begin
//server>>PreDecrypt>DecryptGP>(PH)>[EncryptGP]>PostEncrypt>>client

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: Byte = 0);
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 <> 0 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;

procedure TXorCoding.PreDecrypt(var Data; var Size: Word);
//server>>[PreDecrypt]>DecryptGP>(PH)>EncryptGP>PostEncrypt>>client
procedure YourDecryptFuncton(var Packet:TPacket);
begin
//ñþäà ïîñòóïàåò ïàêåòèê êîòîðûé íåîáõîäèìî äåêðèïòîâàòü.
//åñëè òû çàõî÷åøü ñðàçó ïðåîáðàçîâàòü åãî â äåêðèïòîâàííûé ëèíåéêîâñêèé ïàêåò
//òî decryptgp îñòàâëÿé ïóñòûì
//åñëè æå ýòî ïîâåðõíîñíûé íàâåñîê íà êðèïòîâêó - ðåêîìåíäóþ "ðàçäåëüíîå ïèòàíèå"
end;

var
L2Packet : TPacket; //îáüÿâëåí â øàðåäñòðóêòóðå
OutBuffer : array[0..$ffff] of byte;
begin
//âûõîäÿùèé áóôôåð - ïóñò.
fillchar(OutBuffer, $ffff, 0);

//Ñóåì â àêêóìóëÿòîð òî ÷òî ïðèøëî.
move(data,DecAccumulator[DecAccumulatorSize],size);
inc(DecAccumulatorSize, Size);

Size := 0; //âûõîä îáíóëÿåì íå äàâàÿ ïàêåòõàêó ýòó ïîöèþ îáðàáîòàòü åñëè íà ñëåäóþùåé ïðîâåðêå
//ìû âûëåòèì ñ ýòîé ôóíêöèè ëèáî íå ïîïàäåì â öèêë (ýòî è åñòü ñêëåéêà ïàêåòîâ. êîãäà äëèíà ëèíåéêîâñêîãî ïàêåòà
//ìåíüøå ôàêòè÷åñêè ïîëó÷åííûõ äàííûõ. ìû áóäåì æäàòü êîïÿ äàííûå â àêêóìóëÿòîðå)

if DecAccumulatorSize < 2 then exit; //â àêêóìóëÿòîðå íåò äàæå äëèííû.


//â àêóìóëÿòîðå åñòü ÷òîòî ïî äëèííå ïðåâûøàþùåé ëèáî ðàâíîé 2ì áàéòàì. ÷èòàåì èõ êàê ðàçìåð ïàêåòà
move(DecAccumulator[0], L2Packet.Size, 2);

//!åñëè êðèïòóåòüñÿ âåñü òðàôôèê âêëþ÷àÿ ÄËÈÍÍÓ ïàêåòîâ - â ýòîì ìåñòå äåêðèïòîâàòü L2Packet.Size!

while (L2Packet.Size <= DecAccumulatorSize) do
//Ðåçêà ïàêåòîâ â ýòîì âàéëå
//áóäåì êðóòèòüñÿ òóò ïîêà íàì áóäåò õâàòàòü ôàêòè÷åñêèõ äàííûõ äëÿ îáñëóæèâàíèÿ äëèíí ëèíåéêîâñêèõ ïàêåòîâ.
begin
//ïîä÷èñòèì äàòó ïàêåòà, äàáû íå ìóñîð íå ñìóùàë ïðè îòëàäêå.
fillchar(l2packet.data[0], $FFFD, 0);
//âûòÿãèâàåì ñ àêóìóëÿòîðà äàííûå ïàêåòà.
move(DecAccumulator[2], L2Packet.data[0], L2Packet.Size-2);
//ñäâèãàåì áàòèêè â àêóìóëÿòîðå íà ýòó æå äëèííó, çàòèðàÿ ñ÷èòàíûé ñ àêêóìóëÿòîðà ïàêåò
move(DecAccumulator[L2Packet.Size], DecAccumulator[0], DecAccumulatorSize-L2Packet.Size);
//è óìåëüøàåì äëèííó àêóìóëÿòîðà
dec(DecAccumulatorSize, L2Packet.Size);
//Äåêðèïòóåì
YourDecryptFuncton(L2Packet);
//äåêðèïòîâàííûé ïàêåò ñóåì â âðåìåííûé âûõîäÿùèé áóôôåð (îí íóæåí òîëüêî ïîòîìó ÷òî íåëüçÿ ìîâíóòü â data[xxx])
move(L2Packet, OutBuffer[Size], L2Packet.Size);
//è óâåëè÷èâàåì êîëâî áàéò â âûõîäÿùåì áóôåðå
inc(Size, L2Packet.Size);
//Ðåæåì ñëåäóþùèé ïàêåò
if DecAccumulatorSize >= 2 then
begin
move(DecAccumulator[0], L2Packet.Size, 2);
//äåêðèïò äëèííû ?
end
else
break;
end;

//ñëèâàåì äàííûå ñ âðåìåííîãî áóôåðà â âûõîä áóôôåð
move(OutBuffer[0], data, $ffff);
end;


procedure TXorCoding.PostEncrypt(var Data; var Size: Word);
//server>>PreDecrypt>DecryptGP>(PH)>EncryptGP>[PostEncrypt]>>client
//â îáùåì òî÷íàÿ êîïèÿ äåêðèïòà, òîëüêî åêðèïò. à òàê âñå íà òåõ æå ìåñòàõ.

procedure YourEncryptFuncton(var Packet:TPacket);
begin
//àíàëîè÷íî YourDeacryptFuncton íî íàîáîðîò.

end;

var
L2Packet : TPacket;
OutBuffer : array[0..$ffff] of byte;
begin
fillchar(OutBuffer, $ffff, 0);
move(data,EncAccumulator[EncAccumulatorSize],size);
inc(EncAccumulatorSize, Size);
Size := 0;
if EncAccumulatorSize < 2 then exit;
move(EncAccumulator[0], L2Packet.Size, 2);
while (L2Packet.Size <= EncAccumulatorSize) do
begin
fillchar(l2packet.data[0], $FFFD, 0);
move(EncAccumulator[2], L2Packet.data[0], L2Packet.Size-2);
move(EncAccumulator[L2Packet.Size], EncAccumulator[0], EncAccumulatorSize-L2Packet.Size);
dec(EncAccumulatorSize, L2Packet.Size);
YourEncryptFuncton(L2Packet);
move(L2Packet, OutBuffer[Size], L2Packet.Size);
inc(Size, L2Packet.Size);
if EncAccumulatorSize >= 2 then
begin
move(EncAccumulator[0], L2Packet.Size, 2);
end
else
break;
end;
move(OutBuffer[0], data, $ffff);
end;



{ TXorCodingOut }

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

procedure TXorCodingOut.DecryptGP(var Data; var Size: Word);
var
k:integer;
pck:array[0..$FFFD] of Byte absolute Data;
begin
//client>>PreDecrypt>[DecryptGP]>(PH)>EncryptGP>PostEncrypt>>server

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; var Size: Word);
var
i:integer;
pck:array[0..$FFFD] of Byte absolute Data;
begin
//client>>PreDecrypt>DecryptGP>(PH)>[EncryptGP]>PostEncrypt>>server

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: Byte = 0);
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 <> 0 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;

procedure TXorCodingOut.PreDecrypt(var Data; var Size: Word);
procedure YourDecryptFuncton(var Packet:TPacket);
begin
//ñþäà ïîñòóïàåò ïàêåòèê êîòîðûé íåîáõîäèìî äåêðèïòîâàòü.
//åñëè òû çàõî÷åøü ñðàçó ïðåîáðàçîâàòü åãî â äåêðèïòîâàííûé ëèíåéêîâñêèé ïàêåò
//òî decryptgp îñòàâëÿé ïóñòûì
//åñëè æå ýòî ïîâåðõíîñíûé íàâåñîê íà êðèïòîâêó - ðåêîìåíäóþ "ðàçäåëüíîå ïèòàíèå"
end;

var
L2Packet : TPacket; //îáüÿâëåí â øàðåäñòðóêòóðå
OutBuffer : array[0..$ffff] of byte;
begin
//client>>[PreDecrypt]>DecryptGP>(PH)>EncryptGP>PostEncrypt>>server
//âûõîäÿùèé áóôôåð - ïóñò.
fillchar(OutBuffer, $ffff, 0);

//Ñóåì â àêêóìóëÿòîð òî ÷òî ïðèøëî.
move(data,DecAccumulator[DecAccumulatorSize],size);

inc(DecAccumulatorSize, Size);

Size := 0; //âûõîä îáíóëÿåì íå äàâàÿ ïàêåòõàêó ýòó ïîöèþ îáðàáîòàòü åñëè íà ñëåäóþùåé ïðîâåðêå
//ìû âûëåòèì ñ ýòîé ôóíêöèè ëèáî íå ïîïàäåì â öèêë (ýòî è åñòü ñêëåéêà ïàêåòîâ. êîãäà äëèíà ëèíåéêîâñêîãî ïàêåòà
//ìåíüøå ôàêòè÷åñêè ïîëó÷åííûõ äàííûõ. ìû áóäåì æäàòü êîïÿ äàííûå â àêêóìóëÿòîðå)

if DecAccumulatorSize < 2 then exit; //â àêêóìóëÿòîðå íåò äàæå äëèííû.


//â àêóìóëÿòîðå åñòü ÷òîòî ïî äëèííå ïðåâûøàþùåé ëèáî ðàâíîé 2ì áàéòàì. ÷èòàåì èõ êàê ðàçìåð ïàêåòà
move(DecAccumulator[0], L2Packet.Size, 2);

//!åñëè êðèïòóåòüñÿ âåñü òðàôôèê âêëþ÷àÿ ÄËÈÍÍÓ ïàêåòîâ - â ýòîì ìåñòå äåêðèïòîâàòü L2Packet.Size!

while (L2Packet.Size <= DecAccumulatorSize) do
//Ðåçêà ïàêåòîâ â ýòîì âàéëå
//áóäåì êðóòèòüñÿ òóò ïîêà íàì áóäåò õâàòàòü ôàêòè÷åñêèõ äàííûõ äëÿ îáñëóæèâàíèÿ äëèíí ëèíåéêîâñêèõ ïàêåòîâ.
begin
//ïîä÷èñòèì äàòó ïàêåòà, äàáû íå ìóñîð íå ñìóùàë ïðè îòëàäêå.
fillchar(l2packet.data[0], $FFFD, 0);
//âûòÿãèâàåì ñ àêóìóëÿòîðà äàííûå ïàêåòà.
move(DecAccumulator[2], L2Packet.data[0], L2Packet.Size-2);
//ñäâèãàåì áàòèêè â àêóìóëÿòîðå íà ýòó æå äëèííó, çàòèðàÿ ñ÷èòàíûé ñ àêêóìóëÿòîðà ïàêåò
move(DecAccumulator[L2Packet.Size], DecAccumulator[0], DecAccumulatorSize-L2Packet.Size);
//è óìåëüøàåì äëèííó àêóìóëÿòîðà
dec(DecAccumulatorSize, L2Packet.Size);
//Äåêðèïòóåì
YourDecryptFuncton(L2Packet);
//äåêðèïòîâàííûé ïàêåò ñóåì â âðåìåííûé âûõîäÿùèé áóôôåð (îí íóæåí òîëüêî ïîòîìó ÷òî íåëüçÿ ìîâíóòü â data[xxx])
move(L2Packet, OutBuffer[Size], L2Packet.Size);
//è óâåëè÷èâàåì êîëâî áàéò â âûõîäÿùåì áóôåðå
inc(Size, L2Packet.Size);
//Ðåæåì ñëåäóþùèé ïàêåò
if DecAccumulatorSize >= 2 then
begin
move(DecAccumulator[0], L2Packet.Size, 2);
//äåêðèïò äëèííû ?
end
else
break;
end;

//ñëèâàåì äàííûå ñ âðåìåííîãî áóôåðà â âûõîä áóôôåð
move(OutBuffer[0], data, $ffff);
end;



procedure TXorCodingOut.PostEncrypt(var Data; var Size: Word);
//â îáùåì òî÷íàÿ êîïèÿ äåêðèïòà, òîëüêî åêðèïò. à òàê âñå íà òåõ æå ìåñòàõ.

procedure YourEncryptFuncton(var Packet:TPacket);
begin
//àíàëîè÷íî YourDeacryptFuncton íî íàîáîðîò.

end;

var
L2Packet : TPacket;
OutBuffer : array[0..$ffff] of byte;
begin
fillchar(OutBuffer, $ffff, 0);
move(data,EncAccumulator[EncAccumulatorSize],size);
inc(EncAccumulatorSize, Size);
Size := 0;
if EncAccumulatorSize < 2 then exit;
move(EncAccumulator[0], L2Packet.Size, 2);
while (L2Packet.Size <= EncAccumulatorSize) do
begin
fillchar(l2packet.data[0], $FFFD, 0);
move(EncAccumulator[2], L2Packet.data[0], L2Packet.Size-2);
move(EncAccumulator[L2Packet.Size], EncAccumulator[0], EncAccumulatorSize-L2Packet.Size);
dec(EncAccumulatorSize, L2Packet.Size);
YourEncryptFuncton(L2Packet);
move(L2Packet, OutBuffer[Size], L2Packet.Size);
inc(Size, L2Packet.Size);
if EncAccumulatorSize >= 2 then
begin
move(EncAccumulator[0], L2Packet.Size, 2);
end
else
break;
end;
move(OutBuffer[0], data, $ffff);
end;




end.
  Ответить с цитированием
Ответ


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

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

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Помогите!] newxor.dll. HARDporno[™] Скрипты и перехват пакетов 18 06.07.2013 18:34
[Помогите!] newxor.dll Tritium Общение и обсуждение, архив Lineage 2 2 17.11.2011 12:56
[Помогите!] newxor.dll Abyssw Общение и обсуждение Aion 9 21.03.2011 23:35

Заявление об ответственности / Список мошенников

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

Пишите нам: forum@zhyk.ru
Copyright © 2025 vBulletin Solutions, Inc.
Translate: zCarot. Webdesign by DevArt (Fox)
G-gaMe! Team production | Since 2008
Hosted by GShost.net