Crasheando un Proceso.

Iniciado por APOKLIPTICO, 8 Diciembre 2009, 00:42 AM

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

Karcrack

Cita de: MCKSys Argentina en  9 Diciembre 2009, 21:17 PM
Si usa alguna API que conozcas, puedes parchearla para que genere una excepcion.

Asi, si no la controla, queda frito...

Saludos!


Creo que es mas facil inyectar code como dije..

APOKLIPTICO

#11
Okay, gente no quiero ser rudo, pero estuve toooooda la tarde estudiando una materia que no me gusta nada de nada y estoy bastante cranky asi q work with me guys:
Necesito saber como se puede hacer en vb (si se puede) una de estas dos cosas:
1) Inyectar el código que propuso Karcrack.
2) Conseguir la Address donde se guarda la EIP del programa para poder sobreescribirla.

Ahora, necesito saber como se hace, paso a paso, mis conocimientos de manejo de memoria y registros son bastante escasos, no sabia lo que era la PEB hasta q no lo googlee, no les pido q me hagan el código de eso me ocupo yo, simplemente necesito saber como tengo q leer/escribir el código en la memoria usando las API WriteProcessMemory y ReadProcessMemory y que addresses tengo q usar.
Plis no le den muchas vueltas al asunto, simplemente vayan directo al grano.
Muchas gracias x su ayuda y sorry si estoy siendo un gigant pain in the ass.
Un abrazo
APOKLIPTICO

PS: Despues de un rato de googlear, encontre la manera de sacar la BaseAddress con una API, ahora el tema es q me está fallando la funcion WriteProcessMemory (me devuelve 0) cada vez q intento escribir en la BaseAddress Que está pasando? q estoy haciendo mal? Incluso probé sumarle H01000000 a la direccion. Bueno, no se me fui a dormir, esto es muy frustrante...
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.

MCKSys Argentina

Hola!

Lo que pasa es que en la dirección de la ImageBase está el PE Header del ejecutable. NORMALMENTE esta parte de la memoria no tiene permisos de escritura. Pero se los puedes dar con VirtualProtect  :)

Saludos!
MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."


Karcrack

Código (vb) [Seleccionar]
'KERNEL32
Private Declare Function CreateRemoteThread Lib "KERNEL32" (ByVal hProcess As Long, ByRef lpThreadAttributes As Any, ByVal dwStackSize As Long, ByRef lpStartAddress As Long, ByRef lpParameter As Any, ByVal dwCreationFlags As Long, ByRef lpThreadId As Long) As Long
Private Declare Function OpenProcess Lib "KERNEL32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long

Public Function CrashProc(ByVal lPID As Long) As Boolean
    CrashProc = CreateRemoteThread(OpenProcess(&H1F0FFF, ByVal 0&, lPID), ByVal 0&, 0, ByVal &HCACACACA, ByVal 0&, 0, ByVal 0&)
End Function

:silbar:

MCKSys Argentina

Je,je,je,je... Muy Bueno!!!  ;-)

PD: BADC0DE es otra dirección bonita para empezar el thread...  :)

Saludos!
MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."


BlackZeroX

#15
Cita de: Karcrack en 10 Diciembre 2009, 22:27 PM
Código (vb) [Seleccionar]


yVal 0&, lPID), ByVal 0&, 0, ByVal &HCACACACA, ByVal 0&, 0, ByVal 0&)


:silbar:

Como no lo va a Crashear le anda dando con doble CACA

Perdon no me aguante xP

Dulces Lunas!¡.
The Dark Shadow is my passion.

APOKLIPTICO

#16
Cita de: Karcrack en 10 Diciembre 2009, 22:27 PM
Código (vb) [Seleccionar]
'KERNEL32
Private Declare Function CreateRemoteThread Lib "KERNEL32" (ByVal hProcess As Long, ByRef lpThreadAttributes As Any, ByVal dwStackSize As Long, ByRef lpStartAddress As Long, ByRef lpParameter As Any, ByVal dwCreationFlags As Long, ByRef lpThreadId As Long) As Long
Private Declare Function OpenProcess Lib "KERNEL32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long

Public Function CrashProc(ByVal lPID As Long) As Boolean
   CrashProc = CreateRemoteThread(OpenProcess(&H1F0FFF, ByVal 0&, lPID), ByVal 0&, 0, ByVal &HCACACACA, ByVal 0&, 0, ByVal 0&)
End Function

:silbar:

YES! Esto es lo q necesitaba, en cuanto pueda lo pruebo.
Ahora estoy muy ocupado jugando CoD4 MW y viendo the big bang theory XD
GRACIAS!!!
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.

Karcrack

Otra direccion para crashear bonita tambien es 0xDEADBEEF :xD

APOKLIPTICO

Gente, muchas gracias, funciona de maravillas.
Aki esta la funcion completa:

Código (vb) [Seleccionar]
Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal Hwnd As Long, lpdwProcessId As Long) As Long
Private Declare Function OpenProcess Lib "KERNEL32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Private Declare Function CloseHandle Lib "KERNEL32" (ByVal hObject As Long) As Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal Classname As String, ByVal WindowName As String) As Long
Private Declare Function CreateRemoteThread Lib "KERNEL32" (ByVal hProcess As Long, ByRef lpThreadAttributes As Any, ByVal dwStackSize As Long, ByRef lpStartAddress As Long, ByRef lpParameter As Any, ByVal dwCreationFlags As Long, ByRef lpThreadId As Long) As Long
Private Const PROCESS_ALL_ACCESS = &H1F0FFF

Function CrashProg(ByVal Address As Long, ByVal WindowName As String)
Dim Handle As Long
Dim PID As Long
Dim Hwnd As Long
Dim ret
Hwnd = FindWindow(vbNullString, WindowName)
GetWindowThreadProcessId Hwnd, PID
Handle = OpenProcess(PROCESS_ALL_ACCESS, False, PID)
ret = CreateRemoteThread(Handle, ByVal 0&, 0, Address, ByVal 0&, 0, ByVal 0&)
Call CloseHandle(Handle)
End Function


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.

APOKLIPTICO

Perdón x revivir el post (son solo 7 dias), esta funcionando bien, el problema es que algunos procesos no se les puede inyectar memoria aleatoriamente, x ejemplo, el zonealarm, para crashearlo, me tira un acceso denegado...
Otros procesos falla la inyección de memoria...
Hay alguna manera de que ande?
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.