Dudas binarias o de muy muy pero de muy bajo nivel (7 dudas)

Iniciado por jamonyqueso, 5 Noviembre 2007, 04:32 AM

0 Miembros y 1 Visitante están viendo este tema.

jamonyqueso

Hola

Llevo unos dias que no llego a ninguna conclusion y una es esta:

Duda 1:

Hice un programa en Linux y es este

#include <iostream>
int main ()
{
printf " hola nena";
}

Asi de simple  ;D

Y la duda que se me plantea es esta:

Ya compilado con "cc codigo.c"lo abro con Khexedit (de linux) y bien me salen cosas incomprensibles en hex y en ASCII... bien y como explicarlo ummmm...aver ¿Hay alguna manera de entender eso?No digo la parte de Hex si no la ascii,la mayoria son simples puntos y caracteres tipo []  y tengo entendido que el ensamblador y el codigo hexadecimal es equivalente como jne=75 asi que se deberia entender...y creo que no esta cifrado,vamos,no creo que el compilador tenga para encriptarse solo.

y además hay muchos números hexadecimales para tan poca cosa

Y si se puede leer en hex ¿donde encuentro la equivalencias?


Duda 2:

Tengo entendido que la ps1 usa mapas de bits de 256*256 a 16 bits,creo que era asi
Y hay un programa que se llama psmplay que sirve para extraer vídeos,imágenes,mapas de bits y mas... y tenia la idea que desde una imagen recorriera desde el primer bit hasta el ultimo y extrajera los BMP pero la duda es la mayoría de los juegos están metidos en otros archivos mas grandes (como FF8 o el FF9) y suponía que los archivos BMP empiezan desde unas marcas(o unos códigos de iniciación,para saber si es realmente BMP,o JPG tamaño y tal y que acaba en otros)le hago ingieneria inversa a una foto  y mi sorpresa es que impieza por varios "00" en hexadecimal ¬¬ con lo cual mi teoria se fue al traste,aparte de que aparecia la marca de la cámara de photos ¬¬ ...¿como identifico codigo de BMP?

Duda 3

¿se puede programar (y que se entienda) en hexadecimal puro?
Yo por lo menos no encuentro ningún tutorial. :-[

Duda 4

Al editar textos ascii en hexadecimal y si te quedas sin espacio para escribir ¿se puede agregar espacios? A mi se me come trozos de código(sobreescribe)....y no hay manera :huh:

Duda 5

¿por que en los binarios hay tantos 00? y seguidos... :-\

Duda 6

Hay alguna manera de abrir un archivo en plan .RAR y ver sus archivos internos? como los bmp que están dentro de otros archivos grandes como decia antes.

Duda 7

¿por que 75 o jne,por ejemplo ,al ejecutarse eso,funciona asi? ¿donde esta programado?Es una duda que siempre quise saber. :rolleyes:


Gracias por contestar

Ferсhu

Duda 1:
Con olly

Duda 2:
el fotmato bmp empieza con "BM" y una cabecera, osea buscando eso. pero nose si usa bmp, yo imagino q no.

Duda 3:
Nop

Duda 4:
si se puede agregar espacio, pero desfasaria las direcciones, asi q el programa no funcionaria.

Duda 5:
q se yo, depende cada uno.

Duda 6:
los archivos estan codificados/comprimidos. por algo son rar no??

Duda 7:
por q es una instruccion de asm q cumple ciertas caracteristicas. Es como preguntar por q la instruccion "n++" aumenta n. jaja

Ademas te digo q lo mejor para sacarte las dudas es buscar y leer, no solo solucionas las dudas sino q evitas tener otras. Por q estoy seguro q ahora vas a tener una pregunta para cada duda q te conteste. y si hicieramos asi, tardarias demasiado en aprender, asi q lo mejor es buscar e informarte acerca de todo eso. Por suerte existe google.

Saludos!!

x4uth

Cita de: jamonyqueso en  5 Noviembre 2007, 04:32 AM
Hola

Llevo unos dias que no llego a ninguna conclusion y una es esta:

Duda 1:

Hice un programa en Linux y es este

#include <iostream>
int main ()
{
printf " hola nena";
}

Asi de simple  ;D

Y la duda que se me plantea es esta:

Ya compilado con "cc codigo.c"lo abro con Khexedit (de linux) y bien me salen cosas incomprensibles en hex y en ASCII... bien y como explicarlo ummmm...aver ¿Hay alguna manera de entender eso?No digo la parte de Hex si no la ascii,la mayoria son simples puntos y caracteres tipo []  y tengo entendido que el ensamblador y el codigo hexadecimal es equivalente como jne=75 asi que se deberia entender...y creo que no esta cifrado,vamos,no creo que el compilador tenga para encriptarse solo.

y además hay muchos números hexadecimales para tan poca cosa

Y si se puede leer en hex ¿donde encuentro la equivalencias?

como dice ferdu lo recomendado para ver el programa que hcisite es olly y no un editor de hex, aun asi no esperes encontrar
PUSH "hola nena"
CALL printf
que vendria siendo tu programa en asm, esto sera solo una parte, para q el programa se ejecute adecuadamente en tu sistema operativo tiene que realizar una serie de operaciones que las incluye el compilador por su parte, por ejemplo poner lo q haces ahi en asm llebaria unos 20 bytes como maximo, en cambio seguro q tu programa compilado tiene minimo 20 000 bytes eso si no hisiste muchos includes... y si usas funciones como printf directamente de una libreria

Cita de: jamonyqueso en  5 Noviembre 2007, 04:32 AM
Duda 2:

Tengo entendido que la ps1 usa mapas de bits de 256*256 a 16 bits,creo que era asi
Y hay un programa que se llama psmplay que sirve para extraer vídeos,imágenes,mapas de bits y mas... y tenia la idea que desde una imagen recorriera desde el primer bit hasta el ultimo y extrajera los BMP pero la duda es la mayoría de los juegos están metidos en otros archivos mas grandes (como FF8 o el FF9) y suponía que los archivos BMP empiezan desde unas marcas(o unos códigos de iniciación,para saber si es realmente BMP,o JPG tamaño y tal y que acaba en otros)le hago ingieneria inversa a una foto  y mi sorpresa es que impieza por varios "00" en hexadecimal ¬¬ con lo cual mi teoria se fue al traste,aparte de que aparecia la marca de la cámara de photos ¬¬ ...¿como identifico codigo de BMP?
normalmente los empacadores no meten los bytes a pelo, sino que remplazan unos bytes por otros para ahorrar espacio (esto sin hablar de los q encriptan), eso lo hacen mediante algoritmos mas o menos complejos.
Cita de: jamonyqueso en  5 Noviembre 2007, 04:32 AM
Duda 3

¿se puede programar (y que se entienda) en hexadecimal puro?
Yo por lo menos no encuentro ningún tutorial. :-[
por poder se puede, de hecho los primeros programas se hicieron en binario... q lo entiendas y/o y q tengas el tiempo de hacerlo, eso ya es cosa tuya....

Cita de: jamonyqueso en  5 Noviembre 2007, 04:32 AM

Duda 4

Al editar textos ascii en hexadecimal y si te quedas sin espacio para escribir ¿se puede agregar espacios? A mi se me come trozos de código(sobreescribe)....y no hay manera :huh:
por poder puedes , pero como ese texto o algo q este  a continuacion sea usado por otro programa o por el mismo si estas editando un exe ya te lo cargaste


Cita de: jamonyqueso en  5 Noviembre 2007, 04:32 AM
Duda 5

¿por que en los binarios hay tantos 00? y seguidos... :-\
depende del binario q sea, pero es logico q el 0 sea usando de relleno en estructuras de datos


Cita de: jamonyqueso en  5 Noviembre 2007, 04:32 AM
Duda 6

Hay alguna manera de abrir un archivo en plan .RAR y ver sus archivos internos? como los bmp que están dentro de otros archivos grandes como decia antes.
si tiene pass no hay manera de ver nada, si no tiene pass puedes abrirlo y ver su estructura , suelen estar organizados en bloques, cada bloque tiene el nombre del archivo y otros bloques q son partes del archivo comprimidos, pero amos que sin un algoritmo q descomprima no te sirve de nada

Cita de: jamonyqueso en  5 Noviembre 2007, 04:32 AM
Duda 7

¿por que 75 o jne,por ejemplo ,al ejecutarse eso,funciona asi? ¿donde esta programado?Es una duda que siempre quise saber. :rolleyes:
la instruccion JNE y todas las de ensamblador se ejecutan directamente en el CPU, el cpu esta formado por puertas logicas (AND, OR, NOT) que estan formadas basicamente por transistores (silicio dopado). yo no diria que esta programado, mas bien esta diseñado para que su circuito relalize las operaciones nesesarias en cada cadena de niveles bajo y alto (ceros y unos)  que le llegan

jamonyqueso

La Duda 6

Hay alguna manera de abrir un archivo en plan .RAR y ver sus archivos internos? como los bmp que están dentro de otros archivos grandes como decia antes.

Me exprese mal :(

Ya se que se puede abrir con winrar .Lo que me referia es si en archivos NO comprimidos pero que estan juntos y no codificados.Se podrian "abrir ese archivo" en plan como una carpeta(como cuando abres winrar ,que se su estructura de carpetas(si las hay))


Hendrix

Cita de: jamonyqueso link=topic=187038.msg888819#msg888819
Duda 5

¿por que en los binarios hay tantos 00? y seguidos... :-\
/quote]

Eso depende de la alineación del archivo....

Cita de: jamonyqueso en  5 Noviembre 2007, 04:32 AM
Duda 6

Hay alguna manera de abrir un archivo en plan .RAR y ver sus archivos internos? como los bmp que están dentro de otros archivos grandes como decia antes.

Si, en el WinZip habia un fallo que al modificar el nomber del archivo se ejecutaba nada mas abrir el Zip, evidentemente esto esta parcheado actualmente  :)

"Todos los días perdemos una docena de genios en el anonimato. Y se van. Y nadie sabe de ellos, de su historia, de su peripecia, de lo que han hecho, de sus angustias, de sus alegrías. Pero al menos una docena de genios se van todos los días sin que sepamos de ellos". - Juan Antonio Cebrián

Ferсhu

CitarLa Duda 6

Hay alguna manera de abrir un archivo en plan .RAR y ver sus archivos internos? como los bmp que están dentro de otros archivos grandes como decia antes.

Me exprese mal sad

Ya se que se puede abrir con winrar .Lo que me referia es si en archivos NO comprimidos pero que estan juntos y no codificados.Se podrian "abrir ese archivo" en plan como una carpeta(como cuando abres winrar ,que se su estructura de carpetas(si las hay))

creo q entender lo q keres decir.  Si es lo q yo pienso, tenes q separar los archivos con algun editor hexa y guardarlos con otro nombre x separado.

jamonyqueso

Si si,lo has entendido bien

El problema es como hacerlo

Ya que no se como empiezan los archivoa y como acaban en hexadecimal...

Ya que abri una foto en BMP y aparecia al principio un porron de ceros ... y no sale el "BM" como dijo <~>FeRcHu<~>

Ferсhu

Mira aca te pongo un ejemplo:

Citar
00000000   42 4D 86 00 00 00 00 00  00 00 36 00 00 00 28 00   BM†.......6...(.
00000010   00 00 05 00 00 00 05 00  00 00 01 00 18 00 00 00   ................
00000020   00 00 50 00 00 00 00 00  00 00 00 00 00 00 00 00   ..P.............
00000030   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00   ................
00000040   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00   ................
00000050   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00   ................
00000060   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00   ................
00000070   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00   ................
00000080   00 00 00 00 00 00 42 4D  86 00 00 00 00 00 00 00   ......BM†.......
00000090   36 00 00 00 28 00 00 00  05 00 00 00 05 00 00 00   6...(...........
000000A0   01 00 18 00 00 00 00 00  50 00 00 00 00 00 00 00   ........P.......
000000B0   00 00 00 00 00 00 00 00  00 00 00 00 FF FF FF FF   ............ÿÿÿÿ
000000C0   FF FF FF FF FF FF FF FF  FF FF FF 00 FF FF FF FF   ÿÿÿÿÿÿÿÿÿÿÿ.ÿÿÿÿ
000000D0   FF FF FF FF FF FF FF FF  FF FF FF 00 FF FF FF FF   ÿÿÿÿÿÿÿÿÿÿÿ.ÿÿÿÿ
000000E0    FF FF FF FF FF FF FF FF  FF FF FF 00 FF FF FF FF   ÿÿÿÿÿÿÿÿÿÿÿ.ÿÿÿÿ
000000F0    FF FF FF FF FF FF FF FF  FF FF FF 00 FF FF FF FF   ÿÿÿÿÿÿÿÿÿÿÿ.ÿÿÿÿ
00000100    FF FF FF FF FF FF FF FF  FF FF FF                        ÿÿÿÿÿÿÿÿÿÿÿ

eso seria un archivo con 2 fotos bmp, una negra al principio y luego apenas termina una blanca.

Como saber cuando termina la foto? bueno cuando empieza la otra jaja. es la unica forma o fijarte el tamaño pero te vas a complicar.

con un editor hexadecimal copias el segundo bloke donde empieza BM en uno nuevo, lo guardas como algo.bmp y listo ya tenes la otra imagen.

Espero q sea eso lo q kerias saber.

Saludos!!