26/04/2015, 18:32
|
| | 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
}
}
|