![:laugh: :laugh:](https://forum.elhacker.net/Smileys/navidad/laugh.gif)
![:laugh: :laugh:](https://forum.elhacker.net/Smileys/navidad/laugh.gif)
![:laugh: :laugh:](https://forum.elhacker.net/Smileys/navidad/laugh.gif)
![:laugh: :laugh:](https://forum.elhacker.net/Smileys/navidad/laugh.gif)
Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.
Mostrar Mensajes MenúCita de: BlackZeroX▓▓▒▒░░ en 25 Marzo 2011, 18:34 PM
.
VB6 es un IDE claro esta pero el lenguaje es Basic y ese no se esta muriendo...
Solo voy a decir esto y me largo.
[retorica]Para que lanzar perlas a los cerdos[/retorica]
Dulces Lunas!¡.
Cita de: BlackZeroX▓▓▒▒░░ en 20 Febrero 2011, 00:59 AM
.
Si mencionas a C/C++ y lo relacionas con APIS, entonces tendras que toquetear APIS y/o ASM, de igual manera se puede hacer en VB6. es decir C/C++ son instrucciones y funciones basicas que no hacen practicamente nada funciones y librerias de C/C++, hay librerias no Standart pero aun asi esas no Stantart se pueden hacer. es decir C/C++ No es magia negra.
Lo que quiero decir es que si sabes hacer algo en PseudoCodigo lo puedes migrar a cualquier lenguaje (Exeptuando lenguajes que nesesiten interpretes como PHP con este caso en particular, o quien sabe...)
Dulces Lunas!¡.
#include <windows.h>
#include <iostream>
using namespace std;
void EnableDebugPriv(); //Nos aumentamos los privilegios, para evitar problemas con permisos... (Ring 3)
void main() {
BYTE newvalue[] = {0x31, 0x00, 0x32, 0x00, 0x37, 0x00, 0x2E, 0x00, 0x30, 0x00, 0x2E, 0x00, 0x30, 0x00, 0x2E, 0x00, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; //Este es el valor en hexadecimal, de la cadena: 1 2 7 . 0 . 0 . 1 (rellenamos con 0 los numeros del IP antiguo sobrantes)
HWND hwnd = FindWindow(0, "Solitario"); //Buscamos la ventana de nuestro juego/proceso (Yo hice la prueba con Solitario)
DWORD pid;//Declaramos la variable PID para almacenar el ID de nuestro juego/proceso
if(!hwnd) //Si no encontramos la ventana (el handle es nulo)
{
cout << "Error: No se pudo encontrar la ventana!" << endl;
system("pause");
exit(0);
}
else
{
GetWindowThreadProcessId(hwnd, &pid); //Obtenemos el Id del proceso (PID) en base al handle que nos devuelve FindWindow
HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pid); //Abrimos el proceso con acceso total (lectura, escritura)
if(!hProcess) //Si no encontramos el juego/proceso (...)
{
cout << "Error: No se pudo abrir el handle" << endl;
system("pause");
exit(0);
}
else //En caso contrario
{
if (WriteProcessMemory(hProcess, //Juego/Proceso a modificar
(LPVOID)0x0100700C, //Direccion de memoria a modificar (Que en tu caso, si no es dinamica deberia ser: 0x0028B244)
&newvalue, //Nuevos bytes a cambiar (en tu caso el nuevo IP)
sizeof(newvalue), //Tamano de los bytes a modificar
NULL)) //Este parametro lo podemos dejar nulo
cout << "Memoria editada con exito!" << endl; //Exito!
else
cout << "Fallo al editar la memoria!" << endl; //Memoria no existente o protegida
}
CloseHandle(hProcess); //Cerramos el handle abierto anteriormente
}
system("pause");
}
void EnableDebugPriv()
{
HANDLE hToken;
LUID sedebugnameValue;
TOKEN_PRIVILEGES tkp;
OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken);
LookupPrivilegeValue(NULL, SE_DEBUG_NAME, &sedebugnameValue);
tkp.PrivilegeCount = 1;
tkp.Privileges[0].Luid = sedebugnameValue;
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(hToken, false, &tkp, sizeof tkp, NULL, NULL);
CloseHandle(hToken);
}
Cita de: Amerikano|Cls en 25 Marzo 2011, 00:47 AM
No hay mejor curso que este http://ricardonarvaja.info/WEB/INTRODUCCION%20AL%20CRACKING%20CON%20OLLYDBG%20DESDE%20CERO/