Foro de elhacker.net

Programación => ASM => Mensaje iniciado por: Monica_Barcelona en 21 Abril 2010, 21:47 pm



Título: Parchear un ejecutable,posible en asm?
Publicado por: Monica_Barcelona en 21 Abril 2010, 21:47 pm
Hola chicos como estais??¿¿ bueno espero que muy bien,primero querria agradeceros todo lo qu haceis pro mi


pues bueno busco en google pero no encuenrto nada,lo mas que encontre e sun post que hablaba de parchera una dll peor no es exactamente lo que quiero,yo solo quiero saber si es posible parchear un exe (programado por mi misma) i poderle agregar funciones tales como un MessageBox, etc etc dede otro ejecutable que tambien programare yo previamente,i ya que estoi preguntanto esto para no abrir otro hilo aprovecho y pregunto si es posible mandar i/o recibir datos por el puerto USB 2.0

un saludo chicos!


Título: Re: Parchear un ejecutable,posible en asm?
Publicado por: tena en 21 Abril 2010, 22:17 pm
Queres hacer un loader?
Para pachar un exe?

Aqui tienes un tute, salteate la parte del asprotect y fijate como usa Radasma para crear el loader.

http://ricardonarvaja.info/WEB/CURSO%20NUEVO/TEORIAS%20NUMERADAS/701-800/770-ASProtect%201.22%20+%20LoaderDebuger%20+%20RadASM.zip (http://ricardonarvaja.info/WEB/CURSO%20NUEVO/TEORIAS%20NUMERADAS/701-800/770-ASProtect%201.22%20+%20LoaderDebuger%20+%20RadASM.zip)

Otra de como crear un parche con Radasm.

http://ricardonarvaja.info/WEB/OTROS/PROGRAMACION/TEORIAS%20SOBRE%20PROGRAMACION%20EN%20ASSEMBLER/40-Creando%20un%20parche%20en%20RadAsm%202.rar (http://ricardonarvaja.info/WEB/OTROS/PROGRAMACION/TEORIAS%20SOBRE%20PROGRAMACION%20EN%20ASSEMBLER/40-Creando%20un%20parche%20en%20RadAsm%202.rar)

Ejemplo de MessageBox con Radasm

http://ricardonarvaja.info/WEB/OTROS/PROGRAMACION/TEORIAS%20SOBRE%20PROGRAMACION%20EN%20ASSEMBLER/Ejemplo_MessageBox_de_color_en_RadAsm.zip (http://ricardonarvaja.info/WEB/OTROS/PROGRAMACION/TEORIAS%20SOBRE%20PROGRAMACION%20EN%20ASSEMBLER/Ejemplo_MessageBox_de_color_en_RadAsm.zip)

Tutes varios uso de Radasm
http://ricardonarvaja.info/WEB/OTROS/PROGRAMACION/TEORIAS%20SOBRE%20PROGRAMACION%20EN%20ASSEMBLER/ (http://ricardonarvaja.info/WEB/OTROS/PROGRAMACION/TEORIAS%20SOBRE%20PROGRAMACION%20EN%20ASSEMBLER/)

Tambien tenes estos otros:
349-COMO HACER UN LOADER DEBUGGER PARTE 1.rar
350-COMO HACER UN LOADER DEBUGGER PARTE 2.rar
351-COMO HACER UN LOADER DEBUGGER PARTE 3.rar
352-COMO HACER UN LOADER DEBUGGER PARTE 4.rar
353-COMO HACER UN LOADER DEBUGGER PARTE 5 y final.rar

Los descargas de aqui por numero de teoria:

http://ricardonarvaja.info/WEB/CURSO%20NUEVO/TEORIAS%20NUMERADAS/301-400/ (http://ricardonarvaja.info/WEB/CURSO%20NUEVO/TEORIAS%20NUMERADAS/301-400/)

espero te sirva
slds
tena


Título: Re: Parchear un ejecutable,posible en asm?
Publicado por: Monica_Barcelona en 22 Abril 2010, 12:50 pm
Hola tena (K) gracias por tu enlaces,pero aun asin no lo entiendo muy bien,necesitaria de un code claro i sencillo de añadir una instruccion tipo MessageBox a otro exe desde otro ejecutable ,vaya un poco lioso todo ee ^^

algo como esto quiero hacer pero sin usar el OlllyDbg


http://foro.latinohack.com/f395/inline-patching-notepad-asm-ollydbg-23401/
 (http://foro.latinohack.com/f395/inline-patching-notepad-asm-ollydbg-23401/)

un saludo y gracias igualmente de verdad (K)


Título: Re: Parchear un ejecutable,posible en asm?
Publicado por: bizco en 22 Abril 2010, 13:04 pm
Bueno para hacer eso por codigo vas a tener que leer un poquito y llegar al punto de entender los tutoriales que te pusieron o minimo entender el formato de los ejecutables. pero yo me pregunto, si los 2 programas los haces tu ¿pq no cargas una dll directamente?. si no es asi, no encuentro la logica a querer meter codigo "embutido" en un programa el cual estas haciendo tu.


Título: Re: Parchear un ejecutable,posible en asm?
Publicado por: Monica_Barcelona en 22 Abril 2010, 13:10 pm
Te refieres a que ponga las funciones a un dll i que el exe que programo yo pueda utilizar dichas funciones??? osea hacer una libreria dinamica normlal i corriente i que ambox Programas puedan usarlas???


un saludo ctlon


Título: Re: Parchear un ejecutable,posible en asm?
Publicado por: bizco en 22 Abril 2010, 13:32 pm
si, eso exactamente.


Título: Re: Parchear un ejecutable,posible en asm?
Publicado por: Monica_Barcelona en 22 Abril 2010, 13:38 pm
Hola chiko,veras no es mala idea lo que dices,pero es que no me gustaria que el ejecutable que quiero aprchear (o modificar) dependa de una dll,ya saves si se pierde esa dll el exe deja de funcionar,y nose me gustria apredner a hacer eso,he visto ttoriales donde escriben con al api WriteProcessMemory,eos ya sabia hacerlo cuando hacia Cheats,pero bueno,estoi buscando info pero lo mas que encuentro es genteque lo hace con el OllyDbg,o que hace eso,escribir en la memoria del Processo :(


un saludo ctlon (K)! y gracias por atender a esta pesada :P


Título: Re: Parchear un ejecutable,posible en asm?
Publicado por: bizco en 22 Abril 2010, 13:47 pm
No tiene porque perderse la dll o depender de ella, no linkes el ejecutable a la dll. metela como recurso en el ejecutable y la sacas al disco cuando este se ejecute, luego cargas la dll y obtienes las direcciones de las funciones que necesites. Otra opcion es como dices con WriteProcessMemory, pero eso implica que tendras que leer un poquito mas.


Título: Re: Parchear un ejecutable,posible en asm?
Publicado por: 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)


Título: Re: Parchear un ejecutable,posible en asm?
Publicado por: bizco en 22 Abril 2010, 13:55 pm
que ensamblador utilizas? comente lo del archivo de recursos por decir algo no necesariamente tiene que estar en uno.


Título: Re: Parchear un ejecutable,posible en asm?
Publicado por: Monica_Barcelona en 22 Abril 2010, 13:57 pm
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)


Título: Re: Parchear un ejecutable,posible en asm?
Publicado por: bizco en 22 Abril 2010, 14:04 pm
en masm32 en los ejemplos se usan archivos de recursos.


Título: Re: Parchear un ejecutable,posible en asm?
Publicado por: tena en 22 Abril 2010, 16:57 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


Título: Re: Parchear un ejecutable,posible en asm?
Publicado por: Иōҳ en 22 Abril 2010, 18:34 pm
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


Título: Re: Parchear un ejecutable,posible en asm?
Publicado por: Eternal Idol en 22 Abril 2010, 19:53 pm
Monica_Barcelona: ya te dejaron muchos enlaces, por favor leelos con detenimiento.