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

 

 


Tema destacado: Entrar al Canal Oficial Telegram de elhacker.net


  Mostrar Temas
Páginas: 1 ... 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 [33] 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 ... 66
321  Programación / Ingeniería Inversa / ¿Cheat Engine o Ollydbg? en: 19 Marzo 2014, 17:40 pm
Hola:

Con Cheat Engine busco las direcciones fijas de color verde para las variables. He hecho con Visual C# 2013 una palicación que lee las variables y me lo muestra en tiempo real como el juego. Si el juego marca 100 de vidas, en C# me lo refleja, si en el momento me marca 99, en C# pone 99. El problema es que al cerrar el proceso y lo vuelvo abrir, cambian las direcciones de las variables.

Me han contado, que existe la posibilidad encontrar variables fijas en los ejecutables de los juegos, aunque sea el notepad, la calculadora de Windows o tu propio exe.
A parte del Cheat Engine, me recomiendan usar ollydbg.

Hago estas preguntas.
1) ¿Realmente es cierto que Cheat Engine es capaz de encontrar direcciones totalmente fijas? (Es decir, que al volver abrir un proceso, encuentre una dirección que jamás varía).

2) Con OllyDBG me confirman que se busca un offset que nunca cambia, este si que lo hace. Lo que es complejo de buscar, pero existe la posibilidad. La pregunta es. ¿Qué usan ustedes para buscar variables fijas, Cheat Engine o ollydbg?

Tendré que ponerme con Ollydbg para lograrlo. Si existe la posiblidad en el Cheat Engine, me alegra saberlo.

Quiero saber sus opiniones.
322  Programación / .NET (C#, VB.NET, ASP) / Leer variables de un proceso en: 17 Marzo 2014, 18:17 pm
Hola:

Si abro una aplicación, con Cheat Engine puede buscar las variables de un juego. Son 3, se llaman Vida, Balas y Maná. Al menos quiero centrarme en la variable Vida, cuya dirección se puede ver abajo en "2. VIDA" ya encontrada.



Usando el lenguaje C# en modo consola, preferiblemente con Windows Form, el más que les guste, quiero lograr leer esas variables de ese proceso y mostrarlo C# en tiempo real, es decir, si el juego tiene 100 Vidas, en tu aplicación C# debe aprecer también 100, si de repente tienes 95 en el juego o proceso, también debe aparecer 95 en tu aplicación.

Hace un tiempo estuve con ello bajo C++ 2013 y que va, me pego media vida y encima creando dll.

Al menos si alguien es capaz de enseñar como se hace realmente. O algún ejemplo si es posible y entendible.

Saludo.
323  Programación / .NET (C#, VB.NET, ASP) / 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.
324  Programación / Programación General / Haciendo menú con Viual C/C++ en: 14 Marzo 2014, 23:17 pm
Hola:

Quiero hacer un menú con Visual C/C++ 2013, la aplicación en en consola a Win32, nada de FrameWork .net y CLR.

Hice uno muy básico, estoy siguiendo tutriales por todas partes, por ahora parece que funciona pero las tildes como la ó al compilar el programa sale caracteres raros.

Por ahora solo he hecho esto sin las funciones.
Código
  1. #include<iostream>
  2. using namespace std;
  3.  
  4. void Imprimir_menu(){
  5. cout << "\n\nOpciones: ";
  6. cout << "\n(1) Ver variables.";
  7. cout << "\n(2) Variable tiempo.";
  8. cout << "\n(3) Sumar o restar variables.";
  9. cout << "\n(4) Opción pendiente 4.";
  10. cout << "\n(5) Opción pendiente 5.";
  11. cout << "\n(6) Salir del programa. \n";
  12. cout << "\nOpción: ";
  13. }
  14.  
  15. void Ver_varibales(){
  16. //Defines lo que debe hacer
  17. }
  18.  
  19. void Variable_tiempo(){
  20. //Defines lo que debe hacer
  21. }
  22.  
  23. void Sumar_o_restar_variables(){
  24. //Defines lo que debe hacer
  25. }
  26.  
  27. void Opcion_pendiente_4(){
  28. //Defines lo que debe hacer
  29. }
  30.  
  31. void Opcion_pendiente_5(){
  32. //Defines lo que debe hacer
  33. }
  34.  
  35. int main(){
  36. bool bContinuar = true;
  37. int opcion = 0;
  38. while (bContinuar){
  39. cout << "\n\nSeleccione una opción del siguiente menu: ";
  40. Imprimir_menu();
  41. cin >> opcion;
  42. switch (opcion){
  43. case 1:
  44. Ver_varibales();
  45. break;
  46. case 2:
  47. Variable_tiempo();
  48. break;
  49. case 3:
  50. Sumar_o_restar_variables();
  51. break;
  52. case 4:
  53. Opcion_pendiente_4();
  54. break;
  55. case 5:
  56. Opcion_pendiente_5();
  57. break;
  58. case 6:
  59. bContinuar = false;
  60. cout << "\nEjecución terminada....";
  61. break;
  62. defualt:
  63. cout << "\nPor favor selecciona una opción del 1 al 6";
  64. break;
  65. }
  66. }
  67. }

A lo mejor el código base lo pueden mejorar si les apetece antes de seguir con las variables. Que es solamente hacer otro submenú que pregutne que haré con dichas variables, solamente si pulsas Q, incremente un punto en una variable, si pulsas W, disminuye un punto.

La variable de entrada vale 10 como int. luego se cambia cuando selecciones aumentar o disminuir como dije antes. Esa es la primera opción. La obsión 2 o el segundo menú, hay un temporizador que cuenta de 100 segundos a 0. Cuando llegue a 0 sale a otro submenú que diga "Se acabó el tiempo."
El tiempo lo puedes detener pulsando P y continuar pulsado L.

Son detalles que todavía con este lenguaje no se hacer. Por eso quiero una ayudita.

Según vea las ayudas, seguiré haciendo por mi cuenta las otras opciones.

Un saludo.

Edito:
Aquí hay algo más o menos que se entiende para hacer menús.
325  Programación / Programación C/C++ / ¿Cómo crear un Windows Form? en: 14 Marzo 2014, 21:08 pm
Hola:

¿Cómo crear un Windows Form en C++ 2013?

Aquí hay un ejemplo para crearlo en CLR que no me interesa.
http://jabatogames.blogspot.com.es/2013/03/activar-windows-froms-en-visual-studio.html

Quiero lograrlo en Win32 con el código exe nativo, nada de FramWork como usa C# en C CLR. ;)

Un saludo.
326  Informática / Electrónica / Probando PIC Simulator IDE en: 14 Marzo 2014, 03:48 am
Hola:

Usando un PIC16F877A a XT de 4 MHz con el PIC simulator IDE.

Pin RA0 como salida para encender un Led.
Pin RB0 como entrada de un pulsador, no interruptor.

Lo que quiero hacer es lo siguiente, no tengo idea de estelenguaje pero quiero verlo como curiosidad de una vista rápida.

Al pulsar el pulsador, el Led se queda encendido durante 1 minuto, luego se apaga. Solo quiero hacer eso. ¿Cómo es el código?

Intenté hacer esta chapuza pero no va.
Código:
AllDigital
TRISA = %00000000
TRISD = %00000001

inicio:
If PORTB.0 = 1 Then  '¿Pulsador en 1? (Sin pulsar).
Goto motor  'Se cumple esta condición al motor.
Else  'En caso contrario.
PORTB.0 = 0  'Motor apagado.
Endif
Goto inicio  'Vuelve a escanear el pulsador.

motor:
PORTD.0 = 1  'Activa el motor.
WaitMs 250  '15 es un segundos.
PORTD.0 = 0  'Se apaga elmotor.
Goto inicio  'Vuelve a escanear o leer el pulsador.
End 
Un cordial saludo.

Edito:

Para hacerlo más complejo. Por el pin
RB0 = Entrada digital, pulsador.
RB1 = Igual.
RB2 = Igual.
RB3 = Detiene el tiempo. Stop.

RD0 = Motor encendido que puede ser de 5, 10 o 20 minutos.
RD1 = Led encendido durante 5 minutos con el motor RD0. Los demás Led apgados.
RD2 = Lo mismo pero a 10 minutos.
RD3 = Lo mimso pero en 20 minutos.

El esquema es parecido a este pero con el PIC16F877A.

Como es un lenguaje que no conozco, me cuesta muchísimo coger el hilo. ;)
327  Programación / Programación General / Sobre Windows Form con Visual C++ Express 2013 si lo incluye en: 13 Marzo 2014, 15:35 pm
Hola:

En el visual C++ 2010 Express incluye el Windows Form de entrada, a partir del 2012 creí que lo han quitado, más de un usurario del foro piensa lo mismo y hablamos del tema de que íbamos a comprobar que realmente lo incluye o lo han quitado. Lo que no recuerdos sus nick del foro.

Se trata de usar Visual C++ Express 2013 y trabajar con el Windows Form de toda la vida, se incluye un button y que al pulsarlo diga "Hola Mundo".

Por ahora no hago bien el trabajo, les pondo el proceso de lo que he hecho para que me guíen los que sepan.

1) Hago click arriba en ARcHIVO->Archivo nuevo. Como nombre lo dejjo como está por defecto. Pulsa Aceptar.

2) Pulsar Siguiente.

3) Pulsa Proyecto vacío, que esté marcado y luego Finalizar.

4) Paso 4 leer en la imagen de abajo.

5) Por fin encontré que el Windows Form si se incluye en el Visual C++ 2013.

6) No queda otra que pulsar Sí, si quiere usarlo.

7) Por fin se ve en el Visual C++ 2013 la ventana perfecta para tarbajar con los componentes button y demás como en C# y VB .net.

8) Aquí mi duda. En el explorador de solucioines puedo agregar un Windows Form donde lo acabo de añadir "Archivos de códigos fuentes" y también se puede añadir en "Archivos de encabezado". Añade un label en el centro del formulario como indica abajo y luego, pulsa F7 que significa Compilar solución.

9) Mirando el código fuente del formulario, da errores como que no encuentran los using. En Visual C++ 2010 no es tan majadero crear un formulario Windows y no da problemas de este tipo. Tampoco deja depurar con F5.

A partir de aquí no se que hacer, a lo mejor no he hecho el procedimiento adecuado para crear formularios como proyecto principal. Al menos se que existe una forma de crear formularios Windows en Visual C++ Express 2013  y menos mal, no quiero siempre trabajar en modo consola.

¿Alguna idea?

Un saludo.
328  Programación / Ingeniería Inversa / Creé un programa y en otro debe leerlo en: 10 Marzo 2014, 19:04 pm
Hola:

Quiero hacer una prueba sencilla para lograr un objetivo. Intentar leer en la memoria RAM unos valores de las variables que no conoces, localizar esa variable, crear tu aplicación aunque sea en C# capaz de leer sus valores. Hay que crear dos proyectos. Uno como hice abajo, lo que hace es con un timer incrementar el valor del componente progressBar y mostrar su valor en label1.

Como muestra en la imagen de abajo, se ha incluido en el Form1, un lable, un button, un timer y progressBar.


Su código fuente es:
Código
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. using System.Windows.Forms;
  10.  
  11. namespace Leer_RAM
  12. {
  13.    public partial class Form1 : Form
  14.    {
  15.        public Form1()
  16.        {
  17.            InitializeComponent();
  18.        }
  19.  
  20.        // Si pulsas el botón, empieza el contador.
  21.        private void button2_Click(object sender, EventArgs e)
  22.        {
  23.            timer1.Start();
  24.        }
  25.  
  26.        private void timer1_Tick(object sender, EventArgs e)
  27.        {
  28.            int Valor = progressBar1.Value; // Guarda el valor actual.
  29.            progressBar1.Increment(1); // Incrementa a 1.
  30.            label1.Text = Valor.ToString(); // Muestra el valor del incremento del ProgressBar.
  31.  
  32.            // Si el valor llega a 100.
  33.            if (Valor == 100)
  34.            {
  35.                progressBar1.Value = 0; // Empieza desde 0.
  36.            }
  37.        }
  38.    }
  39. }
  40.  

Este programa se recomienda ejecutarlo directamente del .exe compilado, no usando Visual Express 2013. Supuestamente no tengo idea del código fuente del .exe de arriba, tener claro que no lo conoces, se los dejo para dar ideas. Ahora hay que crear otro proyecto desde cero, puedes usar C++ que es más rápido a la hora de intercambiar información, para dejarlo más fácil ya que estamos aprendiendo, usaremos C#, y los que quieran VB .net.

Para leer los valores del archivo.exe, hay que verlo desde un descompilador o algún programa que lea en tiempo real el proceso. Aquí hay uno, es muy utilizado para cambiar vidas infinitas a los juegos de PC. Se logra buscar esa variable, se le suma nuevos valores y tiene más vida, en nuestro caso no trataremos este tema, se tratará de localizar dicha variable y ver como cambian sus estados. Luego crear un progrma a parte que lea dichas variables y mostrarla en un label.

Cheat Engine
http://www.cheatengine.org/?referredby=CE63

Puedes usar otro programa y también recomendarlo si parece interesante.

La idea principal es, ser capaz de localizar esas variables, hacer una aplicación que los lea y muestre en un form1 con C# o otro lenguaje que más te guste.

El ejemplo que puse arriba quiero sacar los valores que muestra en label1, que es el mismo del progressBar1.

En un juego de Rally, quiero sacar el cuentakilómetros indicado en pantalla a mi propia aplicación, pero esto es otra historia mucha más adelante. Por ahora me conformo en entender lo más básico.

¿Parace fácil?

Un cordial saludo.
329  Informática / Hardware / Tutorial para desbloquear impresora en: 5 Marzo 2014, 23:22 pm
Hola:

Presento un mini tutorial para resetear los contadores de la impresora especialmente este caso la Brother MFC-440CN.
http://electronica-pic.blogspot.com.es/2014/03/resetear-contador-impresora-brother-mfc.html

PDF.
https://drive.google.com/file/d/0B6HKwsbbpgrLTm1mUF9UVWtnMkE/edit?usp=sharing

XPS.
https://drive.google.com/file/d/0B6HKwsbbpgrLLU5WbVJkaTZTM00/edit?usp=sharing

Cualquier sugerencia para su mejora, será muy bienvennida.

Un saludo y gracias por leer hasta aquí. ;)
330  Informática / Electrónica / Buscar el programa para hacer ejemplos de Arduino en: 17 Febrero 2014, 10:34 am
Hola:

Veo mucho por Internet que hacen ejemplos simples, recomendables, esquemas dibujo y sumulador a la vez. ¿Cuáles son los más usados?

Quiero hacer ejemplos gráficos para mostrarlos a los demás com estas imágenes.

http://fritzing.org/download/

No se si este de abajo es el mismo programa.


Si hay varios, pueden poner el enlace y comentar cual es el más usado o recomendado.

Saludo.
Páginas: 1 ... 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 [33] 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 ... 66
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines