Foro de elhacker.net

Seguridad Informática => Análisis y Diseño de Malware => Mensaje iniciado por: AlxSpy en 1 Agosto 2011, 17:38 pm



Título: ¿alguna forma de modificar el resultado de una ejecucion?
Publicado por: AlxSpy en 1 Agosto 2011, 17:38 pm
hola no se bien como llamar esto asi que puse ese titulo que es lo unico que se me ocurrio, para aclarar mas lo que quiero hacer expongo un caso:

tengo un codigo en vb6 que al ingresar un numero, este lo evalua si es menor a 500 muestra el mensaje "Fallido", sino muestra "Exito".

Código
  1. Private Sub Command1_Click()
  2.    Dim Numero As Long
  3.    Numero = Val(Text1.Text)
  4.    If Numero < 500 Then
  5.        MsgBox "Fallido", vbCritical, ""
  6.        Exit Sub
  7.    End If
  8.    MsgBox "Exito", vbInformation, ""
  9. End Sub

quisiera detectar la ejecucion de esa rutina y de alguna manera interrumpirla y obtener la direccion donde se estaba realizando esa ejecucion para redireccionar la ejecucion y se salte ese If y el resultado sea siempre exito, en codigo seria asi:

Código
  1. Private Sub Command1_Click()
  2.    Dim Numero As Long
  3.    Numero = Val(Text1.Text)
  4.    MsgBox "Exito", vbInformation, ""
  5. End Sub

weno este es solo un ejemplo para que quede claro lo que quiero hacer, porque en realidad quisiera aplicar esto para haer malwares que por ejemplo detengan una ejecucion y despues de un rato continue, o cambiar la ejecucion del explorer.exe para evitar que el usuario cree una carpeta o copie un archivo, y asi muchas cosas se me ocurren.
¿tendran algun enlace sobre el tema? o ¿que apis debo buscar?, lo que sea se los agradecere.


Título: Re: ¿alguna forma de modificar el resultado de una ejecucion?
Publicado por: ThunderCls en 1 Agosto 2011, 21:07 pm
Si no entendi mal, para lo que deseas hacer debes leerte algo de "Hooking" y "DLL Inyection"  ;-)
Saludos


Título: Re: ¿alguna forma de modificar el resultado de una ejecucion?
Publicado por: Karcrack en 3 Agosto 2011, 08:59 am
Como dice [ Thunder | CLS ] esta técnica se conoce como Hooking, consiste en modificar el flujo de ejecución de un programa inyectando tus rutinas de código :) Hay mucha información en internet, empapate y cualquier duda ya sabes ;)


Título: Re: ¿alguna forma de modificar el resultado de una ejecucion?
Publicado por: AlxSpy en 5 Agosto 2011, 19:21 pm
holas busque y lei info interesante , ahora se que esto se llama "hilo de ejecucion", encontre unas apis:
suspendthread con esto puedo pausar el hilo.
resumethread con este continuaria ejecutando el hilo.
pero dos problemilla, ¿como obtengo la direccion de memoria donde se esta ejecutando el hilo en el momento en que hago una pausa?, ¿como haria que el hilo continue en otra parte de la memoria?, ¿que apis serian para estos 2 asuntos que me faltan?


Título: Re: ¿alguna forma de modificar el resultado de una ejecucion?
Publicado por: Karman en 8 Agosto 2011, 07:54 am
no es necesario inyectar ni nada por el estilo, simplemente tienes que encontrar la dirección de la comparación y "nopearla"  o modificarla como te sea conveniente mediante writeprocessmemory...

S2

PD: la inyección de código se utiliza más cuando se quieren agregar comportamientos más que modificarlos.


Título: Re: ¿alguna forma de modificar el resultado de una ejecucion?
Publicado por: AlxSpy en 9 Agosto 2011, 03:16 am
claro, en los temas que encontre eso del hooking era para interceptar llamadas a api , pero ese no es mi objetivo, sino solo cambiar el resultado del hilo de ejecucion para que se salte esa comparacion que puse, ya encontre como detener el hilo y hacerlo continuar, ahora lo que me falta es encontrar una api que me de la direccion donde se estaba ejecutando el hilo para sobreescribirlo y otra api para hacer que el hilo continue en otra parte.


Título: Re: ¿alguna forma de modificar el resultado de una ejecucion?
Publicado por: Иōҳ en 9 Agosto 2011, 04:31 am
Y porque no NOPeas la parte que quieres saltarte, porque al querer saltartela, no te es de importancia, claro si no tiene CRC, nopeala je.

Nox.