 |
newxor.dll. - Скрипты и перехват пакетов - Скрипты и перехват пакетов |
04.04.2011, 23:45
|
#1
|
|
|
|
Пехотинец
|
 Регистрация: 08.03.2011
 Сообщений: 93
 Популярность: 17091
 Сказал(а) спасибо: 52
Поблагодарили 536 раз(а) в 215 сообщениях
|
newxor.dll.
Здравствуйте уважаемые пользователи,у меня вопрос к знающим людям.Создал тему так как на форуме не нашел вопросов а главное ответов по данной тематике.
Так вот собственно как написать newxor.dll для жилаемого сервера?Искал инфу по нету но,только нашел непонятные для меня строчки.
Пример :
 |
Цитата: |
 |
|
|
|
|
|
|
|
вот комплект newxor.dpr и coding.pas от l2ph v.3.4.x
Распаковать из архива newxor.dpr и coding.pas в любую папку
Устанавливаешь Делфи 7 или 2007
Открываешь newxor.dpr
Правишь код под свой сервак
Компилишь |
|
 |
|
 |
|
И еще одно вот это исходник для стандартной шифрации от L2phx 3.4,значит если пакеты видны то это так называемая стандартная шифрация?
Код:
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.
Заранее спасибо.
Последний раз редактировалось J-Fobos; 05.04.2011 в 00:12.
Причина: добавил [code]
|
|
|
05.04.2011, 00:11
|
#2
|
|
|
|
Рыцарь
|
 Регистрация: 12.04.2009
 Сообщений: 394
 Популярность: 47903
 Сказал(а) спасибо: 515
Поблагодарили 1,124 раз(а) в 430 сообщениях
|
Re: newxor.dll.
Для версии 3.5 с учетом не нулевых ObfuscationKey (из KeyPacket)
Код:
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;
begin
end.
Код:
unit usharedstructs;
interface
uses Classes;
const
PCK_GS_ToServer = 4;
PCK_GS_ToClient = 3;
PCK_LS_ToServer = 2;
PCK_LS_ToClient = 1;
type
TEncDecSettings =
record
isChangeXor,
isNoDecrypt,
isNoProcessToClient,
isNoProcessToServer,
isKamael,
isGraciaOff,
isSavePLog,
isNoLog,
ShowLastPacket,
HexViewOffset,
isprocesspackets : boolean;
NoFreeAfterDisconnect : boolean;
UseSocks5Chain, Socks5NeedAuth : boolean;
Socks5Port : cardinal;
Socks5Host, Socks5AuthUsername, Socks5AuthPwd : string;
isAION{,
ignoreServerToClient,
ignoreClientToServer}: boolean;
end;
{Используется плагинами}
PCodingClass =^TCodingClass;
TCodingClass = class(TObject)
public
GKeyS,GKeyR:array[0..15] of Byte;
procedure InitKey(const XorKey; Interlude: Byte = 0); Virtual; Abstract;
procedure DecryptGP(var Data; var Size: Word); Virtual; Abstract;
procedure EncryptGP(var Data; var Size: Word); Virtual; Abstract;
procedure PreDecrypt(var Data; var Size: Word); Virtual; Abstract;
procedure PostEncrypt(var Data; var Size: Word); Virtual; Abstract;
end;
PCorrectorData = ^TCorrectorData;
TCorrectorData = packed record
_seed : integer; // random generator seed for mixing id tables
_1_byte_table : string;
_2_byte_table : string;
_2_byte_table_size: integer;
_id_mix : boolean;
temp_seed : integer;
protocol: integer;
end;
TCharArray = array[0..$FFFF] of AnsiChar;
TCharArrayEx = array[0..$1FFFE] of AnsiChar; //2х
PPacket = ^TPacket;
TPacket = packed record case Integer of
0: (Size: Word;
Data: array[0..$FFFD] of Byte);
1: (PacketAsByteArray: array[0..$FFFF] of Byte);
2: (PacketAsCharArray: TCharArray);
3: (pckSize: Word;
pckId: Byte;
pckData: array[0..$FFFC] of Byte);
end;
TNewPacket = procedure(var Packet:tpacket;FromServer : boolean; Caller: TObject) of object; // Caller это TencDec к примеру -> TencDec(caller).name вызывает акшин только TencDec
TNewAction = procedure (action : byte; Caller: TObject) of object; //Caller зависит от action
TStringArray = array of string;
{экземпляр этого класса (точнее его потомок) передается в плагины.}
TOnTimer = procedure(const param: Cardinal); stdcall;
tConnectInfo = packed record
ConnectID:integer;
ConnectName:string[200];
end;
tConnectInfoEx = packed record //Используеться в ASL
ConnectInfo : tConnectInfo;
Valid : boolean;
end;
PPluginStruct = ^TPluginStruct;
TPluginStruct = class (tobject)
private
public
userFormHandle: THandle;
ConnectInfo : tConnectInfo;
UserFuncs : tstringlist;
function ReadC(const pck:string; const index:integer):byte; Virtual; Abstract;
function ReadH(const pck:string; const index:integer):word; Virtual; Abstract;
function ReadD(const pck:string; const index:integer):integer; Virtual; Abstract;
function ReadQ(const pck:string; const index:integer):int64; Virtual; Abstract;
function ReadF(const pck:string; const index:integer):double; Virtual; Abstract;
function ReadS(const pck:string; const index:integer):string; Virtual; Abstract;
function ReadCEx(const pck; const index:integer):byte; Virtual; Abstract;
function ReadHEx(const pck; const index:integer):word; Virtual; Abstract;
function ReadDEx(const pck; const index:integer):integer; Virtual; Abstract;
function ReadQEx(const pck; const index:integer):int64; Virtual; Abstract;
function ReadFEx(const pck; const index:integer):double; Virtual; Abstract;
function ReadSEx(const pck; const index:integer):string; Virtual; Abstract;
procedure WriteC(var pck: string; const v:byte; ind:integer=-1); Virtual; Abstract;
procedure WriteH(var pck: string; const v:word; ind:integer=-1); Virtual; Abstract;
procedure WriteD(var pck: string; const v:integer; ind:integer=-1); Virtual; Abstract;
procedure WriteQ(var pck: string; const v:int64; ind:integer=-1); Virtual; Abstract;
procedure WriteF(var pck: string; const v:double; ind:integer=-1); Virtual; Abstract;
procedure WriteS(var pck: string; const v:string; ind:integer=-1); Virtual; Abstract;
procedure WriteCEx(var pck; const v:byte; ind:integer=-1); Virtual; Abstract;
procedure WriteHEx(var pck; const v:word; ind:integer=-1); Virtual; Abstract;
procedure WriteDEx(var pck; const v:integer; ind:integer=-1); Virtual; Abstract;
procedure WriteQEx(var pck; const v:int64; ind:integer=-1); Virtual; Abstract;
procedure WriteFEx(var pck; const v:double; ind:integer=-1); Virtual; Abstract;
procedure WriteSEx(var pck; const v:string; ind:integer=-1); Virtual; Abstract;
Function SetScriptVariable(scriptid:integer; varname:string; varvalue:variant):boolean; Virtual; Abstract;
Function GetScriptVariable(scriptid:integer; varname:string):variant; Virtual; Abstract;
function CallScriptFunction(scriptid:integer; Name: String; Params: Variant; var error:string): Variant; Virtual; Abstract;
function IsScriptIdValid(scriptid:integer):boolean; Virtual; Abstract;
function CreateAndRunTimerThread(const interval, usrParam: Cardinal;
const OnTimerProc: TOnTimer): Pointer; Virtual; Abstract;
procedure ChangeTimerThread(const timer: Pointer; const interval: Cardinal;
const usrParam: Cardinal = $ffffffff;
const OnTimerProc: TOnTimer = nil); Virtual; Abstract;
procedure DestroyTimerThread(var timer: Pointer); Virtual; Abstract;
function StringToHex(str1,Separator:String):String; Virtual; Abstract;
function HexToString(Hex:String):String; Virtual; Abstract;
function DataPckToStrPck(var pck): string; Virtual; Abstract;
procedure SendPacketData(var pck; const tid: integer; const ToServer: Boolean); Virtual; Abstract;
procedure SendPacketStr(pck: string; const tid: integer; const ToServer: Boolean); Virtual; Abstract;
procedure SendPacket(Size: Word; pck: string; tid: integer; ToServer: Boolean); Virtual; Abstract;
function getConnectionName(id : integer):string; Virtual; Abstract;
function getConnectioidByName(name : string):integer; Virtual; Abstract;
Function GoFirstConnection:boolean; Virtual; Abstract;
Function GoNextConnection:boolean; Virtual; Abstract;
procedure ShowUserForm(ActivateOnly:boolean); Virtual; Abstract;
Procedure HideUserForm; Virtual; Abstract;
end;
implementation
end.
________________
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
В любом из нас спит гений. И с каждым днем все крепче.
Запомните раз и навсегда:= 'Помочь' <> 'Сделайте за меня';
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
Последний раз редактировалось J-Fobos; 05.04.2011 в 00:15.
|
|
|
Пользователь сказал cпасибо:
|
|
05.04.2011, 22:13
|
#3
|
|
|
|
Пехотинец
|
 Регистрация: 08.03.2011
 Сообщений: 93
 Популярность: 17091
 Сказал(а) спасибо: 52
Поблагодарили 536 раз(а) в 215 сообщениях
|
Re: newxor.dll.
Спасибо конечно за ответ,но можно ли ответить в таком види:
1.Учи Delphi
2.Скачай это
3.Миняй это
4. и тд.(Все для примера написал).
Готов потрать время но то чтобы нормально разбиратся в этом.
И еще раз зарание спасибо.
Добавлено через 17 часов 58 минут
Поможет кто?
Или же все через wmz?
Последний раз редактировалось HARDporno[™]; 06.04.2011 в 16:12.
Причина: Добавлено сообщение
|
|
|
10.04.2011, 03:31
|
#4
|
|
|
|
Рыцарь
|
 Регистрация: 12.04.2009
 Сообщений: 394
 Популярность: 47903
 Сказал(а) спасибо: 515
Поблагодарили 1,124 раз(а) в 430 сообщениях
|
Re: newxor.dll.
Я так подозреваю надо выучить делфи и основы ассемблера, также научится работать с отладчиками.
________________
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
В любом из нас спит гений. И с каждым днем все крепче.
Запомните раз и навсегда:= 'Помочь' <> 'Сделайте за меня';
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
|
|
|
10.04.2011, 11:53
|
#5
|
|
|
|
Пехотинец
|
 Регистрация: 08.03.2011
 Сообщений: 93
 Популярность: 17091
 Сказал(а) спасибо: 52
Поблагодарили 536 раз(а) в 215 сообщениях
|
Re: newxor.dll.
 |
Цитата: |
 |
|
|
|
|
|
|
|
|
Я так подозреваю надо выучить делфи и основы ассемблера, также научится работать с отладчиками.
|
|
 |
|
 |
|
Ну что ж спасибо за ответ,на днях начну учить основы.
//J-Fobos: наиболее популярный отладчики Olly и IDE, большенство людей что работают с линейкой юзают именно их.
Последний раз редактировалось J-Fobos; 10.04.2011 в 13:10.
|
|
|
09.08.2011, 23:33
|
#6
|
|
|
|
Разведчик
|
 Регистрация: 17.05.2010
 Сообщений: 2
 Популярность: 10
 Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
|
Re: newxor.dll.
Когда пытаюсь скомпилировать (Для версии 3.5), выдаёт ошибку
Build
[Warning] Project1.dpr(9): File not found: 'newxor.res'
[Error] File not found: 'newxor.res'
чего ему не хватает для компиляции и где это взять??
|
|
|
10.08.2011, 00:00
|
#7
|
|
|
|
Рыцарь
|
 Регистрация: 12.04.2009
 Сообщений: 394
 Популярность: 47903
 Сказал(а) спасибо: 515
Поблагодарили 1,124 раз(а) в 430 сообщениях
|
Re: newxor.dll.
DarkDeidara, уберите эту строчку {$R *.res}.
________________
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
В любом из нас спит гений. И с каждым днем все крепче.
Запомните раз и навсегда:= 'Помочь' <> 'Сделайте за меня';
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
|
|
|
10.08.2011, 01:22
|
#8
|
|
|
|
Разведчик
|
 Регистрация: 17.05.2010
 Сообщений: 2
 Популярность: 10
 Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
|
Re: newxor.dll.
Спасибо, скомпилировал.
жаль что к серву не подошло...
//J-Fobos: оно и не должно было подойти, выложенный код встроен в пакетхак по умолчанию, я его только для примера привел.
Последний раз редактировалось J-Fobos; 10.08.2011 в 19:24.
|
|
|
11.08.2011, 11:22
|
#9
|
|
|
|
Разведчик
|
 Регистрация: 11.07.2009
 Сообщений: 10
 Популярность: 18
 Сказал(а) спасибо: 12
Поблагодарили 4 раз(а) в 3 сообщениях
|
Re: newxor.dll.
объясните в личку как компилировать, а то я вообще в этом нуб, а хочется научится...
|
|
|
12.08.2011, 07:25
|
#10
|
|
|
|
Пехотинец
|
 Регистрация: 12.08.2010
 Сообщений: 51
 Популярность: 2704
 Сказал(а) спасибо: 92
Поблагодарили 125 раз(а) в 87 сообщениях
|
Re: newxor.dll.
________________
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
|
|
|
15.08.2011, 04:47
|
#11
|
|
|
|
Пехотинец
|
 Регистрация: 12.08.2010
 Сообщений: 51
 Популярность: 2704
 Сказал(а) спасибо: 92
Поблагодарили 125 раз(а) в 87 сообщениях
|
Re: newxor.dll.
P.S а кому нужна помощь насчёт newxor.dll вам в кодеркс, мне там помогли несколько раз
________________
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
|
|
|
17.08.2011, 10:44
|
#12
|
|
|
|
Разведчик
|
 Регистрация: 08.04.2011
 Сообщений: 10
 Популярность: 36
 Сказал(а) спасибо: 38
Поблагодарили 13 раз(а) в 9 сообщениях
|
Re: newxor.dll.
________________
Понравилось ставь спасибо , я не жадный в долгу не останусь. Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
|
|
|
20.09.2011, 19:34
|
#14
|
|
|
|
Разведчик
|
 Регистрация: 27.08.2010
 Сообщений: 19
 Популярность: 28
 Сказал(а) спасибо: 12
Поблагодарили 10 раз(а) в 9 сообщениях
|
Re: newxor.dll.
Если не ошибаюсь, делфи построен на паскале. Т.е. Мб лучше начать с паскаля?
2-ое. Ребят, кто шарит в этом, напишите пож маленький видео мануал. (Кому конечно не в лом)
3-ье. Кирилл, когда ты будешь в скайпе?  Ссори за оффтоп ^^
________________
Всё для Zhyk.ru! Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
|
|
|
20.09.2011, 19:40
|
#15
|
|
|
|
Рыцарь
|
 Регистрация: 15.06.2009
 Сообщений: 340
 Популярность: 4051
 Сказал(а) спасибо: 575
Поблагодарили 511 раз(а) в 217 сообщениях
|
Re: newxor.dll.
Язык обжект паскаль, но надо знать что с 2007 года делфи имеет статус отдельного языка -)
Я сам начинал с паскаля , понять основы консольного программирования можно с него, а потом учить делфи.
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Заявление об ответственности / Список мошенников
Часовой пояс GMT +4, время: 14:21.
|
 |