0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

bin文件转C语言可以做吗?

strongerHuang 来源:strongerHuang 2023-08-17 09:04 次阅读

看到后台有网友留言:bin文件转C语言,谁可以做?

说实话,在我的认知里,bin文件转C语言是不可能的,即便能转,也是那种非常简单的程序,比如:点灯。

之前一直都没认真研究过,今天索性花了一点时间研究了一下。包括百度/谷歌、ChatGPT、下载工具验证等。

我验证的最终结果是:bin文件转C语言,几乎不可能,但转汇编还是有可能。

逆向工程

bin文件转C语言这种工作,专业一点来讲,叫逆向工程。直白一点的说呢,叫破解。

这种工作,一般会深度结合硬件平台(比如单片机具体型号),逆向才会更容易。

网上也能找到一些专门做逆向工程的公司,通常是结合板卡一起做的,比如PCB抄板、芯片解密等。

32f4ce6c-3c94-11ee-ac96-dac502259ad0.png

芯片破解不是什么新鲜事,自程序(芯片)问世,就有破解,还有PCB也是一样,这种事见怪不怪了。

其实,不管破解程序、还是抄板,绝大多数情况下,能破解的产品,其实不值得花这个钱去破解

bin文件转C语言的原理

要想搞明白bin文件能不能转C语言,就要明白一下它们底层的原理。

这个问题,我问了百度/谷歌,出来的结果,没有找到满意的答案,都是一些“敷衍”的内容。

3333c950-3c94-11ee-ac96-dac502259ad0.png

于是,我又问了ChatGPT,得到的答案还算勉强:

将二进制文件转换为C语言代码的过程涉及到反汇编和逆向工程技术。下面是一个简要的解释:

反汇编:二进制文件是由机器码组成的,这些机器码是计算机可以直接执行的指令。

反汇编就是将这些机器码转换回其对应的汇编指令形式。

逆向工程:逆向工程旨在通过分析程序或二进制文件来理解其功能、结构和行为。在本例中,我们试图从二进制文件中推导出相应的C语言代码。 符号重建:符号重建是一项关键任务,它涉及识别并还原出函数、

变量以及其他数据结构等元素在二进制文件中所代表的含义和用法。 控制流恢复:控制流恢复意味着确定程序中各个部分之间的跳转和流程,并以此重新构建函数调用关系图。

伪代码生成:最终阶段通常会生成类似于C语言风格(也称为伪代码)表示形式来描述源代码结构,并尽可能准确地还原原始程序。

需要注意的是,该过程并非完全自动化且非常复杂。结果可能不够精确或无法直接使用,尤其是对于复杂的二进制文件。

因此,在实际应用中,人们通常会结合手动分析和编写代码来进行更深入的逆向工程。

33673d1c-3c94-11ee-ac96-dac502259ad0.png

其实,大体的流程,相信有一定经验的小伙伴都明白:bin文件转C语言之前,肯定是先转汇编,再从汇编到C语言

bin转汇编应该难度相对低一点,要想汇编再转C,即便能转,又有多少人能看懂转出来的C代码呢?

bin文件转C语言有哪些工具?

为了搞明白,我还特意在网上找了一下bin转C的工具:

bin文件是二进制文件,不能直接转换为C语言代码。如果要将其转换为可读的C语言代码,那么您需要使用逆向工程工具,如IDA Pro,OllyDbg或Radare2。

33ced670-3c94-11ee-ac96-dac502259ad0.png

也顺便问了下ChatGPT:

有几个工具可以将二进制(.bin)文件转换为C语言代码,帮助您进行反汇编或分析。

以下是一些常用的工具:

IDA Pro:这是一个广泛使用的逆向工程平台,它提供了强大的反汇编和静态分析功能。IDA Pro可以将二进制文件转换为C语言伪代码,使得理解和重建源代码更加容易。

Ghidra:这是由美国国家安全局开发并于2019年发布的免费逆向工程框架。Ghidra支持将二进制文件转换为C语言代码,并且功能非常强大。

Binary Ninja:这是另一个流行的逆向工程平台,它提供了高级反汇编、数据流分析和可视化等特性。Binary Ninja也支持将二进制文件转换为C语言表示形式。

请注意,以上列出的工具都需要一定水平的技术知识才能正确使用,并且结果可能不完全准确或直接可用。

因此,在处理敏感信息之前,请遵循法律法规以及相关道德准则,并确保拥有合法许可证(如果需要)。

3404dcc0-3c94-11ee-ac96-dac502259ad0.png

我也尝试用了一下 IDA Pro 这个广泛使用的逆向工程平台进实践验证了一下。

3446bdac-3c94-11ee-ac96-dac502259ad0.png

大概得出的结果就是,转(反)汇编问题不大,想要转成C语言,很难,即便能转为C语言,都是“伪C”,是你看不懂那种C语言。

所以,小工程(比如点灯)不用转,大工程转不了。

好了,就分享到这里。因为时间和精力的有限,我了解的可能不是很充分,也不一定对。

最后问问大家,你们有搞过逆向工程吗?欢迎大家留言讨论。






审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6030

    文章

    44498

    浏览量

    632162
  • PCB板
    +关注

    关注

    27

    文章

    1441

    浏览量

    51461
  • C语言
    +关注

    关注

    180

    文章

    7595

    浏览量

    135923
  • BIN文件
    +关注

    关注

    0

    文章

    26

    浏览量

    8258

原文标题:bin文件转C语言,可以吗?

文章出处:【微信号:strongerHuang,微信公众号:strongerHuang】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    C语言-文件编程

    这篇文章介绍C语言文件编程函数,案例代码是在Linux环境下运行测试的分别介绍了C语言标准库的文件
    的头像 发表于 09-09 11:33 1976次阅读

    转换M34508 TXT文件BIN文件

    转换M34508 TXT文件BIN文件-TXT To BIN For Renesas M34508
    发表于 12-27 18:32 106次下载

    HEXBIN的小软件(附源程序代码)

    HEXBIN的小软件(附源程序代码) :在项目开发过程中,有时候软件编译生成的HEX文件会比较大,这样的话就得考虑存储空间比较大的控制器,那样会增加成本,BIN
    发表于 09-13 15:31 326次下载

    图片C语言工具bin2c.exe

    电子发烧友网站提供《图片C语言工具bin2c.exe.rar》资料免费下载
    发表于 06-05 09:00 22次下载

    C语言教程之矩阵的

    C语言教程之矩阵的置,很好的C语言资料,快来学习吧。
    发表于 04-25 15:41 0次下载

    MDk如何生成bin文件

    介绍了MDk生成bin文件的详细过程。
    发表于 11-02 17:20 1次下载

    MDK -ARM如何生产Bin文件

    MDK-ARM如何生产Bin文件
    的头像 发表于 03-14 10:59 3285次阅读
    MDK -ARM如何生产<b class='flag-5'>Bin</b><b class='flag-5'>文件</b>

    C语言文件是做什么的

    c语言程序代码文件扩展名只能是.c或者.h,换句话说,c语言程序代码只能在扩展名为.
    的头像 发表于 02-13 15:29 9360次阅读

    如何用Keil生成bin、汇编、C与汇编混合文件

    嵌入式最为直接的固件,同样也是我们非常需要获得的文件,比如进行远程升级等等,一方面可以直接通过其他hexbin工具转化,另一方面通过集成开发环境自带的功能进行转化即可。 同样有时候我
    的头像 发表于 03-09 13:59 4972次阅读
    如何用Keil生成<b class='flag-5'>bin</b>、汇编、<b class='flag-5'>C</b>与汇编混合<b class='flag-5'>文件</b>?

    BIN或.ASM文件转换成C文件常见步骤

    足够的了解。 通常的操作都是: 第一步:先进行解密,提供二进制代码BIN文件。 第二步:将BIN文件转成反汇编文件,汇编
    的头像 发表于 12-07 10:29 9818次阅读

    Keil开发环境如何生成BIN文件

    作者:王超首发:电子电路开发学习为什么需要BIN文件呢?有些烧录器只支持BIN文件。进行OTA远程升级时,只能使用BIN
    发表于 01-26 19:29 6次下载
    Keil开发环境如何生成<b class='flag-5'>BIN</b><b class='flag-5'>文件</b>

    用于量产烧录的拼接Bin文件操作

    一般芯片开发过程中,存在Bin 文件的拼接过程,比如在做IAP 程序+用户程序过程中,最终烧写bin 文件或hex 文件需要将两个或者三个单
    发表于 11-21 15:07 5次下载

    常用的BIN文件操作总结

    BIN文件,即二进制文件,广泛应用于嵌入式,我们常用的Firmware通常会以BIN文件或者HEX文件
    的头像 发表于 02-28 14:34 4.7w次阅读
    常用的<b class='flag-5'>BIN</b><b class='flag-5'>文件</b>操作总结

    浅析HEX和BIN文件

    BIN文件是单纯的二进制程序文件,内部没有地址信息。如果使用BIN文件烧录程序时,需要指定下载地址。
    的头像 发表于 04-24 17:32 5094次阅读
    浅析HEX和<b class='flag-5'>BIN</b><b class='flag-5'>文件</b>

    keil如何生成bin文件

    Keil是一种集成开发环境(IDE),专为ARM架构的嵌入式系统开发而设计。在Keil中生成bin文件是将代码编译并转换为可执行文件的过程。本文将详细介绍Keil生成bin
    的头像 发表于 12-15 13:43 1.1w次阅读