Código:
////////////////////////////////////////////////////////////////////////////////////////
#include "windows.h"
#include "resource.h"
#include "winuser.h"
#define JMP(frm, to) (int)(((int)to - (int)frm) - 5);
///////////////////////////////////////Prototipos de funcion/////////////////////////////////////////////////
bool GodMode(bool);
////////////////////////////////////////////////////////////////////////////////////////
DWORD charstat;
HWND myWindow;
///////////////////////////////////////Booleamos/////////////////////////////////////////////////
UINT bGodMode;
////////////////////////////////////////////////////////////////////////////////////////
HMODULE GlobalhMod = NULL;
HWND hWnd;
// Hooked API
// Gracias ferris por el VirtualProtectEx
static const FARPROC Vprotect = (FARPROC)((DWORD)GetProcAddress(GetModuleHandleA("kernel32.dll"), "VirtualProtectEx")+5);
_declspec(naked) BOOL WINAPI FixMem(HANDLE hProcess, LPVOID lpAddress, SIZE_T dwSize, DWORD flNewProtect, PDWORD lpflOldProtect)
{
_asm
{
mov edi,edi
push ebp
mov ebp,esp
jmp Vprotect
}
}
////////////////////////////////////////////ADDRESS///////////////////////////////////////
DWORD GMADDY = 0x00899260; //GodMode
///////////////////////////////////////////////////////////////////////////////////////
HINSTANCE hMod;
DWORD oldp = 0;
PDWORD oldprot = &oldp;
HINSTANCE g_hInstance = NULL;
HWND MSWIN;
HWND gameWindow;
BOOL static CALLBACK DialogProc2 (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam);
/////////////////////////////////////////////////////////////////////////////////////////
BOOL static CALLBACK DialogProc(
HWND hwndDlg, // manejador de caja de dialogo
UINT uMsg, // mensaje
WPARAM wParam, // primer parametro mensajes
LPARAM lParam // segundo parametro mensajes
)
{
DWORD OldSpeed = NULL;
BYTE szInfo[255];
char xx[4];
int iPos;
TCHAR tempStr1[0x10];
switch( uMsg )
{
case WM_DESTROY:
PostQuitMessage(0);
break;
case WM_INITDIALOG:
myWindow = hwndDlg;
return false;
break;
case WM_CLOSE:
//UnloadMe();
return false;
break;
case WM_HSCROLL:
/*
iPos = (int) SendMessage(GetDlgItem(hwndDlg,IDC_SLIDER1), TBM_GETPOS, 0, 0);
iPos = 100 + iPos*9;
iSpeed = iPos;
wsprintf(tempStr1, "%d", iPos);
if (bGuild) {SetDlgItemText(hwndDlg,IDC_EDIT1, tempStr1 );}
*/
break;
case WM_COMMAND:
if(wParam == IDCLOSE){
// UnloadMe();
return false;
}
if(wParam == IDC_GODMODE){
bGodMode = IsDlgButtonChecked( hwndDlg, IDC_GODMODE );
if (bGodMode == BST_CHECKED)
{
GodMode(true);
}
else if (bGodMode == BST_UNCHECKED) {
GodMode(false);
}
return false;
}
if(wParam == IDC_BUTTON1){
CreateDialog(GlobalhMod, MAKEINTRESOURCE(IDD_DIALOG2), hwndDlg, (DLGPROC)DialogProc2);
}
}
return FALSE;
}
BOOL static CALLBACK DialogProc2 (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
char
texto[25];
switch
(uMsg) /* manipulador del mensaje */{
case WM_INITDIALOG:
break;
case WM_COMMAND:
EndDialog(hwndDlg,FALSE);
return TRUE;
}
return FALSE;
}
DWORD static WINAPI ThreadFunc( LPVOID )
{
gameWindow = FindWindow(NULL,"MapleStory");
HRSRC hrsrc = FindResource(GetModuleHandle("GamerzHacking.dll"), MAKEINTRESOURCE(IDD_DIALOG1), RT_DIALOG);
if( !hrsrc )
{
MessageBoxA( NULL, "Error", "Cargando Recurso", NULL );
ExitThread(0);
}
//Aqui cargamos el dialogo que se encuentra dentro de este mismo dll
//Como GamerzHacking.dll se ha injectado al proceso maplestory
//Ahora lo busco y lo cargo como si fuera parte de maple
HGLOBAL hglobal = LoadResource(GetModuleHandle("GamerzHacking.dll"), hrsrc);
if( !hglobal )
{
MessageBoxA( NULL, "Error", "Cargando Recurso", NULL );
ExitThread(0);
}
LPVOID hlock = LockResource( hglobal );
if( !hlock )
{
MessageBoxA( NULL, "Error", "Cargando Recurso", NULL );
ExitThread(0);
}
if( DialogBoxIndirectParam( GetModuleHandle("GamerzHacking.dll"), (LPCDLGTEMPLATE) hglobal, NULL, DialogProc, 0 ) == -1 )
{
MessageBoxA( NULL, "NO PUEDO CREAR DIALOGO VENTANA", "NO PUEDO CREAR DIALOGO VENTANA", NULL );
}
FreeLibraryAndExitThread( GetModuleHandle( "GamerzHacking.dll" ), 0 );
}
bool GodMode(bool status)
{
if (status == true) {
*(BYTE*)GMADDY = 0xEB;
*(BYTE*)(GMADDY+1) = 0x0B;
}
else if (status == false) {//0F8E
*(BYTE*)GMADDY = 0x85;
*(BYTE*)(GMADDY+1) = 0xC0;
}
return true;
}
BOOL APIENTRY DllMain(HMODULE hModule,DWORD ul_reason_for_call,LPVOID lpReserved)
{
if (ul_reason_for_call == DLL_PROCESS_ATTACH)
{
CreateThread(0, 0, (LPTHREAD_START_ROUTINE)&ThreadFunc, 0, 0, 0); // Main thread
}
return true;
}
Me podrian decir en que parte estoy equivocado o que es lo que me falta o brindarme algun tutorial
PD: Gracias por leer mi tema de ayuda
Enjoy