Рыцарь
Регистрация: 25.02.2008
Адрес: г.Волгоград
Сообщений: 2,009
Сказал Спасибо: 1,285
Имеет 1,458 спасибок в 793 сообщенях
|
Цитата:
Сообщение от Emocean
Взял newxor.dll от 3.3.3. Всё стало нормально. Чем они отличаются?
|
Делал
3.2.13 от 13.08.2008
+ добавил в newxor.dpr - CryptoInit: Boolean; //Добавил новый флаг by PanAm
delphi Код:
library newxor;
uses
windows,
Coding in 'Coding.pas';
type
TXorCoding = class(TCodingClass)
private
keyLen: Byte;
CryptoInit: Boolean; //Добавил новый флаг
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;
CryptoInit := false;
End;
procedure TXorCoding.DecryptGP(var Data; const Size: Word);
var
k:integer;
pck:array[0..$4FFF] of Byte absolute Data;
begin
if pck[0] = 0 then begin //вставил проверку
CryptoInit := true; //поднял флаг
InitKey(pck[2]); //устанавил новый ключ шифрования, InitKey(pck[2], true); для интрерлюда
exit; //дальнейшая обработка не нужна, вышел
end;
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 CryptoInit then begin //это был CryptoInit
CryptoInit := false; //сбосил флаг
exit; //шифрация не требуется - вышел
end;
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.
PS: Надо из 3.2.0 newxor.dpr нормальный брать.
Добавлено через 9 часов 15 минут
3.3.6 от 05.09.2008
[-] вернул newxor.dpr как в версии 3.2.0;
[+] заменен TTRrayIcon на TJvTrayIcon;
Оффтоп
delphi Код:
Файл l2pbx.exe получен 2008.09.05 22:16:13 (CET)
Текущий статус: закончено
Результат: 2/36 (5.56%)
Форматированные
Печать результатов Антивирус Версия Обновление Результат
AhnLab-V3 2008.9.5.1 2008.09.05 -
AntiVir 7.8.1.28 2008.09.05 -
Authentium 5.1.0.4 2008.09.05 -
Avast 4.8.1195.0 2008.09.05 -
AVG 8.0.0.161 2008.09.05 -
BitDefender 7.2 2008.09.05 -
CAT-QuickHeal 9.50 2008.09.02 -
ClamAV 0.93.1 2008.09.05 -
DrWeb 4.44.0.09170 2008.09.05 -
eSafe 7.0.17.0 2008.09.03 -
eTrust-Vet 31.6.6071 2008.09.05 -
Ewido 4.0 2008.09.05 -
F-Prot 4.4.4.56 2008.09.05 -
F-Secure 8.0.14332.0 2008.09.05 -
Fortinet 3.14.0.0 2008.09.03 -
GData 19 2008.09.05 -
Ikarus T3.1.1.34.0 2008.09.05 -
K7AntiVirus 7.10.443 2008.09.05 -
Kaspersky 7.0.0.125 2008.09.05 -
McAfee 5378 2008.09.05 -
Microsoft 1.3903 2008.09.05 -
NOD32v2 3419 2008.09.05 -
Norman 5.80.02 2008.09.05 -
Panda 9.0.0.4 2008.09.05 -
PCTools 4.4.2.0 2008.09.05 -
Prevx1 V2 2008.09.05 -
Rising 20.60.42.00 2008.09.05 -
Sophos 4.33.0 2008.09.05 Mal/Basine-C
Sunbelt 3.1.1610.1 2008.09.05 -
Symantec 10 2008.09.05 -
TheHacker 6.3.0.8.072 2008.09.04 -
TrendMicro 8.700.0.1004 2008.09.05 -
VBA32 3.12.8.5 2008.09.05 -
ViRobot 2008.9.5.1365 2008.09.05 -
VirusBuster 4.5.11.0 2008.09.05 -
Webwasher-Gateway 6.6.2 2008.09.05 Virus.Win32.FileInfector.gen!90 (suspicious)
Дополнительная информация
File size: 1669632 bytes
MD5...: c28108e095410bd106c965b9779a600e
Последний раз редактировалось NLObP, 06.09.2008 в 01:21.
Причина: Добавлено сообщение
|