Pasar de Static Linking a Dynamic Linking.

Iniciado por APOKLIPTICO, 28 Julio 2012, 20:31 PM

0 Miembros y 1 Visitante están viendo este tema.

APOKLIPTICO

Hola! Como va, estoy desarrollando un programa y me gustaría saber si es posible hacer que todas las llamadas estáticas a APIs se conviertan en dinámicas, es decir, poder cargarlas en tiempo de ejecución. La razón es que quiero obfuscar las apis para que no aparezcan adentro del ejecutable si uno lo abriese con un editor hexadecimal. Hay alguna manera de hacer esto que no sea manualmente hacer todas las llamadas en el código??

Un abrazo
APOKLIPTICO.
AMD Phenom II 1075T X6 @ 290 Mhz x 11 (HT 2036 Mhz NB Link 2616 Mhz) 1.23 Vcore
ASUS M4A89GTD-PRO/USB3
2x2gb G-Skill RipjawsX DDR3 1600 Mhz CL7 (7-8-7-24-25-1T)
Seagate 500 Gb
XFX HD4850 512Mb GDDR3. 650 Mhz/995 Mhz 1.1 Tflops.

[L]ord [R]NA

Si es posible... hay varios metodos de obtener la direccion base del Kernel, luego de esto obtener GetProcAddress y LoadLibrary; despues de eso simplemente es obtener las APIs que necesitas.

APOKLIPTICO

Sisi, obvio, pero mi pregunta es si hay alguna manera de automáticamente modificar en el código los linkeos estáticos por dinámicos, de esta manera se pueden obfuscar las llamadas para que no se puedan leer fácilmente si uno abre el ejecutable con un visor hexadecimal.
AMD Phenom II 1075T X6 @ 290 Mhz x 11 (HT 2036 Mhz NB Link 2616 Mhz) 1.23 Vcore
ASUS M4A89GTD-PRO/USB3
2x2gb G-Skill RipjawsX DDR3 1600 Mhz CL7 (7-8-7-24-25-1T)
Seagate 500 Gb
XFX HD4850 512Mb GDDR3. 650 Mhz/995 Mhz 1.1 Tflops.

Eternal Idol

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón

APOKLIPTICO

Mi idea es que no sea tan fácilmente visible. Aparte no me gusta mucho trabajar con UPX porque hace saltar falsos positivos en algunos AV. Lo que quiero es obfuscarlos en tiempo de diseño y desobfuscarlos cuando arranque el programa sólo para cargar las funciones necesarias.
AMD Phenom II 1075T X6 @ 290 Mhz x 11 (HT 2036 Mhz NB Link 2616 Mhz) 1.23 Vcore
ASUS M4A89GTD-PRO/USB3
2x2gb G-Skill RipjawsX DDR3 1600 Mhz CL7 (7-8-7-24-25-1T)
Seagate 500 Gb
XFX HD4850 512Mb GDDR3. 650 Mhz/995 Mhz 1.1 Tflops.

david_BS

#5
Hola APOKLIPTICO, no se si usás Visual Studio, pero te muestro una imagen del Visual C++ 6.0 que lo tengo para algunas cosas, en verdad uso el 2010 por supuesto. pero te muestro algo, más la explicación de la msdn



http://msdn.microsoft.com/en-us/library/abx4dbyh(v=vs.80).aspx
http://msdn.microsoft.com/en-us/library/aa278396(v=vs.60).aspx

en mi caso usé ese modo obviamente para el tamaño del ejecutable en cuestión, pero vos sabrás usar ese modo para tu conveniencia..
espero haberte ayudado

Foxy Rider

Pero .... es al pedo, estás cambiando de donde hay que fijarse que APIs usás.
No lo estás ni ocultando ni ofuscando.

Saludos.


Eternal Idol

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón