Menú

Mostrar Mensajes

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ú

Mensajes - Eternal Idol

#3441
ASM / Re: Volcado a memoria de un ejecutable
27 Mayo 2009, 09:23 AM
Primero que nada aclarar que estas hablando de MS-DOS (otros S.O. y formatos de ejecutable trabajan de otra manera).

Si es un .COM, es decir un ejecutable puro que contiene pura y exclusivamente instrucciones sin ninguna cabecera la ejecucion arranca exactamente en el primer byte del archivo (estas instrucciones, que son el ejecutable en el archivo, en TODOS los casos son previamente cargadas en memoria para que las pueda ejecutar el procesador).

Si es un .exe para MS-DOS la ejecucion arranca en el IP especificado.
#3442
Por lo que comento Arcangel_0x7C5 es exactamente lo que te dije (la sintaxis de AT&T no la uso jamas) y que sean dos errores de memoria no importa ya que no son el mismo seguramente. Podes usar gdb para depurar tu programa.
#3443
Mmm ... ¿Lo depuraste? ¿No estaras por casualidad tomando el contenido al que apunta eax para despues llamarlo?
#3444
ASM / Re: [ASM][?] Que significa esto?
11 Mayo 2009, 21:45 PM
En fs:[0x18] hay un puntero a la estructura TEB (Thread Environment Block), cuyo campo ProcessEnvironmentBlock (puntero a PEB esta en el offset 0x30). A su vez el campo BeingDebugged (un BYTE) esta en el offset 2 de la estructura PEB. Cuando el proceso este siendo depurado eax sera 1  :P

0:000> dt _TEB
   +0x000 NtTib            : _NT_TIB
   +0x01c EnvironmentPointer : Ptr32 Void
   +0x020 ClientId         : _CLIENT_ID
   +0x028 ActiveRpcHandle  : Ptr32 Void
   +0x02c ThreadLocalStoragePointer : Ptr32 Void
   +0x030 ProcessEnvironmentBlock : Ptr32 _PEB
   +0x034 LastErrorValue   : Uint4B
... sigue

0:000> dt _peb
ntdll!_PEB
   +0x000 InheritedAddressSpace : UChar
   +0x001 ReadImageFileExecOptions : UChar
   +0x002 BeingDebugged    : UChar
   +0x003 SpareBool        : UChar
   +0x004 Mutant           : Ptr32 Void
   +0x008 ImageBaseAddress : Ptr32 Void
   +0x00c Ldr              : Ptr32 _PEB_LDR_DATA
   +0x010 ProcessParameters : Ptr32 _RTL_USER_PROCESS_PARAMETERS
... sigue

PD. Estas estructuras las podes ver con el comando dt del WinDbg por ejemplo.
#3445
Y si ... ya lo menciona el mismo en el primer mensaje pero no parece querer hacerlo de esa manera ... sino MSDN.
#3446
En ese caso yo haria esto:

A. Aprovechando el formato PE exportaria la variable como un puntero (nulo o a un valor que quieras, tipo 0xFF00FF00 o 0xDEADDEAD) a caracter y compilaria el programa normalmente.

B. Crearia otro programa que haga los siguiente pasos a grandes rasgos:

1. Abre el ejecutable generado
2. Guarda el EOF en una variable
3. Escribe el script desde el final del archivo existente (y guarda el nuevo EOF si queres agregar mas cosas despues)
5. Abre el ejecutable pero ahora mappeado en memoria
6. Busca la variable exportada, la localiza en memoria y cambia el puntero al antiguo EOF

Se necesitaria codigo para manejar el PE con lo cual seria una solucion mas costosa de implementar pero me parece que quedaria muy limpia, generica y facil de extender: queres agregar otra cosa, simplemente exportas otra variable.

PD. No esta paso por paso, tenes que cerrar el archivo antes de mappearlo, etc.
#3447
El problema es que seguramente eso esta en una sección de datos, y tras esa cadena hay otros datos que jodes al sobreescribirlos, no entiendo exactamente que es lo que queres hacer pero tal vez una solucion sea declarar la variable con un tamaño mayor al "real" (asumiendo que el ejecutable lo generaste vos), por ejemplo:

char s[256] = "{script}";
#3448
ASM / Re: No entiendo esto [ASM]
3 Mayo 2009, 18:47 PM
Para que no sea vea la consola usas justamente GUI (subsystem=WINDOWS). Mira en enlace que deje o http://flatassembler.net ahi vas a encontrar todo lo que necesites sobre este ensamblador en particular.
#3449
ASM / Re: No entiendo esto [ASM]
3 Mayo 2009, 17:47 PM
#3450
Cita de: Nakp en 27 Abril 2009, 02:08 AM1. seeh

Una cosa es que me contradigan, el hilo donde se discutio el tema en cuestion (bucles en C/C++) contiene los mensajes donde thedoctor77 me contradijo sin ninguna edicion (salvo uno que originalmente creo en un nuevo hilo, al yo haber dado por terminado el tema, donde habia copiado todo un mensaje mio sin citarlo correctamente), y otra que sin venir a cuento en un hilo distinto donde yo no participe que se burle sin ninguna necesidad.
Ademas de estar totalmente convencido de tener la razon el punto principal es irrelevante si a mi me gusta que me contradigan o no, cualquiera que me venga leyendo desde que entre al foro sabe que es falso, si fuera cierto directamente hubiera borrado lo que yo considero una opinion totalmente obtusa mas no lo hice sino que indique cuales eran mis argumentos. Ahora no hay argumento que indicar, el tema esta cerrado, ya cada uno expuso su opinion y traerlo nuevamente con una burla es un acto muy bajo.

Cita de: Nakp en 27 Abril 2009, 02:08 AM2. ya se hizo

No guarda relacion lo que mencionas, son casos diametralmente opuestos.

Cita de: Nakp en 27 Abril 2009, 02:08 AM3. ya se ha visto antes...

Supongo que para algo esta un Moderador pero me parece que estamos (o estoy ya que thedoctor77 no ha vuelto despues de su berrinche) hablando de este caso. Pero si es la opinion general ya sabra el-brujo tomar las medidas correspondientes.

Cita de: Nakp en 27 Abril 2009, 02:08 AMaquí has perdido el beneficio de la duda  :-\

No se a quien le dijiste esto  :silbar: