Corriendo una aplicacion desde .Net !!

Iniciado por TrashAmbishion, 27 Febrero 2020, 05:42 AM

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

TrashAmbishion

Hola,

Existe alguna forma de saber cuando un juego cargo completamente sus librerías ?

Saludos

ThunderCls

Puedes saber en un momento determinado que librerias tiene en memoria un proceso, luego necesitas saber si las que tiene en ese momento son todas las que se supone que deba cargar. Lo primero lo puedes hacer enumerando cada modulo en el proceso (OpenProcess/EnumProcessModules). Para lo segundo te podrias hacer hacer un listado de todas las librerias que carga el proceso en su ejecucion como base de comparacion
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/

**Aincrad**


Como te dijo el buen compañero @ThunderCls , lista los modulos , o tambien el numero de modulos que ha cargado el juego y asi lo comparas.

aqui te dejo una funcion simple que hize :

Código (vbnet) [Seleccionar]
Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As UInt32, ByVal bInheritHandle As Int32, ByVal dwProcessId As UInt32) As IntPtr

        Public Shared Function GetProcessModules(ByVal Process_Name As String) As String
            Dim DataS As New StringBuilder
            Dim pc As Process() = Process.GetProcessesByName(Process_Name)

            Dim hndProc As IntPtr = OpenProcess(&H2 Or &H8 Or &H10 Or &H20 Or &H400, 1, CUInt(pc(0).Id))
            If hndProc = IntPtr.Zero Then
                Return "Error"
            End If

            Dim ModulesCount As Integer = pc(0).Modules.Count - 1
            For index As Integer = 0 To ModulesCount
                DataS.Append(pc(0).Modules(index).FileName & vbNewLine)
            Next

            Return DataS.ToString
        End Function


Con esta funcion listas los modulos (librerias) de un proceso, el primer modulo siempre es el proceso como tal se le denomina el MainModule vendria siendo el .exe, los demas son las librerias.

Modo de empleo :

Código (vbnet) [Seleccionar]
TextBox1.Text = GetProcessModules("nombredelProcesoDeljuego")

asi obtienes la lista de librerias que Emplea el juego , podes hacer una comparacion , pero soy el unico que piensa que lo que estas intentando hacer es inutil? digo un proceso carga rapidamente todas sus librerias al iniciar y no tarda mas de 4s .





ThunderCls

No das mucho detalle de lo que intentas hacer, pero como dijo **Aincrad**, debes tener en cuenta que una vez que un proceso carga una libreria y usa la funcion que necesita, la libera de memoria, por lo que es muy poco probable que en el punto que hagas el listado de modulos obtengas absolutamente todas las librerias que el proceso ha usado o usara en el futuro. Repito, no se lo que intentas hacer, pero puedo decir un par de ideas

1- Lanzar tu aplicacion como debugger del juego y depurarlo a tu gusto (WaitForDebugEvent/ContinueDebugEvent)
2- Inyectarte en el proceso justo antes de que se cargue completamente (ejecute su ep) y hacer hook en LoadLibrary

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/