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

#371
FileAlignment
The alignment of the raw data of sections in the image file, in bytes. The value should be a power of 2 between 512 and 64K (inclusive). The default is 512. If the SectionAlignment member is less than the system page size, this member must be the same as SectionAlignment.


Cita de: marax en 15 Julio 2020, 18:59 PM
Estudiando la estructura de los archivos PE, me encontre con algo asi entre la ultima estructura IMAGE_SECTION_HEADER y la sección de codigo (de un EXE, cuya sección de codigo es la primera):

Hasta ahora no le hallo un sentido. Supongamos que se trata de tal padding entre estructuras, ¿no seria mas eficiente especificar la forma de alineamiento en IMAGE_OPTIONAL_HEADER32 y aplicarlo en memoria, y no en el disco? Honestamente, no entiendo cual es el sentido de aplicarlo tambien al archivo en disco...

Simplemente responde al alineamiento, cada sección esta alineada a minimo 512 bytes (de acuerdo al campo FileAlignment de IMAGE_OPTIONAL_HEADER) y esa de la imagen que subiste debe arrancar en 1024.

Cita de: marax en 15 Julio 2020, 18:59 PMAdemas, estoy casi seguro de que esto se debe a una razon practica mas que fundamental... pero ¿por que es necesario? es decir ¿por que no acceder a la memoria en unidades de palabra simplemente (sea cual sea la palabra del computador, 16-bits, 32-bits, 64-bits...)?

Yo no diseñe el formato PE (y te estas desviando del alineamiento, buscando explicaciones mas alla de como funciona una tecnologia, a la larga te vas a topar con decisiones de diseño y si es tecnologia de hace decadas las razones no van a ser evidentes siempre) pero te puedo dar una razon: no se pueden leer de disco unidades de palabra, la unidad minima con la que se trabaja es el sector (tipicamente 512 bytes).
#372
Cita de: marax en 14 Julio 2020, 18:44 PM
estoy inseguro de si entiendo el significado de "alineamiento" cuando se habla de programacion en ensamblador y otras categorias; segun lo que hasta ahora se, el alineamiento es el ambito de acceso. Sin embargo, ¿es eso exactamente?

No ...

https://en.wikipedia.org/wiki/Data_structure_alignment
https://foro.elhacker.net/asm/declaracion_de_segmentos_en_tasm-t504472.0.html

Cita de: marax en 14 Julio 2020, 18:44 PMPor ejemplo, existe un miembro de la estructura IMAGE_OPTIONAL_HEADER del formato PE llamado FileAlignment (cosa que no entiendo: ¿por que alinear un archivo en disco? ¿o se trata mas bien de informacion para la paginacion?). Ademas, MASM tiene ciertos atributos para la declaracion de segmentos que puede ser BYTE, WORD, PARA, etcetera, ¿se refiere esto solo al ambito del segmento que debe calcular el ensamblador? ¿o va mas alla de esto?.

https://docs.microsoft.com/en-us/windows/win32/api/winnt/ns-winnt-image_optional_header32
#373
Si queres terminar tu programa llamas a exit.
#374
De nada  ::)
#375
Programación C/C++ / Re: Printf sin librerias
12 Julio 2020, 10:36 AM
Cita de: Loretz en 12 Julio 2020, 00:51 AMDe acuerdo, siempre que no olvides
#include <windows.h>

Cita de: Loretz en  8 Junio 2020, 15:12 PMSiempre tendrás que usar alguna librería, del C o del C++.

No olvido nada, esa no es una libreria de C/C++ y estrictamente hablando puedo declarar lo necesario manualmente (incluso podria usar syscall o la interrupcion correspondiente y el mismo principio aplica a la BIOS; de ser necesario podria enlazar el resultado de ensamblar un modulo .asm para x64).

Esto es simplemente una tosca demostracion:
Código (c++) [Seleccionar]
typedef unsigned int DWORD;
extern "C" DWORD __stdcall WriteFile(DWORD, void *, DWORD, DWORD *, DWORD);
extern "C" DWORD __stdcall GetStdHandle(DWORD);
#define STD_OUTPUT_HANDLE (DWORD) -11
#376
ASM / Re: Documentacion de TASM.
10 Julio 2020, 20:08 PM
Aca te dejo algunas cosas pero te recomiendo buscar por tu cuenta, desde que yo me meti en esto en 2004 paso mucho tiempo ..

https://docs.microsoft.com/en-us/cpp/assembler/masm/microsoft-macro-assembler-reference?view=vs-2019

http://masm32.com/

https://web.archive.org/web/20190410222054/http://win32assembly.programminghorizon.com/tutorials.html

https://web.archive.org/web/20080303111005/http://doc.ddart.net/asm/Microsoft_MASM_Programmers_Guide_v6.1/
#377
Cita de: sallaks en  9 Julio 2020, 22:10 PM
Ejemplo, Si yo tengo un array dinamico de tipo char, donde guardo un string, si yo lobero ese espacio y si hago un printf, que deberia imprimir?

Indefinido, si liberaste la memoria ya no te pertenece y no deberias referenciarla, es un bug de tu programa me atreveria a decir  :silbar: Si lo que queres es asegurarte de que no quedan rastros de lo que hayas escrito en esa memoria entonces rellenala de 0s antes de liberarla.
#378
ASM / Re: Documentacion de TASM.
9 Julio 2020, 20:44 PM
fasm; para Windows MASM.
#379
ASM / Re: Documentacion de TASM.
9 Julio 2020, 18:11 PM
https://web.archive.org/web/20001025182704/http://cs-netlab-01.lynchburg.edu/courses/Assemb/OOPAssem.html

TASM es obsoleto, por eso apenas hay recursos y cada vez habra menos.
#380
El usuario que abrio el hilo ya no volvio asi que ya es suficiente. Y en general por favor tratemos de no dejar soluciones completas.