Parchear un ejecutable,posible en asm?

Iniciado por Monica_Barcelona, 21 Abril 2010, 21:47 PM

0 Miembros y 2 Visitantes están viendo este tema.

Monica_Barcelona

Utilizo MASM32,imagino que debo crear un RC,depues compilarlo para que me quede un RES i de alli ya nse pero nose como hacer todo eso,si hay algun tuto te lo agradecere un saludo ctlon (K)

bizco

en masm32 en los ejemplos se usan archivos de recursos.

tena

#12
Cita de: Monica_Barcelona en 22 Abril 2010, 13:50 PM
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.rar

Viene 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

Иōҳ

mira esto...

los tutos de zeropad, seguramente te serviran

http://ricardonarvaja.info/WEB/OTROS/PROGRAMACION%20DE%20VIRUS/

trata sobre la estructura PE y seguramente lo que tu buscas... en el tuto 6 si no me equivoco o mayor trata como obtener la dll Kernel32.DLL  asi obtener la funcion getprocaddress

y con eso obtienes el manejador de instancia de si tu deseas User32.DLL y obtener la funcion MessageBoxA :D


PD: si me Equivoco corriganme u.u

PD2: mira aqui tambien postee el tuto http://foro.elhacker.net/ingenieria_inversa/inyeccion_notepad_asm_ollydbg-t270582.0.html;msg1326753#msg1326753
Eres adicto a la Ing. Inversa? -> www.noxsoft.net

Eternal Idol

Monica_Barcelona: ya te dejaron muchos enlaces, por favor leelos con detenimiento.
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón