elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado:


  Mostrar Mensajes
Páginas: 1 2 [3] 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 ... 69
21  Programación / Ingeniería Inversa / Re: Duda sobre ejecutables en: 22 Septiembre 2011, 21:46 pm
Hola a todos:
No se si este sera el foro adecuado para esta consulta pero bueno lo intentamos.

En un ejecutable quien decide todos los parametros de Image Base, Entry Point,
o sea , todos los parametros que podemos ver en el LordPE.
Mi duda es si todo debe seguir estas diractrices, o sea que fuera una configuracion estandard y que por ejemplo yo no pudiera tener un programa con una ImageBase por ejemplo en 00003000 en vez de 00400000.
Otra pregunta seria quien decide las direcciones de memoria a las que debe ir el programa al cargarse en la memoria, o sea las direcciones de memoria que nos aparecen al hacer un dump del programa.

Saludos

Esos parámetros generalmente vienen definidos por el compilador. Pero los puedes crear a mano, más que parámetros podríamos llamarles reglas.

En primer lugar tenemos la cabecera 'MZ' IMAGE_DOS_HEADER que sería esta:

Código:
typedef struct _IMAGE_DOS_HEADER
{
     WORD e_magic;
     WORD e_cblp;
     WORD e_cp;
     WORD e_crlc;
     WORD e_cparhdr;
     WORD e_minalloc;
     WORD e_maxalloc;
     WORD e_ss;
     WORD e_sp;
     WORD e_csum;
     WORD e_ip;
     WORD e_cs;
     WORD e_lfarlc;
     WORD e_ovno;
     WORD e_res[4];
     WORD e_oemid;
     WORD e_oeminfo;
     WORD e_res2[10];
     LONG e_lfanew;
} IMAGE_DOS_HEADER, *PIMAGE_DOS_HEADER;

Luego ya tienes la de sistemas 'NT' (elfa_new apunta a ella) IMAGE_NT_HEADERS:

Código:
typedef struct _IMAGE_NT_HEADERS
{
     ULONG Signature;
     IMAGE_FILE_HEADER FileHeader;
     IMAGE_OPTIONAL_HEADER OptionalHeader;
} IMAGE_NT_HEADERS, *PIMAGE_NT_HEADERS;

Donde:

Código:
	
struct IMAGE_FILE_HEADER

typedef struct _IMAGE_FILE_HEADER
{
     WORD Machine;
     WORD NumberOfSections;
     ULONG TimeDateStamp;
     ULONG PointerToSymbolTable;
     ULONG NumberOfSymbols;
     WORD SizeOfOptionalHeader;
     WORD Characteristics;
} IMAGE_FILE_HEADER, *PIMAGE_FILE_HEADER;


Código:
typedef struct _IMAGE_OPTIONAL_HEADER
{
     WORD Magic;
     UCHAR MajorLinkerVersion;
     UCHAR MinorLinkerVersion;
     ULONG SizeOfCode;
     ULONG SizeOfInitializedData;
     ULONG SizeOfUninitializedData;
     ULONG AddressOfEntryPoint;
     ULONG BaseOfCode;
     ULONG BaseOfData;
     ULONG ImageBase;
     ULONG SectionAlignment;
     ULONG FileAlignment;
     WORD MajorOperatingSystemVersion;
     WORD MinorOperatingSystemVersion;
     WORD MajorImageVersion;
     WORD MinorImageVersion;
     WORD MajorSubsystemVersion;
     WORD MinorSubsystemVersion;
     ULONG Win32VersionValue;
     ULONG SizeOfImage;
     ULONG SizeOfHeaders;
     ULONG CheckSum;
     WORD Subsystem;
     WORD DllCharacteristics;
     ULONG SizeOfStackReserve;
     ULONG SizeOfStackCommit;
     ULONG SizeOfHeapReserve;
     ULONG SizeOfHeapCommit;
     ULONG LoaderFlags;
     ULONG NumberOfRvaAndSizes;
     IMAGE_DATA_DIRECTORY DataDirectory[16];
} IMAGE_OPTIONAL_HEADER, *PIMAGE_OPTIONAL_HEADER;

Ahora, sobre la pregunta de si necesita estar en la base 0x00400000 la respuesta es: No.

No es necesario, el Sistema Operativo siempre da prioridad al ImageBase, pero en caso de no poder mapearse en esa zona de memoria lo situaría en una página sin reservar.

El caso más fácil de ver son por ejemplo las librerías, la mayoría de ellas intentan mapearse en 0x01000000 pero si te fijas en tu debugger favorito verás que siempre se van alojando de forma contigua.

En cuánto a la última pregunta deberías definir a qué secciones te refieres. Si es a la parte de las secciones (IMAGE_SECTION_HEADER) como ".text"/".data"/etc entonces el header del binario es el que lo define.

Ahora si me preguntas sobre el resto de direcciones quitando las que reservan las librerías tienes las páginas de Stack y contextos (PEB y TEB) en los últimos 100K de los 2GB.

El resto son páginas que se reservan para generar memoria (y devolver heaps).

Un saludo.

22  Programación / Ingeniería Inversa / Re: Se han actualizado los links de enlaces interesantes en: 22 Septiembre 2011, 21:37 pm
Gran trabajo karmany, se agradece que en la medida de lo que puedas estés ahí :).

¡Un abrazo!
23  Programación / Ingeniería Inversa / Re: Modificar instalador para evadir numero de instalaciones en: 22 Septiembre 2011, 21:33 pm
Saludos! Shaddy eso de RSA no me a gustado tanto :)  pero vamos por intentarlo que no sea! Yo estoy dispuesto a hacer o probar lo que sea.... Podrías decirme algún método para poder copiar el disquette que al final nos de un resultado valido? porque por lo que he leído por el foro, muchos incorporan sectores erróneos y otros tipos de protecciones como seria el numero de serie del disquette....

He estado intentando usar el programa en modo evaluación por si tenia algún tipo de capado hasta el momento del registro y lo único que he podido encontrar a sido un mensaje que aparece entrando en la sección Caja - Barra y Mesas, haciendo referencia a que el programa usara los precios de una determinada manera al estar en modo evaluación (tendrá algunas funciones activas en el código mientras este en modo evaluación) Por lo demás no he podido encontrar ningún otro tipo de limitación.

Und3r saludos compañero! Efectivamente tengo la llave de registro, si te refieres al disquette llave que incorpora el numero de serie. En cuanto a la parte donde uno puede registrarse seria en la primera opción del menú superior,en hoja de registro, es justo en la primera solo que no quiero ponerte el nombre porque no queremos que en el foro aparezca ningún tipo de nombre...  :silbar:

Estoy intentando recuperar el disco duro, pero esta frito...ando buscando un modelo idéntico, para cambiarle la parte eléctrica, esperando que el fallo no sea físico...

Por lo demás están son mis posibilidades...



Bien, pues si puedes usar toda la funcionalidad entonces no te preocupes que siempre se podrán quitar las limitaciones. Aún así no veo muy lógico lo del 'disquette' la verdad.

Dejo a .:UND3R:. que te ayude que parece que rebosa de ganas y  disposición :).

Un saludo y suerte!
24  Programación / Ingeniería Inversa / Re: Modificar instalador para evadir numero de instalaciones en: 22 Septiembre 2011, 16:03 pm
Hola de nuevo,

Lo cierto es que existen varias posibilidades.

La que más te interesa si es que finalmente te decides por intentarlo es que el contenido del 'disquette' sea un simple 'serial', o un conjunto de 'bytes' que no descifran ninguna parte útil del software principal.

La más perjudicial sería, por ejemplo, que el contenido del 'disquette' sea la 'clave privada' de un RSA (por poner un ejemplo) que cifra contenido vital del 'software' (bases de datos, recursos, etc)

¿Cuando está en modo evaluación te permite hacer uso de la funcionalidad completa del software?

Un saludo.
25  Programación / Ingeniería Inversa / Re: Modificar instalador para evadir numero de instalaciones en: 22 Septiembre 2011, 14:04 pm
Buenas,

Imagino que si tienes un "Disco LLave". Te refieres a que tenías un disquette original que funciona como "clave" ¿No?

Qué curioso que todavía en 2011 se sigan usando las disqueteras. ¿Todavía puedes ejecutar la aplicación al menos en una máquina completamente?

Un saludo.
26  Programación / Ingeniería Inversa / Re: Nuevo Debugger Desensamblador en: 1 Septiembre 2010, 11:42 am
Hola gente, estoy terminando un debugger que se encuentra en la etapa alfa, todavía falta un largo camino para competir con IDA Pro u OllyDbg, aunque tengo algunas características que ellos no tienen como debuggear multiples procesos y debuggear procesos child. Aunque posiblemente lo más entretenido es la utilidad “detour”. La desventaja en la actualidad es que solamente es y sera un debugger para software de 64 bits, pero como es un proyecto a largo plazo seguramente cuando este terminado 100% como me guste, hablar de 64 bits será algo habitual.
Bueno siendo breve la finalidad de este post, es encontrar gente que quieran testear esta versión del debugger ya que es y será una versión freeware y la ayuda de ustedes sería de gran valor.

Link: www.duxcore.com

Que y Como testear? :

-Setear un software breakpoint en cualquier función que sepan que va breakear, en ShowWindow, WriteFile, ReadFile,  o cualquier funcion que se les ocurra.
(si tienen paciencia pueden comparar el resultado desensamblado con WinDbg seteando un breakpoint, con el comando  “bp kernel32!readfile”)

-Setear un Detour, primero seleccionando en Target Function a la API que desean sobrecargar y luego seleccionan Detour Function a la función de la dll propia.
Para facilitar el testeo  se incluye la dll compilada (DuxDbgClient.dll)  (aunque obviamente se incluye el código de la dll para que puedan crear las de ustedes y hagan detour de cualquier función que se les ocurra)

Introduccion Detour (que es y para que sirve)
Un “detour” justamente es un desvio con el que podemos seleccionar una función (target) de cualquier dll, propia del sistema operativo o del software, e indicarle al debugger que cada vez que el software llame a esa función se redirija a otra función (detour) que nosotros hayamos seleccionado. Previamente vamos a tener que inyectar codigo, cargando modulos (dlls o exes)  propios.
Son 3 las dlls que vamos a tener que cargar (inyectar)
DuxDbgControl.dll   /  DuxDbgUtilities.dll
DuxDbgClient.dll (depende de las otras 2 dlls y debemos respetar el orden en que se carga)
DuxDbgClient.dll implementa una función Duxrand que nunca genera un numero aleatorio, por lo tanto si debuggeamos el buscaminas (Minesweeper) y seteamos en Target Function a la función “rand” del modulo “msvcrt.dll” y luego en Detour Function a la función “Duxrand” del modulo “DuxDbgClient.dll” deberíamos comprobar que cuando juguemos el orden de las minas no sea aleatorio.

Otro ejemplo es la función DuxWriteFile que esta implementada para que haga una copia en un archivo “D:\DuxBackUp.txt” de todo lo que el programa escriba en el disco.
Deben setear :
Target Function -> Kernel32.dll ->WriteFile
Detour Function-> DuxDbgClient.dll->DuxWriteFile.

Donde estan las dlls??
C:\Program Files\DuxCore\Visual DuxDebugger\SDK\redist

Bueno agradecería, que me informen por mail:  info@duxcore.com si tuvieron problemas con la instalación, si arranca con algún problema, etc,  como es una versión alfa obviamente hay cosas que no están implementandas, si no tuvieron ningún problema por favor también háganmelo saber.
Si sale todo bien para noviembre saldrá la versión 1.0.
Saludos y si lo testean gracias por el tiempo!



Buenas!

Yo si que tengo máquina de x64 e intentaré cuando termine mis vacaciones de hacer pruebas con él.

Muchas gracias, seguro que termina por ser uno de los grandes ;)!
27  Foros Generales / Foro Libre / Re: Entrevista de tele5 a sdc en: 3 Mayo 2010, 21:48 pm
Citar
:http://www.pandasecurity.com/spain/promotions/retopanda/
eso de reto panda suena a uno de esos concursos chinos donde debes vencer a un panda en una pelea a muerte y de regalo te dan un panda gigante de peluche xD.


Tenéis los 3 retos aquí:

http://abssha.blogspot.com/2009/05/panda-security-1-solucion.html
http://abssha.blogspot.com/2009/05/panda-security-2-solucion.html
http://www.rs-labs.com/papers/RS_reto_panda_prueba_3.pdf

Un saludo.
28  Programación / Ingeniería Inversa / Re: pcguard necesito ayuda en: 9 Abril 2010, 13:06 pm
Uhhh  =/, bueno amigo graziaz de todas maneras jeje... ya pude obtener un keygen, pero no tengo el program ID, ni el first String, y el last string que pide u.u , pero bueno seguire buscando, y si encuentro alguna solucion la posteo, gracias

El keygen que hice yo necesita al menos un código válido (que es el keygen que tienes, ShadowDark ;))

Un saludo.
29  Programación / Ingeniería Inversa / Re: pcguard necesito ayuda en: 9 Abril 2010, 08:20 am
hola amigos, pues como veran soy nuevo en el foro, y pues tengo un pequeño problema, me pasaron un programa, pero esta protegido con el pcguard, tengo el MID y el Site Code, la licencia es de UCF,  y lo que necesito es el Init Code, pero no tengo idea de como obtenerlo, si alguien me dijera como puedo obtenerlo porfavor, agradezco su apoyo. saludos

Hace más de 5 años que no toco un PC-Guard, desde aquel "famoso" keygen que hice para él...

Un saludo.
30  Programación / Ingeniería Inversa / Re: Ayuda: Dos semillas en una misma protección en: 24 Marzo 2010, 18:39 pm
El tema es asi, luego de ejecutar Solver, obtengo:

-> Seed1=0xD545, Seed2=0xC7B0, Seed3=0x6430
-> Seed1=0xBA2A, Seed2=0x3ED0, Seed3=0x6430

Por lo cual, no se cuales son los valores correctos para generar el fst que estoy necesitando.

Alguien puede ayudarme¿?

La modad es 0x6fe6

Me parece que tendrías que explicarte mejor.

Se puede entender que tienes para un tercer WORD dos resultados iguales. Y que se generan con otros 2 diferentes.

Ahora, ¿que es lo que estás mirando?

Un saludo.
Páginas: 1 2 [3] 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 ... 69
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines