bueno esto ya es algo viejito pero capaz alguno le de algun uso.
se trata de cargar las librerias y las funciones , en el runtime.

por ejemplo:

si usamos la funcion VirtualProtectEx() , del kernel32.dll

basta con declararla dependiendo el lenguaje

por ejemplo normalmente hariamos:
function VirtualProtectEx(hProcess: THandle; lpAddress: Pointer;
dwSize, flNewProtect: DWORD; lpflOldProtect: Pointer): BOOL;
external 'kernel32.dll' name 'VirtualProtectEx';

y la usamos normalmente

VirtualProtectEx(blabablab);

y en los imports figurara , la funcion y su dll.





pero si la queremos cargar en el runtime y que no aparesca en la Iat


program loaddll;
uses windows;

type
TProtegeme = function VirtualProtectEx(hProcess: THandle; lpAddress: Pointer;
dwSize, flNewProtect: DWORD; lpflOldProtect: Pointer): BOOL;



var
protegeme : TProtegeme;
kernelhnd: Thandle;


begin

kernelhnd := LoadLibrary('kernel32.dll');
@protegeme := GetProcAddress(kernelhnd,'VirtualProtectEx');

protegeme(y aca la llamamos normalmente);

end.

primero declaramos un TIPO de funcion. despues declaramos una variable de ese tipo.
y un handle que va a ser usado para la libreria que queremos cargar, en este caso el famoso kernel

primero , llamamos a loadlibrary() , que nos devuelve un manejador/handle a el kernel32.dll
luego , con ese handle , le asignamos a nuestra variable de función, la direccion de la función que precisamos.

y listo estamos listo para usar nuestra funcion cargada en runtime.





bueno podemos encriptar tmb los string kernel32 y , virtualprotectex
con algun bonito algoritmo.

nota: el codigo es de explicacion y obvie ciertas comprobaciones para hacer mas limpio y entendible el codigo



espero que les sirva , un abrazo!
No hay éxito como el fracaso, pero el fracaso no es ningun éxito...
Y ya si se quieren cargar APIs sin ni siquiera usar directamente estas dos funciones (hallando la dll en memoria, y buscando en la export table)
[Enlace externo eliminado para invitados] ... 0Solid.rar
[Enlace externo eliminado para invitados] ... 0Solid.rar

Me los pasaron de [Enlace externo eliminado para invitados], gran grupo.
excelente Thor , es la forma de hacerlo , con el PEB , no?
No hay éxito como el fracaso, pero el fracaso no es ningun éxito...
Thor Se agradece

Yo habia encontrado algo similar pero algo mas antiguo

[Enlace externo eliminado para invitados]


Gracias por el aporte


Salu2
Cuanto más aprendo menos sé. Solo sé que no sé nada.

. . . ..... Los virus y troyanos se pueden escribir en el lenguaje apropiado pero el ensamblador es para un coderz como linux para un hacker ..... . . .
. . . ..................... No respondo a privados sobre dudas de temas tratados en el foro no tengo Messenger ni vida social alguna ..................... . . .
muy buenos sus aportes QuoRuS y Thor, yo habia puesto algo basico y ustedes saltaron con esos
aportazos! :D

en especial muy buena la parte de buscar la direccion del GetProcAddress , en la dll , manualmente.
se me habia ocurrido ,pero supuse q iba a estar en algun paper.

saludos!!
No hay éxito como el fracaso, pero el fracaso no es ningun éxito...
Responder

Volver a “Otros lenguajes”