Ver Mensaje Individual
  #4 (permalink)  
Antiguo 26/04/2015, 18:32
zonesjm
 
Fecha de Ingreso: octubre-2008
Mensajes: 4
Antigüedad: 16 años, 3 meses
Puntos: 0
Respuesta: Problema con programa c++

Ahora no me sale errores pero el DLL generado no me trabaja bien.
Asi es como quedo.

Código:
#include <stdbool.h>
#include <stdint.h>
#include <stdlib.h>
#include <windows.h>

/* -------- Function Prototypes --------- */

int32_t entry_point(int32_t a1);
void function_10001038(void);
void function_100010d0(void);

/* ---------- Global Variables ---------- */

int32_t g1 = -0x7c1374ab; // 0x10001038
bool g2 = false; // gpr0

/* ------------- Functions -------------- */

// Address range: 0x10001000 - 0x10001035
int32_t entry_point(int32_t a1) {
    // bb
    int32_t v1 = 0;
    switch (v1) {
        case 1: {
            // 0x10001009
            g2 = true;
            CreateThread(0, 0, * (LPTHREAD_START_ROUTINE *) &g1, NULL, 0, NULL);
            // branch -> 0x10001034
            break;
        }
        case 0: {
            // 0x1000102d
            ExitProcess(0);
            // branch -> 0x10001034
            break;
        }
    }
    // 0x10001034
    return 1;
}

// Address range: 0x10001038 - 0x100010ca
void function_10001038(void) {
    // bb
    typedef int32_t (*funca)();
	typedef int32_t (*funca2)();
    funca func = (funca)GetProcAddress(GetModuleHandleA("entitiesmp.dll"), "CRangeWeapon_DLLClass"); // 0x1000104e
    funca2 func2 = (funca2) GetProcAddress(GetModuleHandleA("entitiesmp.dll"), "CNpcSkeletonMusketeer2_DLLClass"); // 0x10001065
    unsigned long lpflOldProtect;
    VirtualProtect((int32_t *)*(int32_t *)func, 96, 64, &lpflOldProtect);
    VirtualProtect((int32_t *)*(int32_t *)func2, 96, 64, &lpflOldProtect);
    *(int8_t *)func = *(int8_t *)func2;
    int32_t v1 = 95; // 0x10001095
    // branch -> 0x1000108d
    while (v1 != 0) {
        // 0x1000108d
        func = (int32_t (*)())((int32_t)func + 1);
        func2 = (int32_t (*)())((int32_t)func2 + 1);
        *(int8_t *)func = *(int8_t *)func2;
        v1--;
        // continue -> 0x1000108d
    }
}