¿Es posible convertir el archivo bin al lenguaje C?

Sigue la cuenta oficial + estrella , no te pierdas contenido interesante

10ec6ac0f13c42a986768085b9c2fc9e.gif

Autor | más fuerteHuang

Cuenta pública de WeChat | strongHuang

Vi un mensaje de un internauta de fondo: ¿ Quién puede convertir el archivo bin al lenguaje C?

2b0369130981f810c27ab8187ee189a4.png

Para ser honesto, en mi opinión, es imposible convertir el archivo bin al lenguaje C. Incluso si se puede convertir, es un programa muy simple, como encender una lámpara.

No lo había estudiado en serio antes, así que hoy simplemente dediqué un poco de tiempo a estudiarlo. Incluyendo Baidu/Google, ChatGPT, verificación de herramientas de descarga, etc.

El resultado final de mi verificación es: es casi imposible convertir el archivo bin al lenguaje C, pero aún es posible convertirlo al ensamblador.

Ingeniería inversa

El trabajo de convertir archivos bin al lenguaje C se llama ingeniería inversa en un sentido profesional. Para decirlo sin rodeos, se llama craqueo.

Este tipo de trabajo generalmente se combina profundamente con la plataforma de hardware (como el modelo específico de microcomputadora de un solo chip), y lo contrario será más fácil.

También puede encontrar en Internet algunas empresas que se especializan en ingeniería inversa, generalmente combinada con placas y tarjetas, como placas de copia de PCB, descifrado de chips, etc.

83e64627fefab6d55389e96cae7a0117.png

El agrietamiento del chip no es nada nuevo. Desde que salió el programa (chip), ha habido grietas y la PCB es la misma. Este tipo de cosas no es sorprendente.

De hecho, independientemente de los programas de descifrado o los tableros de copia, en la mayoría de los casos, no vale la pena gastar dinero en productos que se pueden descifrar.f9ad2f5bdeb044e912af718c259a4d0e.png

El principio de convertir archivos bin al lenguaje C.

Si desea comprender si los archivos bin se pueden convertir al lenguaje C, debe comprender sus principios subyacentes.

Le pregunté a Baidu/Google sobre esta pregunta y salieron los resultados, pero no encontré una respuesta satisfactoria y todo era contenido "superficial".

4fb1ed5f69eb275288b59e435e0acd03.png

Entonces, le pregunté a ChatGPT nuevamente y la respuesta que obtuve fue bastante reticente:

El proceso de convertir archivos binarios a código en lenguaje C implica técnicas de desmontaje e ingeniería inversa. Aquí hay una breve explicación:

Desensamblado: los archivos binarios se componen de código de máquina, que son instrucciones que una computadora puede ejecutar directamente. El desmontaje consiste en convertir estos códigos de máquina a su forma de instrucción de ensamblaje correspondiente.

Ingeniería inversa: la ingeniería inversa tiene como objetivo analizar un programa o binario para comprender su función, estructura y comportamiento. En este ejemplo, intentamos deducir el código de lenguaje C correspondiente del archivo binario.

Reconstrucción de símbolos: la reconstrucción de símbolos es una tarea crítica que implica identificar y restaurar el significado y el uso de elementos como funciones, variables y otras estructuras de datos en el archivo binario.

Recuperación del flujo de control: la recuperación del flujo de control significa determinar los saltos y flujos entre varias partes del programa y reconstruir el gráfico de relación de llamada de función en base a esto.

Generación de pseudocódigo: la etapa final generalmente genera una representación similar a C (también conocida como pseudocódigo) para describir la estructura del código fuente y restaurar el programa original con la mayor precisión posible.

Es importante señalar que el proceso no está completamente automatizado y es bastante complejo. Es posible que los resultados no sean precisos ni utilizables directamente, especialmente para archivos binarios complejos. Por lo tanto, en aplicaciones prácticas, la gente suele combinar el análisis manual y la escritura de códigos para realizar una ingeniería inversa más profunda.

f73db5dbd17c8a092b118cf14e42cf53.png

De hecho, creo que los amigos con cierta experiencia entenderán el proceso general: antes de convertir el archivo bin al lenguaje C, primero debe convertirse al ensamblador y luego del ensamblador al lenguaje C.

La dificultad de convertir bin a ensamblador debería ser relativamente baja. Si desea compilar y luego convertir a C, incluso si puede convertir, ¿cuántas personas pueden entender el código C convertido?

¿Cuáles son las herramientas para convertir archivos bin al lenguaje C?

Para entenderlo, también encontré una herramienta para convertir bin a C en Internet:

El archivo bin es un archivo binario y no se puede convertir directamente a código de lenguaje C. Si desea convertirlo en código C legible, debe utilizar una herramienta de ingeniería inversa como IDA Pro, OllyDbg o Radare2.

699bb4351b68b7389891d66592705f95.png

Por cierto, también pregunté sobre ChatGPT:

Existen varias herramientas que pueden convertir archivos binarios (.bin) a código C para ayudarle con el desmontaje o el análisis. A continuación se muestran algunas herramientas de uso común:

IDA Pro: Esta es una plataforma de ingeniería inversa ampliamente utilizada que proporciona potentes capacidades de análisis estático y desmontaje. IDA Pro puede convertir archivos binarios a pseudocódigo C, lo que facilita la comprensión y reconstrucción del código fuente.

Ghidra: este es un marco de ingeniería inversa gratuito desarrollado por la NSA y lanzado en 2019. Ghidra admite la conversión de archivos binarios a código de lenguaje C y es muy poderoso.

Binary Ninja: esta es otra plataforma popular de ingeniería inversa que ofrece funciones como desmontaje avanzado, análisis de flujo de datos y visualización. Binary Ninja también admite la conversión de archivos binarios a representación en lenguaje C.

Tenga en cuenta que todas las herramientas enumeradas anteriormente requieren un cierto nivel de conocimiento técnico para usarlas correctamente y es posible que los resultados no sean completamente precisos o no se puedan utilizar directamente. Por lo tanto, siga las leyes y regulaciones, así como los principios éticos relevantes, y asegúrese de tener licencias legales (si es necesario) antes de manipular información confidencial.

88f091c25e09333484024d9e06aceb8d.png

También intenté utilizar IDA Pro, una plataforma de ingeniería inversa ampliamente utilizada, para verificarlo en la práctica.

eeba719db3e3a370b1eefd39cd2d5112.png

El resultado aproximado es que no es un gran problema convertir el ensamblado (inverso), y es difícil convertirlo al lenguaje C. Incluso si se puede convertir al lenguaje C, es "pseudo-C", porque no se puede. No entiendo ese tipo de lenguaje C.

Por lo tanto, no es necesario transferir proyectos pequeños (como iluminación), pero no se pueden transferir proyectos grandes.

Ok, compartámoslo aquí. Debido al tiempo y la energía limitados, es posible que no sepa lo suficiente y que no tenga razón.

Finalmente, me gustaría preguntarles a todos: ¿alguna vez han realizado ingeniería inversa? Bienvenido a dejar un mensaje para discutir.

------------  FIN  ------------

8a903c97f33fa5e0a3d7f89da2d85f07.gif

●Columna "Herramientas integradas "

●Columna "Desarrollo integrado"

●Columna "Tutorial de Keil"

●Tutoriales seleccionados en la columna incrustada

Preste atención a la cuenta oficial y responda " Jiagroup " para unirse al grupo de intercambio técnico de acuerdo con las reglas, y responda " 1024 " para ver más contenido.

de09757ce40e427726e5f111574ada50.jpeg

14ae2a38f1e6ea7ac79cb6ccf6a22c1c.png

Haga clic en " Leer el texto original " para ver más información compartida.

Supongo que te gusta

Origin blog.csdn.net/ybhuangfugui/article/details/132353174
Recomendado
Clasificación