¿alguna forma de modificar el resultado de una ejecucion?

Iniciado por AlxSpy, 1 Agosto 2011, 17:38 PM

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

AlxSpy

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 (vb) [Seleccionar]
Private Sub Command1_Click()
   Dim Numero As Long
   Numero = Val(Text1.Text)
   If Numero < 500 Then
       MsgBox "Fallido", vbCritical, ""
       Exit Sub
   End If
   MsgBox "Exito", vbInformation, ""
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 (vb) [Seleccionar]
Private Sub Command1_Click()
   Dim Numero As Long
   Numero = Val(Text1.Text)
   MsgBox "Exito", vbInformation, ""
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.

ThunderCls

Si no entendi mal, para lo que deseas hacer debes leerte algo de "Hooking" y "DLL Inyection"  ;-)
Saludos
-[ "...I can only show you the door. You're the one that has to walk through it." – Morpheus (The Matrix) ]-
http://reversec0de.wordpress.com
https://github.com/ThunderCls/

Karcrack

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 ;)

AlxSpy

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?

Karman

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.

AlxSpy

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.

Иōҳ

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.
Eres adicto a la Ing. Inversa? -> www.noxsoft.net