Anda me lles el pensamiento? xD mientras escribira la respuesta anteriorpensava en eso del recurso,de inscrustar la dll en el ejecutable pero no se hacerlo,antes cuando programaba en Delphi 7 si savia hacaerlo,pero en ASM no tengo ni idea,nose que apis hay que utilizar para incsrutar un archivo! en delphi almenos tenias que crear con el bloc de notas algo como RCDATA "NOMBRE ARCHIVO" i algo mas creo peor no recuerdo,saves la forma tu?
gracias ctlon! (K)
Para meter una dll dentro de un exe puedes usar Molebox
http://www.molebox.com/slds
EI: juntando mensajes.Este es para hacer el parche, pero no en ejecucion.
void __fastcall TForm1::Button1Click(TObject *Sender)
{
if(OpenDialog1->Execute()) // Mostramos el dialogo abrir
{
LblPath->Caption=OpenDialog1->FileName;
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
//VARIABLES//
HANDLE exe;
unsigned long BytesRead,BytesWrite;
Byte buf;
// HACEMOS UN BACKUP//
if (CheckBox1->Checked==true)
{
int sizePath=LblPath->Caption.Length()+7;
char * newExe=new char[sizePath];
StrCopy(newExe,LblPath->Caption.c_str()); // copio el path
StrCat(newExe,".backup");
CopyFile(LblPath->Caption.c_str(),newExe,1); // guardo en disco
delete [] newExe; // libero el buffer
}
// Abro el exe y le doy permisos de esritura y lectura
exe=CreateFile(LblPath->Caption.c_str(),GENERIC_READ|GENERIC_WRITE,FILE_SHARE_READ,0,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0);
if(exe!=INVALID_HANDLE_VALUE)
{
int offset=0x105AAC;
Byte parche[]={0x50,0xB8,0xEF,0x21,0x43,0x00,0xC7,0x00,0x90,0x90,0x90,0x90,0x83,0xC0,0x04,0x3D,0xFB,0x21,0x43,0x00,0x75,0xF0,0x66,0xC7,0x00,0x90,0x90,0x58,0xE9,0x3B,0xF3,0xF7,0xFF};
SetFilePointer(exe,offset,0,FILE_BEGIN); //seteo el offset
WriteFile(exe,parche,21,&BytesWrite,0);
}
}
Si quieres hacerlo con WriteProcessMemory, sera en ejecuion entonces, y debes crear un Loader que lo parche en ejecucion.
Sobre lo de meter la dll dentro del exe, para que la dll muestre por ejemplo un MessageBox no le veo mucho sentido, tendrias que hacer un injerto en el exe para poder invocar a la dll y cargar sus funciones. En vez de eso podrias hacer un injerto en el exe para invocar a MessageBox de la User32.
Osea, podria funcionar, si lo que quieres es parchar el exe con la dll, deberias tener en cuenta en que punto del exe en ejecucion los vas a parchear, y para saber la direccion en que lo vas a parchear tenes que usar el ollydbg
Otra cosa, en un exe sin ninguna proteccion, es sencillo, pero ya si esta empacado es mas dificil.
Todo eso si el exe no es tuyo.
slds
EI: juntando mensajes.Aqui tienes un tutorial sobre como hacer un Loader Simple en Assembler (MASM)
http://ricardonarvaja.info/WEB/OTROS/COLABORACIONES/COLABORACIONES/Como%20construir%20un%20loader%20simple%20-%20por%20marciano.rarViene con el codigo del esqueleto del Loader.
slds
EI: juntando mensajes, el proximo lo borro.Una buena pagina con tutoriales de assembler
http://win32assembly.online.fr/tutorials.html