¿Se puede sacar los binarios de un software y a su vez reutilizarlos?

Iniciado por jheberg, 14 Enero 2018, 13:03 PM

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

Serapis

A ver, en la memoria se almacenan bytes... el procesador no entiende otra cosa que bytes, nada impide "hacer ejecutar un txt" al procesador... sin embargo el sistema operativo es quien media, es decir, tiene un formato esperado. Si a un txt, le impones (adjuntas delante) el formato esperado y lo arrancas el procesador lo 'tragará' como si fuera un ejecutable, pero si tiene escrito: "Desde un lugar de la Mancha de cuyo lugar no quiero acordarme"... esos bytes, el procesador los interpretará puramente como ensamblador, intentará decodificar operaciones que por no ser organizadas como tal, el resultado será impredecible... incluso podría dar alguna operación no válida.

Por ejemplo, la interrupción 21, en ensamblador es "CD 21", eso son dos bytes (en hexadecimal), cuyos valores (en byte decimal) son: 205 033 (entra también en juego el orden de los bytes, pero al caso lo obviamos para no complicarte más), estos bytes en la tabla ASCII se corresponden con: "Í!", es decir si escribes eso en un fichero de texto plano, y luego ese fichero fuera modificado para ser antecedido por una cabecera de ejecutable... ya ejecutaría una interrupción 21, y según que valor hubiera en un registro ejecutaría una u otra cosa...
En definitiva, los ficheros de datos, son 'consumidos' por los ejecutables, por si mismos no son ejecutados en el procesador, se cargan en memoria y son la 'materia prima' de los ejecutables... instrucciones a ejecutar por el procesadro requerirán algún dato que serán tomado de un fichero.

Un ejemplo tonto: Tienes el texto siguiente en un fichero de texto: "en un lugar de la mancha de cuyo lugar no quiero acordarme.", tu ahora abres este fichero en un editor de texto, y dices: vaya "en" empieza con mayúscula igual que en "La Mancha", ydecides cambiarlo, el editor (que es un ejecutable), llevará el texto a memoria, y una función específica cargada en procesador tomará las letras precisas y las remplezará la "en", por la "En", y "la", por "La" y mancha por "Mancha" (solo la letra afectada, pongo la plabara para ver donde aecta) y finalmente guardará a fichero el texto así cambiado. algo sencillo sin embargo conlleva bastante trabajo... abrir el fichero, leer su contenido, crear una ventana y cargar toda su interfaz, escribir el texto en la pantalla, en el sitio adecuado, cortando líneas y deplazando hacia abajo palabras si modificas el ancho de línea (si se ajusta a la vista), luego seleccionar el texto afectado con la interacción del ratón, y pulsación de teclas, sobre un menú o botones, y finalmente realizar el remplazo, recorriendo el texto para acceder a las letras seleccionadas para ser remplazadas por su equivalente en mayúscula (al final en el procesador convertir una letra a mayúsculas es muy simple: se ejecuta una operación
letra = (letra or 32), en el procesador sería algo como:

mov ah, letra  //traer de una dirección de memoria 1 byte al registro llamado ah
or ah, 32       // realizar una operación or entre el contenido en el registor ah y el valor 32 (esto es pone a 1 el bit 5 en dicho registro)
mov letra, ah //llevar a la misma dirección de memoria el contenido del registro ah...
Previamente debe asegurarse que la letra que se quiere convertir en mayúsculas entra en el rango de 'caracteres mayusculables' (valga el palabro), un "3" no admite ser convertido en mayúsculas... as´ihab´ra una comparación previa... una tabla de 256 valores (desde el 0 al 255), cuyo contenido es 1 ó 0, si es 1 señala que esa casilla puede ser convertido a mayúsculas si es 0, no... etc... todo a grosso modo, dado tus escasos conocimientos.

Básicamente todos los ficheros se podrían resumir en sólo 2 modelos: ejecutables y datos. Los ficheros ejecutables se encargan de 'operar' con datos. Los ficheros de datos, son reconocidos por ejecutables específicos. El procesador no sabe nada de nada, es la artificiosidad del ser humano, quien le da funcionalidad y sentido a un ejecutable y a los datos. Incluso un ejecutable a un nivel más íntimo, también son datos... pero que una vez el S.O. lo identifica como tal y lo carga en memoria y lo apunta al procesador es cuando puede ser 'ejecutado'.

Esto es lo mismo que por ejemplo cocinar: el diseño inicial, la idea del programador es como una receta, el fichero ejecutable es como el cocinero haciendo la receta, y el fichero de datos, serían los ingredientes... unos ejecutables de 'segundo grado' son las librerías (son ejecutables que no funcionan solos, solo con llamadas especñificas dentro de ellos), sería como aparatos de que se sirve el cocinero (horno, el fuego, batidora, etc... que resuelven tareas especñíficas. Fíjate que cada 'aparato' utiliza siempre algún 'ingrediente' (datos), a los que opera: "batir huevos", "cortar rebanadas de pan", "pesar 100 gramos de queso", "subir a 200 grados el horno", etc... el cocinero de forma secuencial va realizando tareas... recurriendo a los artefactos para manipular los ingredientes, hasta obtener el palto coinado finalmente... Algo muy vago, pero piensa por ahí para resolver tú mismo varias cuestiones que todo el mundo puede llegar a ellas (por sí mismo).

Pero para que todo esto te aparezca claro, sería acertado que miraras (si sientes la curiosidad que despierta al que se acerca a la informática más de la cuenta  :laugh:)), empezaras por el principio... estudia como opera un procesador a grandes rasgos, luego que lo tengas asumido hazlo a un nivel más detallado, y así en cada etapa tendrás más claro todo hasta que comprendas todo el puzzle.



se me olvidaba... venía responderte solo esto y al final, te he puesto cosas que no pensaba y me olvidaba de a lo que venía:
Este foro es de "Hacking avanzado·, dejando de lado lo de 'avanzado', qué tiene que ver tu consulta con el hacking???... no veo adónde quieres ir a parar, solo ausmo que tienen un embrollo tremendo en tu cabeza, y que tratas de arrojar un poco de luz a todo ello, pero qué tiene ver tu consulta con respecto al hacking?... por algo publicaste en este sección en espcífico, no?.

engel lex

mira unos ejemplos... por lo menos el audio (wav que es crudo) admite bytes en el rango 0, 255... entonces podrías "oir" un exe

no confirmo que lo sea, pero puede funcionar (tambien puedes quedar con un monton de sonidos fuera de tu rango auditivo, tendrías que reescalar...)
[youtube=640,360]https://www.youtube.com/watch?v=2xZgCVG_Bzk[/youtube]

esto explica por dentro...  un bmp que es simple

https://www.youtube.com/watch?v=UaQjGziw71E
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

PalitroqueZ

Cita de: jheberg en 15 Enero 2018, 19:32 PM
¡Cómo logro tal colaboración?

No sé si por ahí alguien conozca un .txt  u otro archivo que tenga solo binario y que se pueda hacerle funcionar en el SO.

eso no lo haces tu, son las reglas del sistema operativo.

en el caso de microsoft, los ejecutables son un arreglo de binarios dispuesto de tal forma, que según el formato PE, deben cumplir ciertos criterios para que el windows pueda reconocerlo como un .exe y ejecutarlo correctamente.

lo que tu pretendes es modificar el contenido de un binario sin violar las reglas del formato PE, y para ello se requiere de altos conocimientos de varias cosas (SO, lenguaje C, windows) y aún asi creo que es bastante dificil poder reconstruir un binario para que haga otras cosas aparte de las que fue diseñado.

es preferible, poseer el código fuente, hacer las modificacioes y recompilar.

"La Economía planificada lleva de un modo gradual pero seguro a la economía dirigida, a la economía autoritaria y al totalitarismo" Ludwig Erhard

jheberg

NEBIRE
La computadora entiende bytes no 0 y 1, ok, eso es nuevo y responde muchas de mis dudas, los bytes son grupos de 8 bits con 0 y 1, perfecto.

Y lo publiqué en esta categoría nada más porque creí que acá están acostumbrados a trabajar con binario y pues tenía la idea de que me darían respuestas más amplias, respuestas más prácticas...

engel lex
Interesante, lo que no sabía era que debías especificarle en binario de que forma hay que tratar dicho archivo, por así decirlo, creí que era automático y que no era necesario ninguna clasificación.

PalitroqueZ
No, no, no me interesa modificar nada, me interesa tener el binario y hacerlo ejecutar/funcionar, ya sea el binario de un exe, un audio lo que sea, eso es todo.

engel lex

#14
CitarInteresante, lo que no sabía era que debías especificarle en binario de que forma hay que tratar dicho archivo, por así decirlo, creí que era automático y que no era necesario ninguna clasificación.


si en hecho, usualemente windows lee la extensión del archivo para ver a quien se lo manda a ejecutar... si agarras un mp3 y le colocas .exe, intentará ejecutarlo, pero como te dijeron, al no tener una escructura inicial correcta, retornará un error como si fuera un exe corrupto. Sin embargo en muchos linux la extención es simplemente una referencia humana, el sistema lee los primeros bytes del archivo para saber como tratarlo...

usualmente los primeros 3 a 5 bytes del archivo indican que tipo de formato es, a estos se le llaman  "numeros magicos" (articulo de la wiki sobre) usualmente cuando un programa lee un archivo, espera que los numeros magicos coincidan, pero si no lo valida, puedes por ejemplo ejecutar un exe en el reproductor como un wav (tambien puedes usar un editor y hacerlo a mano, aunque por la naturaleza de la estructura del archivo, puede simplemente fallar)


hmmm! lo conseguí! esto te puede gustar!
https://foro.elhacker.net/buscador2-t467948.0.html

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

PalitroqueZ

y hablando de archivos con formatos especificos, me gustaría resaltar algo.

algunos formatos como los graficos vectoriales y esquemas de diseño electrónico, pueden aparecer como un archivo solo ejecutable por una determinada aplicación, pero estos en realidad son archivos de texto plano, que pueden abrirse con un block de notas, y teniendo cierto conocimiento de xml, hasta pueden modificarse sin dañar el contenido del mismo o necesitar la aplicación que lo procesa.

"La Economía planificada lleva de un modo gradual pero seguro a la economía dirigida, a la economía autoritaria y al totalitarismo" Ludwig Erhard