[Vídeo Aula]Criando seu Primeiro Crypter by Yuri Fahin[pt/br]
:: Entrada
Página 1 de 1.
[Vídeo Aula]Criando seu Primeiro Crypter by Yuri Fahin[pt/br]
Olá pessoal, sou eu mais uma vez, Hoje irei ensinar nesta vídeo aula EXLUSIVA PARA A ÁREA VIP, como criar seu primeiro Crypter....
Mãos a Obra:
Primeiramente iremos Criar uma Nova aplicação, depois ir em:
File > New > Unit
Após isto, iremos salvar os arquivos em uma pasta que iremos chamar de Crypter...
Após isto vá até a pasta Crypter e renomeie a Unit2 para: untaPlib
Agora, vá na untaPlib e insira a seguinte linha de código:
[PHP]{
untaPlib by Yuri Fahin
25. Juni 2011
Exemplo:
CompressFile('c:\Data.dat', 'c:\Compressed.dat');
DecompressFile('c:\Compressed.dat', 'c:\Data_ok.dat');
}
unit untaPlib;
interface
uses Windows;
function CompressMemory(lpBuffer: Pointer; var Size: Cardinal): Pointer;
function DecompressMemory(lpBuffer: Pointer; var Size: Cardinal): Pointer;
function CompressFile(lpFilename: String): String;
function DecompressFile(lpFilename, lpOutputfile: String): Boolean;
{
Liga até a aPlibu
}
type
TaPack_Status = function(w0, w1, w2 : DWORD; cbparam : Pointer) : DWORD;cdecl;
function _aP_pack(var Source; var Destination; Length : DWORD; var WorkMem; Callback: TaPack_Status; cbparam : Pointer): DWORD; cdecl;
function _aP_workmem_size(InputSize : DWORD): DWORD; cdecl;
function _aPsafe_pack(var Source; var Destination; Length : DWORD; var WorkMem; Callback : TaPack_Status; cbparam : Pointer): DWORD; cdecl;
function _aPsafe_get_orig_size(var Source): DWORD; cdecl;
function _aPsafe_depack(var Source; SrcLen: DWORD; var Destination; DstLen :DWORD): DWORD; cdecl;
function _aP_depack_asm(var Source, Destination) : DWORD; cdecl;
function _aP_crc32(var Source; Length : DWORD): DWORD; cdecl;
function _aP_depack_asm_safe(var Source; SrcLen : DWORD; var Destination; DstLen :DWORD) : DWORD; cdecl;
implementation
{$L lib_aplib\aplib.obj}
{$L lib_aplib\depack.obj}
{$L lib_aplib\depacks.obj}
{$L lib_aplib\crc32.obj}
{$L lib_aplib\spack.obj}
{$L lib_aplib\sgetsize.obj}
{$L lib_aplib\sdepack.obj}
function _aP_pack(var Source; var Destination; Length : DWORD; var WorkMem; Callback : TaPack_Status; cbparam : Pointer) : DWORD; external;
function _aP_workmem_size(InputSize : DWORD) : DWORD; external;
function _aPsafe_pack(var Source; var Destination; Length : DWORD; var WorkMem; Callback : TaPack_Status; cbparam : Pointer) : DWORD; external;
function _aPsafe_get_orig_size(var Source) : DWORD; external;
function _aPsafe_depack(var Source; SrcLen : DWORD; var Destination; DstLen :DWORD) : DWORD; external;
function _aP_depack_asm(var Source, Destination) : DWORD; external;
function _aP_crc32(var Source; Length : DWORD): DWORD; external;
function _aP_depack_asm_safe(var Source; SrcLen : DWORD; var Destination; DstLen :DWORD) : DWORD; external;
function GetPointerSize(lpBuffer: Pointer): Cardinal;
begin
if lpBuffer = nil then
Result := Cardinal(-1)
else
Result := Cardinal(Pointer(Cardinal(lpBuffer) -4)^) and $7FFFFFFC -4;
end;
{
Resultado: Ponteiro do buffer comprimido.
lpBuffer: Buffer que devem ser compactados.
Tamanho var: Comprimento de quanto deve ser compactado, depois o tamanho compactado.
Seguro: deve ser verdade
}
function CompressMemory(lpBuffer: Pointer; var Size: Cardinal): Pointer;
var
lpOutput, lpWorkspace: Pointer;
begin
Result := nil;
if lpBuffer = nil then
Exit;
if Size = INVALID_HANDLE_VALUE then
Size := GetPointerSize(lpBuffer);
lpWorkspace := VirtualAlloc(nil, _aP_workmem_size(Size), MEM_COMMIT, PAGE_READWRITE);
lpOutput := VirtualAlloc(nil, Size, MEM_COMMIT, PAGE_READWRITE);
Size := _aPsafe_pack(lpBuffer^, lpOutput^, Size, lpWorkspace^, nil, nil);
Result := lpOutput;
VirtualFree(lpWorkspace, 0, MEM_RELEASE);
end;
{
Resultado: Ponteiro do buffer de descompressão.
lpBuffer: Buffer que deve ser descompactado.
Tamanho var: Comprimento de quanto deve ser descomprimido (FileSize), depois o tamanho descomprimido.
Seguro: deve ser verdade
}
function DecompressMemory(lpBuffer: Pointer; var Size: Cardinal): Pointer;
var
lpOutput: Pointer;
dwOrginalSize: Cardinal;
begin
Result := nil;
if lpBuffer = nil then
Exit;
if Size = INVALID_HANDLE_VALUE then
Size := GetPointerSize(lpBuffer);
dwOrginalSize := _aPsafe_get_orig_size(lpBuffer^);
if (dwOrginalSize <> INVALID_HANDLE_VALUE) or (dwOrginalSize <> 0) then
begin
lpOutput := VirtualAlloc(nil, dwOrginalSize, MEM_COMMIT, PAGE_READWRITE);
Size := _aPsafe_depack(lpBuffer^, Size, lpOutput^, dwOrginalSize) ;
Result := lpOutput;
end;
end;
function CompressFile(lpFilename: String): String;
var
hFileIn, hFileMappingObjectIn,
// hFileOut: THandle;
dwFileSize: DWORD;
//lpNumberOfBytesWritten: DWORD;
lpBaseAddressIn, lpBuffer: Pointer;
PackedData:String;
begin
// Result := False;
hFileIn := CreateFile(PChar(lpFilename), GENERIC_READ or GENERIC_WRITE, FILE_SHARE_READ or FILE_SHARE_WRITE, nil, OPEN_ALWAYS, 0, 0);
if hFileIn = INVALID_HANDLE_VALUE then
Exit;
dwFileSize := Windows.GetFileSize(hFileIn, nil);
hFileMappingObjectIn := CreateFileMapping(hFileIn, nil, PAGE_READWRITE, 0, 0, nil);
lpBaseAddressIn := MapViewOfFile(hFileMappingObjectIn, FILE_MAP_READ or FILE_MAP_WRITE, 0, 0, 0);
lpBuffer := CompressMemory(lpBaseAddressIn, dwFileSize);
// hFileOut := CreateFile(PChar(lpOutputfile), GENERIC_READ or GENERIC_WRITE, FILE_SHARE_READ or FILE_SHARE_WRITE, nil, CREATE_ALWAYS, 0, 0);
// if hFileOut <> INVALID_HANDLE_VALUE then
// begin
SetLength(PackedData, dwFileSize);
Move(lpBuffer^,PackedData[1], dwFileSize);
// WriteFile(hFileOut, lpBuffer^, dwFileSize, lpNumberOfBytesWritten, nil);
// CloseHandle(hFileOut);
// end;
UnmapViewOfFile(lpBaseAddressIn);
CloseHandle(hFileMappingObjectIn);
CloseHandle(hFileIn);
Result := PackedData;
end;
function DecompressFile(lpFilename, lpOutputfile: String): Boolean;
var
hFileIn, hFileMappingObjectIn,
hFileOut: THandle;
dwFileSize, lpNumberOfBytesWritten: DWORD;
lpBaseAddressIn, lpBuffer: Pointer;
begin
Result := False;
hFileIn := CreateFile(PChar(lpFilename), GENERIC_READ or GENERIC_WRITE, FILE_SHARE_READ or FILE_SHARE_WRITE, nil, OPEN_ALWAYS, 0, 0);
if hFileIn = INVALID_HANDLE_VALUE then
Exit;
dwFileSize := Windows.GetFileSize(hFileIn, nil);
hFileMappingObjectIn := CreateFileMapping(hFileIn, nil, PAGE_READWRITE, 0, 0, nil);
lpBaseAddressIn := MapViewOfFile(hFileMappingObjectIn, FILE_MAP_READ or FILE_MAP_WRITE, 0, 0, 0);
lpBuffer := DecompressMemory(lpBaseAddressIn, dwFileSize);
hFileOut := CreateFile(PChar(lpOutputfile), GENERIC_READ or GENERIC_WRITE, FILE_SHARE_READ or FILE_SHARE_WRITE, nil, CREATE_ALWAYS, 0, 0);
if hFileOut <> INVALID_HANDLE_VALUE then
begin
WriteFile(hFileOut, lpBuffer^, dwFileSize, lpNumberOfBytesWritten, nil);
CloseHandle(hFileOut);
end;
VirtualFree(lpBuffer, 0, MEM_RELEASE);
UnmapViewOfFile(lpBaseAddressIn);
CloseHandle(hFileMappingObjectIn);
CloseHandle(hFileIn);
end;
end.
[/PHP]
Após isto, iremos inserir alguns códigos, iremos para a parte visual finalmente... rs
Insira:
Faça as Seguintes alterações, e oranização tente deixar do modo que segue a imagem:
Agora iremos para a parte de códigos, as uses deverão ficar deste modo:
[PHP]uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, XPMan, untaPlib;[/PHP]
A implementation devera ficar deste modo:
LEMBRANDO: para não haver nenhum erro, você tem que extrair a stub.RES que está junto com a source do projeto !
[PHP]implementation
{$R *.dfm}
{$R stub.RES}[/PHP]
Após isto você devera inserir a seguinte função (Abaixo de Implementation - como segue a imagem):
[PHP]Function DataEncrypt(Data:String;key:Integer):String;
var
I: integer;
begin
for I := 1 to length(Data) do
Data[I] := chr(ord(Data[I]) xor key);
Result := Data;
end;[/PHP]
No Button1, iremos inserir:
[PHP] OpenDialog1.FileName := '';
opendialog1.Filter := 'Arquivo Executável|*.exe|';
if opendialog1.Execute then
Edit1.Text := OpenDialog1.FileName;[/PHP]
E no button2, iremos inserir:
[PHP]var
Resource:TResourceStream;
ResourceHandle:THandle;
FileData: String;
begin
if (Edit1.Text = '') then exit;
SaveDialog1.FileName := '';
SaveDialog1.Filter := 'Arquivo Executável(*.exe)|*.exe';
SaveDialog1.DefaultExt := 'exe';
if not SaveDialog1.Execute then exit;
Resource:=TResourceStream.Create(HInstance, 'STUB', RT_RCDATA);
Resource.SaveToFile(SaveDialog1.FileName);
Resource.Free;
FileData:= CompressFile(Edit1.Text);
FileData:= DataEncrypt(FileData,66);
//WriteResData(SaveDialog1.FileName, @FileData[1], Length(FileData), 'DATA');
//WriteResData(SaveDialog1.FileName, nil, 0, 'DVCLAL');
//WriteResData(SaveDialog1.FileName, nil, 0, 'PACKAGEINFO');
ResourceHandle := BeginUpdateResourceW(PWideChar(WideString(SaveDialog1.Filename)) , False);
UpdateResourceW(ResourceHandle,PWideChar(RT_RCDATA),(PWideChar(WideString('DATA'))),0,@FileData[1],Length(FileData));
EndUpdateResourceW(ResourceHandle, False);
MessageBox(0, 'Arquivo Encryptado com Sucesso', PChar('Informação'), MB_OK or MB_ICONINFORMATION);
end;[/PHP]
Daí no button3, iremos inserir:
[PHP] MessageBox(0, 'Crypter Desenvolvido por Yuri', PChar('Informação'), MB_OK or MB_ICONINFORMATION);[/PHP]
Pronto, seu Crypter está 100% Pronto, agora basta você estudar a STUB que está junto com a source, e criar sua propria e deixar 100% contra os antivirus lixos, rs
#DOWNLOAD VÍDEO AULA + SOURCE#
Download da Vídeo Aula
Source do Crypter + Tutorial em Texto
Mãos a Obra:
Primeiramente iremos Criar uma Nova aplicação, depois ir em:
File > New > Unit
Após isto, iremos salvar os arquivos em uma pasta que iremos chamar de Crypter...
Após isto vá até a pasta Crypter e renomeie a Unit2 para: untaPlib
Agora, vá na untaPlib e insira a seguinte linha de código:
[PHP]{
untaPlib by Yuri Fahin
25. Juni 2011
Exemplo:
CompressFile('c:\Data.dat', 'c:\Compressed.dat');
DecompressFile('c:\Compressed.dat', 'c:\Data_ok.dat');
}
unit untaPlib;
interface
uses Windows;
function CompressMemory(lpBuffer: Pointer; var Size: Cardinal): Pointer;
function DecompressMemory(lpBuffer: Pointer; var Size: Cardinal): Pointer;
function CompressFile(lpFilename: String): String;
function DecompressFile(lpFilename, lpOutputfile: String): Boolean;
{
Liga até a aPlibu
}
type
TaPack_Status = function(w0, w1, w2 : DWORD; cbparam : Pointer) : DWORD;cdecl;
function _aP_pack(var Source; var Destination; Length : DWORD; var WorkMem; Callback: TaPack_Status; cbparam : Pointer): DWORD; cdecl;
function _aP_workmem_size(InputSize : DWORD): DWORD; cdecl;
function _aPsafe_pack(var Source; var Destination; Length : DWORD; var WorkMem; Callback : TaPack_Status; cbparam : Pointer): DWORD; cdecl;
function _aPsafe_get_orig_size(var Source): DWORD; cdecl;
function _aPsafe_depack(var Source; SrcLen: DWORD; var Destination; DstLen :DWORD): DWORD; cdecl;
function _aP_depack_asm(var Source, Destination) : DWORD; cdecl;
function _aP_crc32(var Source; Length : DWORD): DWORD; cdecl;
function _aP_depack_asm_safe(var Source; SrcLen : DWORD; var Destination; DstLen :DWORD) : DWORD; cdecl;
implementation
{$L lib_aplib\aplib.obj}
{$L lib_aplib\depack.obj}
{$L lib_aplib\depacks.obj}
{$L lib_aplib\crc32.obj}
{$L lib_aplib\spack.obj}
{$L lib_aplib\sgetsize.obj}
{$L lib_aplib\sdepack.obj}
function _aP_pack(var Source; var Destination; Length : DWORD; var WorkMem; Callback : TaPack_Status; cbparam : Pointer) : DWORD; external;
function _aP_workmem_size(InputSize : DWORD) : DWORD; external;
function _aPsafe_pack(var Source; var Destination; Length : DWORD; var WorkMem; Callback : TaPack_Status; cbparam : Pointer) : DWORD; external;
function _aPsafe_get_orig_size(var Source) : DWORD; external;
function _aPsafe_depack(var Source; SrcLen : DWORD; var Destination; DstLen :DWORD) : DWORD; external;
function _aP_depack_asm(var Source, Destination) : DWORD; external;
function _aP_crc32(var Source; Length : DWORD): DWORD; external;
function _aP_depack_asm_safe(var Source; SrcLen : DWORD; var Destination; DstLen :DWORD) : DWORD; external;
function GetPointerSize(lpBuffer: Pointer): Cardinal;
begin
if lpBuffer = nil then
Result := Cardinal(-1)
else
Result := Cardinal(Pointer(Cardinal(lpBuffer) -4)^) and $7FFFFFFC -4;
end;
{
Resultado: Ponteiro do buffer comprimido.
lpBuffer: Buffer que devem ser compactados.
Tamanho var: Comprimento de quanto deve ser compactado, depois o tamanho compactado.
Seguro: deve ser verdade
}
function CompressMemory(lpBuffer: Pointer; var Size: Cardinal): Pointer;
var
lpOutput, lpWorkspace: Pointer;
begin
Result := nil;
if lpBuffer = nil then
Exit;
if Size = INVALID_HANDLE_VALUE then
Size := GetPointerSize(lpBuffer);
lpWorkspace := VirtualAlloc(nil, _aP_workmem_size(Size), MEM_COMMIT, PAGE_READWRITE);
lpOutput := VirtualAlloc(nil, Size, MEM_COMMIT, PAGE_READWRITE);
Size := _aPsafe_pack(lpBuffer^, lpOutput^, Size, lpWorkspace^, nil, nil);
Result := lpOutput;
VirtualFree(lpWorkspace, 0, MEM_RELEASE);
end;
{
Resultado: Ponteiro do buffer de descompressão.
lpBuffer: Buffer que deve ser descompactado.
Tamanho var: Comprimento de quanto deve ser descomprimido (FileSize), depois o tamanho descomprimido.
Seguro: deve ser verdade
}
function DecompressMemory(lpBuffer: Pointer; var Size: Cardinal): Pointer;
var
lpOutput: Pointer;
dwOrginalSize: Cardinal;
begin
Result := nil;
if lpBuffer = nil then
Exit;
if Size = INVALID_HANDLE_VALUE then
Size := GetPointerSize(lpBuffer);
dwOrginalSize := _aPsafe_get_orig_size(lpBuffer^);
if (dwOrginalSize <> INVALID_HANDLE_VALUE) or (dwOrginalSize <> 0) then
begin
lpOutput := VirtualAlloc(nil, dwOrginalSize, MEM_COMMIT, PAGE_READWRITE);
Size := _aPsafe_depack(lpBuffer^, Size, lpOutput^, dwOrginalSize) ;
Result := lpOutput;
end;
end;
function CompressFile(lpFilename: String): String;
var
hFileIn, hFileMappingObjectIn,
// hFileOut: THandle;
dwFileSize: DWORD;
//lpNumberOfBytesWritten: DWORD;
lpBaseAddressIn, lpBuffer: Pointer;
PackedData:String;
begin
// Result := False;
hFileIn := CreateFile(PChar(lpFilename), GENERIC_READ or GENERIC_WRITE, FILE_SHARE_READ or FILE_SHARE_WRITE, nil, OPEN_ALWAYS, 0, 0);
if hFileIn = INVALID_HANDLE_VALUE then
Exit;
dwFileSize := Windows.GetFileSize(hFileIn, nil);
hFileMappingObjectIn := CreateFileMapping(hFileIn, nil, PAGE_READWRITE, 0, 0, nil);
lpBaseAddressIn := MapViewOfFile(hFileMappingObjectIn, FILE_MAP_READ or FILE_MAP_WRITE, 0, 0, 0);
lpBuffer := CompressMemory(lpBaseAddressIn, dwFileSize);
// hFileOut := CreateFile(PChar(lpOutputfile), GENERIC_READ or GENERIC_WRITE, FILE_SHARE_READ or FILE_SHARE_WRITE, nil, CREATE_ALWAYS, 0, 0);
// if hFileOut <> INVALID_HANDLE_VALUE then
// begin
SetLength(PackedData, dwFileSize);
Move(lpBuffer^,PackedData[1], dwFileSize);
// WriteFile(hFileOut, lpBuffer^, dwFileSize, lpNumberOfBytesWritten, nil);
// CloseHandle(hFileOut);
// end;
UnmapViewOfFile(lpBaseAddressIn);
CloseHandle(hFileMappingObjectIn);
CloseHandle(hFileIn);
Result := PackedData;
end;
function DecompressFile(lpFilename, lpOutputfile: String): Boolean;
var
hFileIn, hFileMappingObjectIn,
hFileOut: THandle;
dwFileSize, lpNumberOfBytesWritten: DWORD;
lpBaseAddressIn, lpBuffer: Pointer;
begin
Result := False;
hFileIn := CreateFile(PChar(lpFilename), GENERIC_READ or GENERIC_WRITE, FILE_SHARE_READ or FILE_SHARE_WRITE, nil, OPEN_ALWAYS, 0, 0);
if hFileIn = INVALID_HANDLE_VALUE then
Exit;
dwFileSize := Windows.GetFileSize(hFileIn, nil);
hFileMappingObjectIn := CreateFileMapping(hFileIn, nil, PAGE_READWRITE, 0, 0, nil);
lpBaseAddressIn := MapViewOfFile(hFileMappingObjectIn, FILE_MAP_READ or FILE_MAP_WRITE, 0, 0, 0);
lpBuffer := DecompressMemory(lpBaseAddressIn, dwFileSize);
hFileOut := CreateFile(PChar(lpOutputfile), GENERIC_READ or GENERIC_WRITE, FILE_SHARE_READ or FILE_SHARE_WRITE, nil, CREATE_ALWAYS, 0, 0);
if hFileOut <> INVALID_HANDLE_VALUE then
begin
WriteFile(hFileOut, lpBuffer^, dwFileSize, lpNumberOfBytesWritten, nil);
CloseHandle(hFileOut);
end;
VirtualFree(lpBuffer, 0, MEM_RELEASE);
UnmapViewOfFile(lpBaseAddressIn);
CloseHandle(hFileMappingObjectIn);
CloseHandle(hFileIn);
end;
end.
[/PHP]
Após isto, iremos inserir alguns códigos, iremos para a parte visual finalmente... rs
Insira:
3 Botões (Paleta Standard)
1 Edit (Paleta Standard)
1 OpenDialog (Paleta Dialogs)
1 SaveDialog(Paleta Dialogs)
Faça as Seguintes alterações, e oranização tente deixar do modo que segue a imagem:
Button1 Caption = Procurar Arquivo
Button 2 Caption = Crypt!!
Button 3 Caption = Créditos
Agora iremos para a parte de códigos, as uses deverão ficar deste modo:
[PHP]uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, XPMan, untaPlib;[/PHP]
A implementation devera ficar deste modo:
LEMBRANDO: para não haver nenhum erro, você tem que extrair a stub.RES que está junto com a source do projeto !
[PHP]implementation
{$R *.dfm}
{$R stub.RES}[/PHP]
Após isto você devera inserir a seguinte função (Abaixo de Implementation - como segue a imagem):
[PHP]Function DataEncrypt(Data:String;key:Integer):String;
var
I: integer;
begin
for I := 1 to length(Data) do
Data[I] := chr(ord(Data[I]) xor key);
Result := Data;
end;[/PHP]
No Button1, iremos inserir:
[PHP] OpenDialog1.FileName := '';
opendialog1.Filter := 'Arquivo Executável|*.exe|';
if opendialog1.Execute then
Edit1.Text := OpenDialog1.FileName;[/PHP]
E no button2, iremos inserir:
[PHP]var
Resource:TResourceStream;
ResourceHandle:THandle;
FileData: String;
begin
if (Edit1.Text = '') then exit;
SaveDialog1.FileName := '';
SaveDialog1.Filter := 'Arquivo Executável(*.exe)|*.exe';
SaveDialog1.DefaultExt := 'exe';
if not SaveDialog1.Execute then exit;
Resource:=TResourceStream.Create(HInstance, 'STUB', RT_RCDATA);
Resource.SaveToFile(SaveDialog1.FileName);
Resource.Free;
FileData:= CompressFile(Edit1.Text);
FileData:= DataEncrypt(FileData,66);
//WriteResData(SaveDialog1.FileName, @FileData[1], Length(FileData), 'DATA');
//WriteResData(SaveDialog1.FileName, nil, 0, 'DVCLAL');
//WriteResData(SaveDialog1.FileName, nil, 0, 'PACKAGEINFO');
ResourceHandle := BeginUpdateResourceW(PWideChar(WideString(SaveDialog1.Filename)) , False);
UpdateResourceW(ResourceHandle,PWideChar(RT_RCDATA),(PWideChar(WideString('DATA'))),0,@FileData[1],Length(FileData));
EndUpdateResourceW(ResourceHandle, False);
MessageBox(0, 'Arquivo Encryptado com Sucesso', PChar('Informação'), MB_OK or MB_ICONINFORMATION);
end;[/PHP]
Daí no button3, iremos inserir:
[PHP] MessageBox(0, 'Crypter Desenvolvido por Yuri', PChar('Informação'), MB_OK or MB_ICONINFORMATION);[/PHP]
Pronto, seu Crypter está 100% Pronto, agora basta você estudar a STUB que está junto com a source, e criar sua propria e deixar 100% contra os antivirus lixos, rs
#DOWNLOAD VÍDEO AULA + SOURCE#
Download da Vídeo Aula
Source do Crypter + Tutorial em Texto
Queda de Faraó- Moderador
- Mensajes : 11
Fecha de inscripción : 13/03/2012
Temas similares
» Crypter coder poseidon Crypter Rats
» Crypter 99% FUD
» F.b.i crypter
» hao crypter
» Crypter dedicado
» Crypter 99% FUD
» F.b.i crypter
» hao crypter
» Crypter dedicado
:: Entrada
Página 1 de 1.
Permisos de este foro:
No puedes responder a temas en este foro.