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?
por ejemplo si tu api es CreateProcess haces lo siguiente

program 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.
para obtener la declaracion de la funcion api, estando en delphi apretamos SHIFT + click

tambien se puede encriptar la api, para que no se vea en hex eso se hace con esta funcion:
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;
esta funcion es simetrica, quiere decir q sirve tanto para encriptar la cadena, como para desencriptarla tambien

ahora un ejemplo usando la api encriptada:
program 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.
salu3
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)
hay conseguido removendo una unit e cambiando algunas funciones.. pero continuan estos:

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 
alguna sugestion?
[Enlace externo eliminado para invitados]

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...
leos_79 escribió:[Enlace externo eliminado para invitados]

acabo de usa la misma respuesta para dos post diferentes :P

leete eso , esta muy bueno
lo que hay comprrendido es q debo crear una unit com mis funciones y llamarlas encriptadas?
Responder

Volver a “Delphi”