Foro de elhacker.net

Seguridad Informática => Hacking => Mensaje iniciado por: jheberg en 14 Enero 2018, 13:03 pm



Título: ¿Se puede sacar los binarios de un software y a su vez reutilizarlos?
Publicado por: jheberg en 14 Enero 2018, 13:03 pm
Hola.

Se dice que las computadoras solo leen 0 y 1 y que el procesador es quién se encarga de interpretar todo, entonces supongamos que este binario representa a X software:

001001011001

¿Hay manera de que yo pueda extraer dicho binario?

Y ya suponiendo que si es posible ¿puedo compilar el binario ese para que la PC me muestre el software?

Bueno, no sé si compilar sea la palabra indicada pero creo que se me entiende.

Gracias.


Título: Re: ¿Se puede sacar los binarios de un software y a su vez reutilizarlos?
Publicado por: engel lex en 14 Enero 2018, 13:28 pm
Extraer para uso, usualmente no. Los software son unabmaraña de código muy difícil de desarmar a nivel binario

Compilar para múltiples usos si, se le llaman librerías o en el caso de Window, son .dll

Aunque tu pregunta ni está del todo clara pero creo que era eso


Título: Re: ¿Se puede sacar los binarios de un software y a su vez reutilizarlos?
Publicado por: jheberg en 14 Enero 2018, 14:04 pm
Extraer para uso, usualmente no. Los software son unabmaraña de código muy difícil de desarmar a nivel binario

Y que hay de las fotos y videos?


Título: Re: ¿Se puede sacar los binarios de un software y a su vez reutilizarlos?
Publicado por: Serapis en 14 Enero 2018, 15:42 pm
Por poder , se puede. El problema es que la mayoría de las veces te vas a encontrar que es más fácil y rápido desarrollar algo por tí mismo que tratar de comprender el código (compilado) de cualquier otro programa.

Sin embargo, las librerías las hay públicas... así que realmente será muy específico aquello que se pretenda reusar.
Piensa que si alguien queire 'esconder' su código, lo hará de forma que no se pueda utilizar 'tal cual', requerirá alguna inicialización o comprobación duante la ejecución, sin la cual, fallará... descubrir por tí mismo examinando todo el código de un programa es algo tremendamente tedioso, si no sabes el punto exacto donde se localiza la 'protección' ni cuantas veces o en cuantos sitios hay alguna protección más...
Habituamente la mayoría de programas usan librerías que no tienes que 'extraer' para reutilizarlas, pertenecen al S.O. y están disponibles para cualquiera. El programador solo creará aquellas específicas que precise para realziar la funcionalidad que su programa requiera y que no estén disponibles con el lenguaje con el que escribe.

Por último, reutilizar su código, aunque una librería no esté enmarañada de código, si mantiene su copyright (esto es, no es pública), no tienes derecho a usarla, luego haciéndolo te arriesgas a una demanda judicial... obviamente si tu programa llega a conocimiento público, si lo haces y utilizas en tu propio equipo, incluso un juez podría desestimar una demanda así... primero porque tuvieron que acceder ilegítimamente a tu equipo para saberlo y segundo, porque lo usas exclusivamente en un entorno cerrado y sujeto en exclusiva para ti, poco o ningún daño se hace con eso al autor.

En general, la cuestión es ¿merece el esfuerzo?. Yo diría que en el 90ytantos% de als veces, no y en el resto, ya está ese programa para usarse, hacer uso de otra herramienta que viola sus librerías para pretender hacer lo mismo que ya hace esa, a buen seguro será con una pérdida notale de rendimiento (fruto de no tener claro que hace, cómo optimizarla o reusarla jutno a otras herramientas a propósito)... Imagina desguazar un Fórmula1, para tu reconstruir otro coche...el tuyo igualará al previo en rendimiento?. Seguramente no. Y si al rfinal, lo único que variar es el color, nombre, etc... es usuarpación, violación de la autoría.


Título: Re: ¿Se puede sacar los binarios de un software y a su vez reutilizarlos?
Publicado por: jheberg en 14 Enero 2018, 16:14 pm
Imagina desguazar un Fórmula1, para tu reconstruir otro coche...el tuyo igualará al previo en rendimiento?. Seguramente no. Y si al rfinal, lo único que variar es el color, nombre, etc... es usuarpación, violación de la autoría.

En realidad mi duda no va a por ahí con esas intenciones, sucede que había leído que Microsoft tiene un número primo laaargo que representa a Word eso significa que si tú tienes ese número primo podrías ganarte una demanda, dicho número primo se descompone hasta llegar al binario, me imagino que es así, ya pues, esa es mi duda, si tú tienes un .txt con binario y ese binario representa a Word, como rayos lo haces funcionar?

Me explico?


Título: Re: ¿Se puede sacar los binarios de un software y a su vez reutilizarlos?
Publicado por: engel lex en 14 Enero 2018, 17:09 pm
Citar
Y que hay de las fotos y videos?

literalmente puedes copiar y pegar, está allí a tu alcance... pero al ser binario la foto no es que está representada pixel por pixel, esto sería muy pesado, la foto está representada en algoritmos que la describen (lee sobre jpg en wiki) y sacar una porcion te dejaría con una zona sin contexto y sin valor... es como que agarres 1000 libros todos en diferentes idiomas, y tomes al azar 3 lineas (sin importar su ubicación en el parrafo) y metas eso en un texto sin aclarar nada del contexto... es simplemente un sin sentido...

no se de donde sacaste lo del binario pero siento que está fuera de contexto... lo que hay similar a lo que dices es algo que se llama Hash, es un numero único generado por un binario el cual identifica inequívocamente un software e indica si fue modificado


Título: Re: ¿Se puede sacar los binarios de un software y a su vez reutilizarlos?
Publicado por: PalitroqueZ en 14 Enero 2018, 18:17 pm
En realidad mi duda no va a por ahí con esas intenciones, sucede que había leído que Microsoft tiene un número primo laaargo que representa a Word eso significa que si tú tienes ese número primo podrías ganarte una demanda, dicho número primo se descompone hasta llegar al binario, me imagino que es así, ya pues, esa es mi duda, si tú tienes un .txt con binario y ese binario representa a Word, como rayos lo haces funcionar?

Me explico?

una colaboración armoniosa entre el sistema operativo y el procesador.


Título: Re: ¿Se puede sacar los binarios de un software y a su vez reutilizarlos?
Publicado por: jheberg en 15 Enero 2018, 19:32 pm
una colaboración armoniosa entre el sistema operativo y el procesador.

¡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.


Título: Re: ¿Se puede sacar los binarios de un software y a su vez reutilizarlos?
Publicado por: engel lex en 15 Enero 2018, 19:39 pm
todo archivo se puede... la cosa es que tenga algo legible por el procesador... un .txt y .exe son identicos, a final de cuentas lo unico es que cada byte del txt está en un rango predeterminado para ser interpretado como letra y en el exe el rango es más amplio y distribuido


Título: Re: ¿Se puede sacar los binarios de un software y a su vez reutilizarlos?
Publicado por: jheberg en 15 Enero 2018, 19:51 pm
engel lex please dame un ejemplo práctico y ejecutable.

Digo, al final de cuentas un exe para el procesador son solo 0 y 1 y si un txt tiene esos mismos 0 y 1 como se los doy al procesador para que solo interprete dichos 0 y 1 pero no el archivo txt.


Título: Re: ¿Se puede sacar los binarios de un software y a su vez reutilizarlos?
Publicado por: Serapis en 16 Enero 2018, 16:38 pm
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?.


Título: Re: ¿Se puede sacar los binarios de un software y a su vez reutilizarlos?
Publicado por: engel lex en 16 Enero 2018, 17:47 pm
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...)
2xZgCVG_Bzk

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

https://www.youtube.com/watch?v=UaQjGziw71E (https://www.youtube.com/watch?v=UaQjGziw71E)


Título: Re: ¿Se puede sacar los binarios de un software y a su vez reutilizarlos?
Publicado por: PalitroqueZ en 16 Enero 2018, 21:21 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.



Título: Re: ¿Se puede sacar los binarios de un software y a su vez reutilizarlos?
Publicado por: jheberg en 17 Enero 2018, 21:32 pm
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.


Título: Re: ¿Se puede sacar los binarios de un software y a su vez reutilizarlos?
Publicado por: engel lex en 17 Enero 2018, 23:56 pm
Citar
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.


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 (https://en.wikipedia.org/wiki/Magic_number_(programming))) 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 (https://foro.elhacker.net/buscador2-t467948.0.html)



Título: Re: ¿Se puede sacar los binarios de un software y a su vez reutilizarlos?
Publicado por: PalitroqueZ en 18 Enero 2018, 02:22 am
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.