Foro de elhacker.net

Programación => ASM => Mensaje iniciado por: JaimeAsm en 13 Febrero 2010, 22:35 pm



Título: Es posible esto?
Publicado por: JaimeAsm en 13 Febrero 2010, 22:35 pm
Hola foreros como estais?

soy nuevo en ese foro,tengo una duda que espero pueda con buestra auda resolver!

es posible poner una nstruccion (ejmp:  un MessageBox) a un executable desde otro executable?

osea desde un exe mapear en memoria el ejecutable a modificar,i una vez en la memoria intrducirle la instruccion a un offset que este libre,


podrian darme algun code de eso??

uso Masm32,trabajo en 32 bits ^^

un cordial saludo


Título: Re: Es posible esto?
Publicado por: Eternal Idol en 14 Febrero 2010, 00:30 am
Como poder se puede. ¿Que es lo que hiciste hasta ahora? Es cuestion de escribir los bytes correctos en el lugar correcto ...


Título: Re: Es posible esto?
Publicado por: JaimeAsm en 14 Febrero 2010, 18:47 pm
Hola Eternal Idol como va?

gracias por responderme,pues lo que hice maximo es escribir en un offset en dodne ya habia unos bytes (una cadena de text que se mostraba en un mensaje que mostraba el exe que quiero modificar) pero no se como puedo escribir una instruccion,,ya imagino que debo escribir los bytes de la instruccion que quiero agregarle al otro exe,y imagino que tendre que escribirlo en un offset que no este ocupado,asta ahora utilizaba las api CreateFile,,CreateFileMapping,MapViewOfFile i despues hacia esto:
Código:
[code=asm]
MOV EDI,EAX    ;EAX = Retorno de MapViewOfFie¡le
ADD EDI,[800h]    ;offset donde quiero escribir
LEA ESI,Instruccion     ;Dieccion de la etiqueta que contiene la instruccion
REP MOVSB
[/code]

peor nada no sale :(



estoi perdido


Título: Re: Es posible esto?
Publicado por: Eternal Idol en 14 Febrero 2010, 19:00 pm
¿Que es lo que queres hacer exactamente? Tene en cuenta que en cuanto escribas en ese ejecutable si era confiado por el sistema (mediante catalogo o firma embebida) ya no lo sera mas.

Si queres agregar una llamada a un MessageBoxA por ejemplo tenes que escribir el codigo para poner los parametros en la pila primero y despues hacer el call. Si la funcion ya esta importada estaticamente por el ejecutable buscala y usa ese puntero.


Título: Re: Es posible esto?
Publicado por: JaimeAsm en 14 Febrero 2010, 19:27 pm
Osea me dices que haga esto:
Código
  1. PUSH 0
  2. PUSH OFFSET Cabecera
  3. PUSH OFFSET Mensaje
  4. PUSH 0
  5. CALL[MessageBoxA]
  6.  


?¿?¿ no?

perdoname es que no entendi my bien.:( si tuvieras algun ejemplillo me aydudarias mazo Hermano!!

un saludo crack!


Título: Re: Es posible esto?
Publicado por: RAID-MAM en 14 Febrero 2010, 19:32 pm
Mira , si te interesa ejecutar codigo en un ejecutable no en un lugar en expesifico lee este codigo para sacar la idea

http://foro.elhacker.net/analisis_y_diseno_de_malware/srcinfeccion_de_archivos_con_tls_asm-t283150.0.html



Título: Re: Es posible esto?
Publicado por: Eternal Idol en 14 Febrero 2010, 19:52 pm
Osea me dices que haga esto:

Si queres agregar una llamada a MessageBoxA vas a tener que escribir algo como eso en el ejecutable. Poner los parametros en la pila (tene en cuenta que los offset's no estaran en ese ejecutable) y llamar a la funcion (sino esta importada podes agregarla al PE o agregar codigo para llamar a GetProcAddress y obtener su direccion en tiempo de ejecucion).


Título: Re: Es posible esto?
Publicado por: JaimeAsm en 15 Febrero 2010, 19:33 pm
aaa...vaya creo que no podre hacer lo que queria,yo queria agregar una fuinstruccion como dejemmplo el MessageBoxA en cualquier ejecutable,no en uno que tenga que crear yo pero ceo que eso ya como k no xd


gracias de antemano expertos!


Título: Re: Es posible esto?
Publicado por: MCKSys Argentina en 15 Febrero 2010, 21:15 pm
Puedes insertar cualquier libreria en un EXE y luego llamar a la función que gustes dentro de la misma. Más aún, si esuna DLL de sistema.

Sólo debes usar LoadLibrary y GetProcAddress.

Saludos!

PD: También hay métodos más rebuscados cuando no dispones de esas APIs...  ;) Como ejemplo, (si tienes instalado MASM) fíjate en la carpeta: X:\masm32\examples\EXAMPLE8\MOB\NOIMPORT.

Ahí encontrarás un método más que interesante para solucionar el problema.


Título: Re: Es posible esto?
Publicado por: Eternal Idol en 15 Febrero 2010, 21:44 pm
MCKSys Argentina: no es lo mismo cargar una libreria en la memoria de un proceso que modificar el ejecutable en disco. Igual tal vez le interese JaimeAsm, no se que quiere hacer exactamente ...


Título: Re: Es posible esto?
Publicado por: JaimeAsm en 15 Febrero 2010, 22:05 pm
Vaya veo que no me explicado bie,lo siento!

intentar explicarm mejor:

aver,imaginen que yo tengo 2 Ejecutables ue e creado y programado con MASM32, en uno teno la istruccon:

invoke MessageBox,0,offse Texto,OFFSET Cabecera,0

eso ara que cuando ejecute el ejecutable pues me muesrte un mensaje no??

pues yo desde otro ejecutable quiero que despues de esa instruccion me ejcute otra instruccion (instruccion que yo añado a este ejcutable desde el otro) por ejemplo otro messagebox o otra cosa entendeis??????


salu2


Título: Re: Es posible esto?
Publicado por: Eternal Idol en 15 Febrero 2010, 22:40 pm
Estas hablando de algo muy concreto pero no le veo ninguna utilidad. ¿Cual es el objetivo? Esa es la pregunta realmente, a veces hay muchas maneras de hacer algo.

¿Tenes que escribir en el ejecutable o lo podes hacer en tiempo de ejecucion como menciono MCKSys Argentina?


Título: Re: Es posible esto?
Publicado por: MCKSys Argentina en 16 Febrero 2010, 00:09 am
Creo que se refiere a parchearlo en tiempo de ejecución...

Al menos, eso es lo que aparenta...  :huh:


Título: Re: Es posible esto?
Publicado por: JaimeAsm en 16 Febrero 2010, 13:43 pm
Si eso mismo! en Runtime,parchearlo en Runtime ^^


salu2


Título: Re: Es posible esto?
Publicado por: Eternal Idol en 16 Febrero 2010, 14:24 pm
"osea desde un exe mapear en memoria el ejecutable a modificar,i una vez en la memoria intrducirle la instruccion a un offset que este libre,"

¿Un proceso o un ejecutable en disco?

En ambos casos tenes que escribir lo que te comente, lo bueno de hacerlo en la memoria del proceso es que no cambia el ejecutable asi que sigue siendo confiable para el S.O. pero el codigo de ejemplo que mostraste NO era eso sino escribir sobre el archivo del ejecutable en disco ("CreateFile,,CreateFileMapping,MapViewOfFile").


Título: Re: Es posible esto?
Publicado por: JaimeAsm en 16 Febrero 2010, 21:37 pm
Hola etenral gracia ppor rsponer

pues si es e slo que quiero a poder ser en el ejecutable i no en el proceso,saves de algun codigo que lo muerte????



salu2


Título: Re: Es posible esto?
Publicado por: MCKSys Argentina en 16 Febrero 2010, 22:17 pm
Pero... Si modificas el ejecutable y está firmado digitalmente, el EXE ya no es confiable (como dijo EthernalIdol)

Lo mejor en esos casos es hacer un loader, el cual cargue el EXE original y luego lo modifique en memoria.

Dependiendo del EXE, incluso, en vez de hacer un Loader, puedes hasta hacer un Loader-Debugger  ;)

Saludos!


Título: Re: Es posible esto?
Publicado por: Eternal Idol en 16 Febrero 2010, 23:12 pm
JaimeAsm: Aca (http://www.google.com) tenes de todo.