Hola. Tengo algunas dudas que no termino de concluir sobre este formato… si alguien tiene la respuesta aunque sea a alguna de ellas, la agradecería…
¿Como exactamente se hace referencia a una cadena en un ejecutable si el ejecutable no sabe en donde se va a cargar en memoria? ¿Llama a una función de relocalizaciones o algo asi? ¿Cual es esta función (Si es una función. Si no, lo que sea)?
¿El campo AddressOfEntryPoint de la cabecera IMAGE_OPTIONAL_HEADER que representa exactamente dado que justamente no se sabe en donde se va a cargar el programa? ¿Por que es típicamente 0x400000?
¿Cual es la diferencia entre el campo PointerToRawData de IMAGE_SECTION_HEADER cuando hablamos de la sección .text, y el campo AddressOfEntryPoint de IMAGE_OPTIONAL_HEADER?
¿Cual es la diferencia entre el campo VirtualAddress de IMAGE_SECTION_HEADER y el campo BaseOfCode de IMAGE_SECTION_HEADER cuando la sección es .text?
¿Por que hay una union entre PhysicalAddress y VirtualSize en IMAGE_SECTION_HEADER? ademas se llama Misc, me imagino que de Minimal Instruction Set Computer ¿Que tiene que ver eso? Pregunto por que estan en una union porque si se accede a uno se perdera el otro, entonces que sentido tiene eso si son practicamente en absoluto diferentes parametros...
Hay mas pero estas son las mas importantes...
Antes lo que le leido es que BaseOfCode seria "A pointer to the beginning of the code section, relative to the image base." mientras que VirtualAddress "The address of the first byte of the section when loaded into memory, relative to the image base. For object files, this is the address of the first byte before relocation is applied."
No entiendo que diferencia hay. A mi me parece lo mismo con otras palabras
Gracias y buenas noches