elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  Leer esta dll datos de variables y mostrarlo.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Leer esta dll datos de variables y mostrarlo.  (Leído 3,346 veces)
Meta


Desconectado Desconectado

Mensajes: 3.501



Ver Perfil WWW
Leer esta dll datos de variables y mostrarlo.
« en: 16 Marzo 2014, 12:18 pm »

Hola:

Tengo una variable creada conVisual C++ 2013 en Win32. Su código es de abajo. Tiene variables que se llama Vida, Balas y Mana.

Código:
#include <stdio.h>
#include <Windows.h>

bool vida = false; // = true;
bool balas = false;
bool mana = false;

bool salir = false;

void Hacks()
{
DWORD entryPoint = (DWORD)GetModuleHandle(NULL);
while (!salir) // while ("NO" (salir == true)) => while (salir == false) --> "mientras no salir" --> "mientras no tengamos que salir"
{
DWORD estructura = *(DWORD*)(entryPoint + 0x544C);

// HACK VIDA = 100
if (vida) // if (vida == true) -> "Si la vida es verdadera"
{
// Nivel 1
*(DWORD*)(entryPoint + 0x5444) = 100;

// Nivel 2
// PUNTERO -> DIRECCION (ADDRESS) -> VIDA
DWORD direccion = *(DWORD*)(entryPoint + 0x5448);
if (direccion != 0)
{
*(DWORD*)(direccion) = 100;
}

// Nivel 3
// PUNTERO (ESTRUCTURA) -> DIRECCION (ADDRESS) + OFFSET -> VIDA
if (estructura != 0)
{
*(DWORD*)(estructura + 0) = 100;
}
}

if (balas)
{
// Nivel 1
*(DWORD*)(entryPoint + 0x5454) = 10;

// Nivel 2
// PUNTERO -> DIRECCION (ADDRESS) -> BALAS
DWORD direccion = *(DWORD*)(entryPoint + 0x5460);
if (direccion != 0)
{
*(DWORD*)(direccion) = 10;
}

// Nivel 3
// PUNTERO (ESTRUCTURA) -> DIRECCION (ADDRESS) + OFFSET -> VIDA
if (estructura != 0)
{
*(DWORD*)(estructura + 4) = 10;
}
}

if (mana)
{
// Nivel 1
*(DWORD*)(entryPoint + 0x545C) = 100;

// Nivel 2
// PUNTERO -> DIRECCION (ADDRESS) -> MANA
DWORD direccion = *(DWORD*)(entryPoint + 0x5450);
if (direccion != 0)
{
*(DWORD*)(direccion) = 100;
}

// Nivel 3
// PUNTERO (ESTRUCTURA) -> DIRECCION (ADDRESS) + OFFSET -> VIDA
if (estructura != 0)
{
*(DWORD*)(estructura + 8) = 100;
}
}

Sleep(200); // 200 milisegundos
// Sleep(1);
}
}

void Teclado()
{
while (!salir)
{
// 'a' => vida = activar/desactivar (true/false)
if (GetAsyncKeyState(VkKeyScan('a')) & 1)
{
vida = !vida; // ! "NO"/"LO CONTRARIO"
/*
vida es true
vida = "NO" true => vida = false
vida = "NO" false => vida = true
*/
}

// 's' => balas = activar/desactivar (true/false)
if (GetAsyncKeyState(VkKeyScan('s')) & 1)
{
balas = !balas;
}

// 'd' => mana = activar/desactivar (true/false)
if (GetAsyncKeyState(VkKeyScan('d')) & 1)
{
mana = !mana;
}

Sleep(300);
}
}

// DllMain <---
// Cierra --> Dllmain
BOOL WINAPI DllMain(HINSTANCE module, DWORD reason, LPVOID reserved)
{
if (reason == DLL_PROCESS_ATTACH)
{
// OK! Estamos dentro!
// Thread
// Hacks();
CreateThread(0, 0, (LPTHREAD_START_ROUTINE)Hacks, 0, 0, 0);
CreateThread(0, 0, (LPTHREAD_START_ROUTINE)Teclado, 0, 0, 0);
}
else if (reason == DLL_PROCESS_DETACH)
{
// Salimos del juego!
salir = true;
}

// Devolver
return true;
}

Usando Visual C# 2013, creando otro proyecto a parte con Windows Form, coloco la dll llamada HackDLL.dll en el directorio del proyecto del C#.

Creao en C# una clase que se llama Super_DLL.cs. Dentro de ella tiene este código que en realidad no es nada.

Código:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

using System.Runtime.InteropServices; // No olvidar. Para Dllimport.

namespace Prueba_DLL
{
    class Super_DLL
    {
        [DllImport("HackDLL.dll")]
       
    }
}

El formulario principal solo he colocado un using.

Código:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

using Prueba_DLL; // No olvidar este using. Para llamar a la clase Super_DLL.cs.

namespace Prueba_DLL
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
    }
}

En Windows Form de C# solo tiene tres label para mostrar dichas variables. Los label para no condundir se llama su nombre interno.

label_vida

label_balas

label_mana

No se si es posible hacerlo con el código mostrado. Lo que hace simplente ejecutar un juego básico hecho con C++ 2013 (no tengo código fuente y puede ser el ejecutable de cualquier juego).

Se crea una dll a parte con otro proyecto del código de arriba.

Luego creo otro proyecto con Windows Form bajo C# como dije antes arriba. Solo tiene que leer las variables del juego cuando está en ejecución. La dll hace el trabajo principal leyendo y C# solo muestra información optenida gracias a la dll.

Espero que se entienda y me ayuden.

Saludo.


En línea

kub0x
Enlightenment Seeker
Moderador
***
Desconectado Desconectado

Mensajes: 1.486


S3C M4NI4C


Ver Perfil
Re: Leer esta dll datos de variables y mostrarlo.
« Respuesta #1 en: 18 Marzo 2014, 08:40 am »

Buenas Meta,

tendrías que exportar las funciones de la DLL nativa para poder utilizarlas desde tu aplicación en .NET. Es decir, si lo que quieres es imprimir la vida en tu aplicación debes de llamar a la función de tu DLL "GetVida()" la cual devolverá un float/int (lo desconozco). Vamos que tienes darle modularidad a tu DLL separando cada funcionalidad en una función, y externalizando dicha función dependiendo de si la necesitas invocar desde fuera.

Aquí te dejo un breve tutorial sobre como crear y exportar las funciones de una DLL nativa (Win32 C++) para que puedan ser invocadas desde otra aplicación.
->http://www.flipcode.com/archives/Creating_And_Using_DLLs.shtml

Saludos


En línea

Viejos siempre viejos,
Ellos tienen el poder,
Y la juventud,
¡En el ataúd! Criaturas Al poder.

Visita mi perfil en ResearchGate

Meta


Desconectado Desconectado

Mensajes: 3.501



Ver Perfil WWW
Re: Leer esta dll datos de variables y mostrarlo.
« Respuesta #2 en: 18 Marzo 2014, 15:58 pm »

Hola:

Estoy con el código de ejemplo y me da errores por todas partes.

Lo he intentado compilar con Visual C++ 2013. Aquí esté el ejemplo.

Descargar

Saludo.

Edito:

Hola de nuevo.

Viendo ejemplo desde aquí.
http://www.codeproject.com/Articles/670373/Csharp-Read-Write-another-Process-Memory

Puedo leer algo, pero me da cosas raras.


Ver pantalla compelta.

Quiero que la variable que es 100 en el juego, aparezca en C# y no aparece. Sino signos que no viene a cuento, al menos de lo que busco.

Saludo.
« Última modificación: 18 Marzo 2014, 18:05 pm por Meta » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
ayuda leer variables con POST/GET/REQUEST
PHP
soru13 2 2,856 Último mensaje 14 Febrero 2012, 09:02 am
por soru13
Leer TXT y mostrarlo
Desarrollo Web
sebah97 2 2,750 Último mensaje 2 Marzo 2013, 05:19 am
por sebah97
Leer variables de un proceso
.NET (C#, VB.NET, ASP)
Meta 1 2,350 Último mensaje 12 Abril 2014, 05:35 am
por Keyen Night
como podria mostrar el id cifrada sin que pierda los datos al mostrarlo
PHP
geshiro 5 3,516 Último mensaje 12 Julio 2016, 03:02 am
por AlbertoBSD
¿Cómo puedo leer el mensaje de un email y mostrarlo en la consola?
.NET (C#, VB.NET, ASP)
Meta 1 4,521 Último mensaje 12 Junio 2019, 06:58 am
por Meta
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines