|
Mostrar Mensajes
|
Páginas: [1] 2
|
2
|
Programación / Programación C/C++ / Llamar un DialogBox a otro Dialog WINAPI32
|
en: 4 Octubre 2013, 21:14 pm
|
No entiendo muy bien el llamado de un dialog a otro dialog, nose si alguno podria darme algun tutorial o una idea de como podria ser, ya que la verdad tengo nula la cabeza y soy aprendiz programando todavia.. //////////////////////////////////////////////////////////////////////////////////////// #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
|
|
|
4
|
Programación / Ingeniería Inversa / Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
|
en: 14 Febrero 2013, 18:39 pm
|
Ahora entiendo un poco mas esa funcion ^^! lo que pasa que yo años atras jugaba MapleStory un juego muy peculiar y divertido en aquellos tiempos diseñado en 2D, al buscar addys en la memoria pues comenze encontrando un Unlimited Attk, consistes en saltar el limite de ataques que te da el juego que era "99" hits. Ejemplo: http://foro.elhacker.net/ingenieria_inversa/tutorial_hallar_pointers_offset_con_ce_mhs5-t342767.0.htmlOjo que aqui realizo usando otra herramienta para hacerlo mas facil y comprensivo. Volviendo a mi pregunta, en el script ejemplo que muestras señala "FTLGame.exe"+B133F: pero si yo lo cambio por el addy se me ocurre 00123456: ¿vendria hacer lo mismo? ¿el debugger lo leeria normal? ¿Ahora hay scripts que incluyen pointers y multipointers? podrias explicarme un poco mas sobre ello porfavor. Ejemplo del script del unlimited attk que incluye pointers. [enable] alloc(UnlimitedAttk, 512) label(dontReset) UnlimitedAttk: push ecx mov ecx,[997EDC] //Direccion del Unlimited Attk cmp [ecx+2250], 61 // Unlimited Attk Offset | 99 Ataques jle dontReset dec [ecx+E50] //Item X | Viene hacer un puntero que resetea el conteo de los ataques moviendose para cualquier lado dontReset: pop ecx cmp eax,edi mov [ebp-20],eax ret 005B9343: // AOB del Addy 3B C7 89 45 E0 74 5F FF B3 B0 03 00 00 8D 83 A8 call UnlimitedAttk [disable] 005B9343: cmp eax,edi mov [ebp-20],eax dealloc(UnlimitedAttk, 512)
|
|
|
5
|
Programación / Ingeniería Inversa / Re: [Tutorial] Usar Cheat Engine para modificar juegos + inyección de código
|
en: 14 Febrero 2013, 03:50 am
|
Te felicito y agradezco por tomarte el tiempo por enseñar partes de un debugger como es el CE, tengo muy claro todo lo unico que aun no aprendia era la parte de crear scripts en AA, ahora que lo se me gustaria saber ya que hablastes del alloc y label, podrias decirme en que casos o para que sirve el registersymbol y un ejemplo para que asi los demas tambien puedan entenderlo.
Gracias.
|
|
|
6
|
Programación / Ingeniería Inversa / Re: [Duda] Para aclarar algunas cosas
|
en: 8 Enero 2012, 02:55 am
|
@Y2Quake
Bueno, aver creo que quieres decir es que si usando el OllYDbg sin agregarle ningun tipo de pluggin o configuracion se puede crackear software o necesitar algun programa tercero para poder completar el cracking en el programa.
Si es esa la pregunta, mayormente usan OllyDbg para debuggear software, otros usan el IDA eso ya esta depende de cada uno eso pienso yo, al menos yo uso el OllyDbg para debuggear clientes de juegos online, aunque aun soy newbie xD!
Perdon si me equivoco pero fue eso lo que crei o lei entender =).
|
|
|
7
|
Programación / Ingeniería Inversa / [Tutorial] Hallar Pointers & Offset con CE & MHS5
|
en: 24 Octubre 2011, 20:53 pm
|
¿Que es un Pointer y un Offset?
Bueno un pointer y un offset son una direccion estatica y el offset (lo que significa es que no se mueven, a diferencia de la direccion que esta apuntando tambien) apunta a una direccion especifica que muestra informacion sobre el juego.¿Por que tengo que saber como encontrarlos?Los pointers y offsets son de vital importancia porque cuando se quieren hacer algunos trainers. Tu lo puedes utilizar para actualizar scripts como el Unlimited Attk o SS Mouse Fly entre otros. Tambien la puedes usar para armar tus propios cheats/scripts, en realidad las posibilidades son infinitas. Ahora si quieres aprender a hackear acontinuacion, tu debes saber como hacer esto.Vamos a comenzar con el tutorial - Buscando la Direccion
Primero que nada debes tener abierto el CheatEngine y el MapleStory pero aun no presiones Play, en ese momento debes marcar el proceso de MapleStory haciendo click en el icono superior donde aparece una computadora con una lupa le dan click y buscan el proceso de MapleStory.(Puedes descargar el CheatEngine desde AQUI)
Asi que deben tener algo asi: Listos vamos a buscar el pointer y offset del Unlimited Attk,¿Que es esto? No muestra la cantidad de ataques que ha hecho el personaje. Ahora para encontrarlo tenemos que realizar un ataque es decir vamos analizar la cantidad de ataques.
Consejo: Cuando vas a comenzar a realizar el primer ataque recomiendo que no muevas ni a la izquierda ni a la derecha a tu personaje ya que eso ocasionaria el reset del conteo de ataques.
Bueno entonces para empezar lo que tienes que hacer es realizar dos veces el ataque. Ahora el primer ataque es para habilitar el contador y el segundo ataque ya empiezara a contar. Sigamos ya una vez realizado dos veces el ataque vamos al CheatEngine y en el casillero en blanco tipeamos "1" luego presionamos "First Scan" para realizar el primer filtro que haremos en la memoria de maplestory.
La cual deberia quedarte asi: Ahora una vez realizado tu primer scanner te mostrara al lado derecho direcciones encontradas con el valor "1". Asi que seguiremos intetando en la busqueda hasta encontrar solo una direccion.
En el siguiente paso vamos a realizar una vez mas un ataque, una vez realizado esto vamos al cheatengine y tipeamos el valor "2" y luego pulsamos "Next Scan"(Esto lo que hara es seguir filtrandose en la memoria de maplestory para asi reducir la cantidad de direcciones encontradas para que asi ls busqueda sea mas rapida).
Deberia quedar asi: Ahora como veras tu resultado es de direcciones :XD" intentemos una vez mas.
Para terminar nuestra busqueda realizaremos un ataque mas, luego en el cheatengine tipeamos el valor "3" y luego "Next Scan" debe quedar solo un address ahora si no le da ningun resultado, no pierdas las esperanzas y vuelve a intentarlo con 4 ataques ahora la cual estoy seguro que les dara el address que estamos buscando.
Asi quedara observen. Ahora como veras en la imagen anterior llegamos ha encontrar la direccion despues de algunos filtros a la memoria de maplestory la cual nos muestra el conteo que vamos realizando hasta ahora, ustedes mismos pueden observarlo hagan otro ataque y veran como aumenta el conteo. Bueno yo se que tu piensas que esto termino aqui ¿Cierto?, pues dejame decirte querido amigo de PcHack esto aun no termina, ¿Sabes porque? la direccion que hemos encontrado es dinamica osea cada vez que entremos a MapleStory la direccion cambiara y tendriamos que buscarla nuevamente pero llo que nosotros buscamos es el pointer y offset estatico que apunta a esta direccion actual, la cual esto llevara a la siguiente parte del tutorial.SEGUNDA PARTE - BUSCANDO POINTERS Y OFFSETS USANDO MHS5Bueno en esta segunda parte del tutorial se va a poner algo complicado asi que pido que presten atencion ya que tenemos que encontrar el pointer y offset estatico la cual apuntan a la direccion que hemos encontrado.
Ahora el metodo que les enseñare es el mas rapido para encontrar lo que estamos buscando es la unica forma la cual he probado.
Lo primero que debes hacer es descargar el MHS5.
Ahora ustedes se preguntaran ¿Que es esto?, bueno amigo dejame comentarte que esto es un software similar al CheatEngine, ahora ustedes pensaran porque usaremos el MHS5 o Acaso el CheatEngine no sirve para buscar pointers y offsets.
Ahora te explico mira a mi persona el MHS5 tienes un scanner de pointers que es mucho mejor que el CheatEngine.
Oh ya veo entonces sigue enseñandonos :<<"
Bueno entonces sigamos una vez descargado el MHS5.exe File > Open Process > MapleStory Luego de haber marcado el proceso vamos a la siguiente pestañaSearch > Pointer Search Tendra el siguiente aspecto:
Como veras el cuadro de busqueda se ve algo complejo ¿verdad?, pero no te preocupes por la mayor parte de ajustes en lo unico que debes asegurarte es en:-Evaluation Type -Range -Find Only Static Pointers (Marcado) Ahora el siguiente paso es copiar el address que encontramos en el CheatEngine y pegarlo en el cuadro del MHS5-Target from -To Ahora lo siguiente que tienes que hacer es eliminar los 4 ultimos numeros de la direccion que pusistes en 'Target From' y cambiarlos por "0".
Tendria que quedar asi: Luego das click en Aceptar
Bueno ahora terminada la busqueda te debe de dar de resultado un address, ahora si no te da ningun address lo que haras es reemplazar por otro "0" e intentarlo de nuevo. Otro caso seria que si te da mas de 100 address lo que tendrias que hacer es ya no reemplazarlo por 4 ceros sino solamente reemplazarlo por 3 ceros.
La cual deberia quedarte asi: Y listo al fin conseguimos que el es el pointer y el es el offset
Ahora solo agrega el pointer y el offset a la direccion que encontrastes en el CheatEngine. Nota:
Ya conseguistes aprender ahora esto te debe servir para buscar otro tipo de pointers como el del Channel,Char X & Char Y,etc. Bueno ahora suerte para tus proximas busquedas! Si esta algo mal, podrian decirmelo para corregirlo no es mucho mi aporte pero espero les sirva a algunos.
|
|
|
|
|
|
|