Вот держи
delphi Код:
function TPacket.doXORdec(data: PChar; const data_len: cardinal): cardinal;
var
pos: integer;
edx, ecx: cardinal;
begin
ecx := PCardinal(@data[data_len - 8])^;
pos := data_len - 12;
while pos >= 4 do begin
edx := PCardinal(@data[pos])^;
edx := ecx xor edx;
ecx := ecx - edx;
PCardinal(@data[pos])^ := edx;
dec(pos, 4);
end;
Result:=ecx;
end;
function TPacket.doXORenc(data: PChar; const data_len, key: cardinal): cardinal;
var
pos, edx, ecx: cardinal;
begin
ecx := PCardinal(@key)^;
pos := 4;
while pos < data_len - 8 do begin
edx := PCardinal(@data[pos])^;
ecx := ecx + edx;
edx := edx xor ecx;
PCardinal(@data[pos])^ := edx;
inc(pos, 4);
end;
PCardinal(@data[pos])^ := ecx; // вписываем новый ключ
Result := ecx;
end;
(с) Sh00rGo wss 2.7