creo que es la seccion correcta para qestionar esto... es possible editar un source para ficar ud!? lo quiero saber como.. tenho 6 deteciones, tal como heur no kaspersky.. qe debo hacer?
necesitas encriptar todas las apis, se hace con GetModuleHandle y GetProcAddress
salu2
salu2
recomendas alguno tutorial para ver como hacer?
También tengo interés, nadie tiene ningún ejemplo?
por ejemplo si tu api es CreateProcess haces lo siguiente
tambien se puede encriptar la api, para que no se vea en hex eso se hace con esta funcion:
ahora un ejemplo usando la api encriptada:
para obtener la declaracion de la funcion api, estando en delphi apretamos SHIFT + clickprogram hello;
uses Windows;
var
StartInfo: TStartupInfo;
ProcInfo: TProcessInformation;
_Kernel32: THandle;
var
//declaramos la funcion
__CreateProcess: function(lpApplicationName: PChar; lpCommandLine: PChar; lpProcessAttributes,
lpThreadAttributes: PSecurityAttributes; bInheritHandles: BOOL; dwCreationFlags: DWORD;
lpEnvironment: Pointer; lpCurrentDirectory: PChar; const lpStartupInfo: TStartupInfo;
var lpProcessInformation: TProcessInformation): BOOL; stdcall;
begin
_Kernel32:= GetModuleHandle(Kernel32);
__CreateProcess:= GetProcAddress(_Kernel32, 'CreateProcessA'); // obtenemos la direccion de la api a nuetra funccion
//probando nuestra api
__CreateProcess(nil, 'notepad.exe', nil, nil, False, 0, nil, nil, StartInfo, ProcInfo);
end.
tambien se puede encriptar la api, para que no se vea en hex eso se hace con esta funcion:
esta funcion es simetrica, quiere decir q sirve tanto para encriptar la cadena, como para desencriptarla tambienfunction EncodeString(S: string): string;
var
iLoop: Integer;
begin;
for iLoop := 1 to Length(S) do
begin
S[iLoop] := Chr(Ord(S[iLoop]) xor 26);
end;
Result := S;
end;
ahora un ejemplo usando la api encriptada:
salu3program hello;
uses Windows;
var
StartInfo: TStartupInfo;
ProcInfo: TProcessInformation;
_Kernel32: THandle;
function EncodeString(S: string): string;
var
iLoop: Integer;
begin;
for iLoop := 1 to Length(S) do
begin
S[iLoop] := Chr(Ord(S[iLoop]) xor 26);
end;
Result := S;
end;
var
//declaramos la funcion
__CreateProcess: function(lpApplicationName: PChar; lpCommandLine: PChar; lpProcessAttributes,
lpThreadAttributes: PSecurityAttributes; bInheritHandles: BOOL; dwCreationFlags: DWORD;
lpEnvironment: Pointer; lpCurrentDirectory: PChar; const lpStartupInfo: TStartupInfo;
var lpProcessInformation: TProcessInformation): BOOL; stdcall;
begin
_Kernel32 := GetModuleHandle(Kernel32);
__CreateProcess := GetProcAddress(_Kernel32, PChar(EncodeString('Yh{nJhuyii['))); // Yh{nJhuyii[ es nuestra api encriptada
//la debemos desencriptar antes de cargarla (EncodeString)
//probando nuestra api
__CreateProcess(nil, 'notepad.exe', nil, nil, False, 0, nil, nil, StartInfo, ProcInfo);
end.
Ese es un muy buen método para la heurística... para las firmas a veces basta con cambiar la versión de Delphi con la que se compila.
"La computadora nació para resolver problemas que antes no existían" (Bill Gates)
hmn.. lo voy empezar :P gracias OneDeath
no estoy conseguindo hacer... no hay otro metodo?
hay conseguido removendo una unit e cambiando algunas funciones.. pero continuan estos:
alguna sugestion?
Código: Seleccionar todo
Avira AntiVir 7.1.4.50 8.1.2.12 TR/Spy.Gen
VBA32 03/06/2009 3.12.0.300 Backdoor.XiaoBird.52
[Enlace externo eliminado para invitados]
acabo de usa la misma respuesta para dos post diferentes :P
leete eso , esta muy bueno
acabo de usa la misma respuesta para dos post diferentes :P
leete eso , esta muy bueno
No hay éxito como el fracaso, pero el fracaso no es ningun éxito...
lo que hay comprrendido es q debo crear una unit com mis funciones y llamarlas encriptadas?leos_79 escribió:[Enlace externo eliminado para invitados]
acabo de usa la misma respuesta para dos post diferentes :P
leete eso , esta muy bueno