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

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Compilacion de codigo en C a un binario puro.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Compilacion de codigo en C a un binario puro.  (Leído 1,740 veces)
Usuario887


Desconectado Desconectado

Mensajes: 310


Ver Perfil
Compilacion de codigo en C a un binario puro.
« en: 1 Noviembre 2021, 17:44 pm »

Hola,

Queria saber si alguien sabe como (mas bien enlazar) codigo de C a un binario puro, me explico:

Código
  1. int main()
  2. {
  3.    int x;
  4.    x=0;
  5. }
  6.  

Watcom C puede producir un .COM del viejo MS-DOS a partir de este codigo y lo compila a algo asi:

Código
  1.  
  2. org 100h
  3.  
  4. mov bp, sp
  5. sub sp, 4
  6.  
  7. mov ax, 0
  8. mov [sp], ax
  9.  
  10.  

Hasta aqui todo bien.

Tengo dos problemas:

El codigo que genera Watcom C es precisamente para correr en MS-DOS y me estoy jalando los cabellos modificandolo para que termine en un binario puro, entre referencias al segmento de datos y etcetera...

Mi pregunta concreta es:

Imaginese que tengo el codigo anteriormente mencionado en C, y su respectivo archivo .OBJ

¿Como enlazo este .OBJ de forma tal que pueda especificar el ORGigen del programa (obviamente diferente a 100h) a, por ejemplo, 7c00h en el caso de un bootstrap? O lo que sea...

¿Como hago esto?

Gracias por adelantado.



[EDIT]

Lo que he descubierto hasta ahora es que puedo utilizar el comando ld.exe que viene con GCC para esto:

Citar
ld --oformat binary

La cuestion es que no se como.  :xD

No se como especificar ni relocalizaciones ni nada.



[EDIT 2]

Tambien se que las opciones respecto a relocalizaciones para ld.exe son:

Citar
-q, --emit-relocs           Generate relocations in final output
  -r, -i, --relocatable       Generate relocatable output
  --embedded-relocs           Generate embedded relocs
  --split-by-reloc [=COUNT]   Split output sections every COUNT relocs
  --base_file <basefile>             Generate a base file for relocatable DLLs
  --enable-runtime-pseudo-reloc      Work around auto-import limitations by
                                       adding pseudo-relocations resolved at
  --disable-runtime-pseudo-reloc     Do not add runtime pseudo-relocations for
  --dynamicbase                  Image base address may be relocated using
  --base_file <basefile>             Generate a base file for relocatable DLLs
  --enable-runtime-pseudo-reloc      Work around auto-import limitations by
                                       adding pseudo-relocations resolved at
  --disable-runtime-pseudo-reloc     Do not add runtime pseudo-relocations for
  --dynamicbase                  Image base address may be relocated using

Sincera y apenadamente no se cual usar.



Despues de un millon de años lo logre:

Primer paso: Compilar el codigo a codigo objeto
Segundo paso: Convertir el codigo objeto a codigo ensamblador
Tercer paso: Hacer las modificaciones respectivas al ensamblador resultante
Cuarto paso: Ensamblar
Quinto paso: Enjoy


« Última modificación: 3 Noviembre 2021, 18:15 pm por marax » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
¿Cuál es la diferencia entre código objeto, código máquina y código binario?
Programación General
Aikanáro Anário 9 28,900 Último mensaje 23 Diciembre 2010, 15:19 pm
por pucheto
Error raro en la compilación de este sencillo código. « 1 2 3 4 5 »
Programación C/C++
OmarHack 41 25,237 Último mensaje 10 Junio 2013, 07:52 am
por leosansan
Compilacion - Arbol Binario
.NET (C#, VB.NET, ASP)
Castiel 0 2,160 Último mensaje 18 Febrero 2015, 06:36 am
por Castiel
[Código] Decimal a binario
Programación C/C++
Mario Olivera 2 3,020 Último mensaje 21 Mayo 2015, 23:57 pm
por Stakewinner00
Desensamblaje de un binario puro y duro
Programación General
Usuario887 4 4,284 Último mensaje 22 Septiembre 2021, 22:57 pm
por Usuario887
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines