Hasta hace poco tenía una funcion en C++ que manejaba unos stacks en asm, y luego llamaba a una función (la cual no se como ha sido sacada).
Les muestro el codigo para que entiendan
Código: Seleccionar todo
DWORD pfCreateFragmentsFromFile;
void CreateFragmentsFromFile(INetChannel *channel, const char* file, int unk, unsigned int unk2)
{
_asm {
pushad;
push unk2;
push unk;
push file;
mov ecx, channel;
call pfCreateFragmentsFromFile;
popad;
}
}
Código: Seleccionar todo
HMODULE hEngine = GetModuleHandle( "engine.dll" );
pfCreateFragmentsFromFile = dwFindPattern((DWORD)hEngine, (DWORD)hEngine+0x250000, (BYTE*)"\x55\x57\x8B\x7C\x24\x0C\x57\x8B\xE9\xE8", "xxxxxxxxxx" );
Aqui es como se llama la funcion CreateFragmentsFromFile (definida arriba)
Código: Seleccionar todo
*const char file = "file.txt"
INetChannel *channel = (INetChannel *)enginecl->GetNetChannelInfo();
CreateFragmentsFromFile(channel, file, 0, 1);
** Problema en todo esto **
Como veran en dwFindPattern se busca esos bytes en engine.dll , el problema es que el programa ha cambiado de version de engine.dll y ahora me encuentro trabado para encontrar los nuevos Bytes de la funcion "createfragmentsfromfile".
Se que el autor original del código ha usado OllyDBG para conseguir esos bytes, pero todo intento mio ha fallado (no soy bueno con el debbuging)
Tal vez alguien me podría dar una mano.
Les dejo 2 archivos, La versión vieja donde anda y la versión nueva donde los bytes se han movido en la memoria y son imposibles de encontrar ;)
[Enlace externo eliminado para invitados] <- Viejo engine.dll donde se encuentran los bytes atravez de la funcion dwFindPattern
[Enlace externo eliminado para invitados] <- Nuevo engine.dll donde no encuentro los nuevos bytes