0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

bin文件轉(zhuǎn)C語(yǔ)言可以做嗎?

strongerHuang ? 來(lái)源:strongerHuang ? 2023-08-17 09:04 ? 次閱讀

看到后臺(tái)有網(wǎng)友留言:bin文件轉(zhuǎn)C語(yǔ)言,誰(shuí)可以做?

說(shuō)實(shí)話,在我的認(rèn)知里,bin文件轉(zhuǎn)C語(yǔ)言是不可能的,即便能轉(zhuǎn),也是那種非常簡(jiǎn)單的程序,比如:點(diǎn)燈。

之前一直都沒(méi)認(rèn)真研究過(guò),今天索性花了一點(diǎn)時(shí)間研究了一下。包括百度/谷歌、ChatGPT、下載工具驗(yàn)證等。

我驗(yàn)證的最終結(jié)果是:bin文件轉(zhuǎn)C語(yǔ)言,幾乎不可能,但轉(zhuǎn)匯編還是有可能。

逆向工程

bin文件轉(zhuǎn)C語(yǔ)言這種工作,專(zhuān)業(yè)一點(diǎn)來(lái)講,叫逆向工程。直白一點(diǎn)的說(shuō)呢,叫破解。

這種工作,一般會(huì)深度結(jié)合硬件平臺(tái)(比如單片機(jī)具體型號(hào)),逆向才會(huì)更容易。

網(wǎng)上也能找到一些專(zhuān)門(mén)做逆向工程的公司,通常是結(jié)合板卡一起做的,比如PCB抄板、芯片解密等。

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

芯片破解不是什么新鮮事,自程序(芯片)問(wèn)世,就有破解,還有PCB也是一樣,這種事見(jiàn)怪不怪了。

其實(shí),不管破解程序、還是抄板,絕大多數(shù)情況下,能破解的產(chǎn)品,其實(shí)不值得花這個(gè)錢(qián)去破解

bin文件轉(zhuǎn)C語(yǔ)言的原理

要想搞明白bin文件能不能轉(zhuǎn)C語(yǔ)言,就要明白一下它們底層的原理。

這個(gè)問(wèn)題,我問(wèn)了百度/谷歌,出來(lái)的結(jié)果,沒(méi)有找到滿意的答案,都是一些“敷衍”的內(nèi)容。

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

于是,我又問(wèn)了ChatGPT,得到的答案還算勉強(qiáng):

將二進(jìn)制文件轉(zhuǎn)換為C語(yǔ)言代碼的過(guò)程涉及到反匯編和逆向工程技術(shù)。下面是一個(gè)簡(jiǎn)要的解釋?zhuān)?br />
反匯編:二進(jìn)制文件是由機(jī)器碼組成的,這些機(jī)器碼是計(jì)算機(jī)可以直接執(zhí)行的指令。

反匯編就是將這些機(jī)器碼轉(zhuǎn)換回其對(duì)應(yīng)的匯編指令形式。

逆向工程:逆向工程旨在通過(guò)分析程序或二進(jìn)制文件來(lái)理解其功能、結(jié)構(gòu)和行為。在本例中,我們?cè)噲D從二進(jìn)制文件中推導(dǎo)出相應(yīng)的C語(yǔ)言代碼。 符號(hào)重建:符號(hào)重建是一項(xiàng)關(guān)鍵任務(wù),它涉及識(shí)別并還原出函數(shù)、

變量以及其他數(shù)據(jù)結(jié)構(gòu)等元素在二進(jìn)制文件中所代表的含義和用法。 控制流恢復(fù):控制流恢復(fù)意味著確定程序中各個(gè)部分之間的跳轉(zhuǎn)和流程,并以此重新構(gòu)建函數(shù)調(diào)用關(guān)系圖。

偽代碼生成:最終階段通常會(huì)生成類(lèi)似于C語(yǔ)言風(fēng)格(也稱(chēng)為偽代碼)表示形式來(lái)描述源代碼結(jié)構(gòu),并盡可能準(zhǔn)確地還原原始程序。

需要注意的是,該過(guò)程并非完全自動(dòng)化且非常復(fù)雜。結(jié)果可能不夠精確或無(wú)法直接使用,尤其是對(duì)于復(fù)雜的二進(jìn)制文件。

因此,在實(shí)際應(yīng)用中,人們通常會(huì)結(jié)合手動(dòng)分析和編寫(xiě)代碼來(lái)進(jìn)行更深入的逆向工程。

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

其實(shí),大體的流程,相信有一定經(jīng)驗(yàn)的小伙伴都明白:bin文件轉(zhuǎn)C語(yǔ)言之前,肯定是先轉(zhuǎn)匯編,再?gòu)膮R編到C語(yǔ)言。

bin轉(zhuǎn)匯編應(yīng)該難度相對(duì)低一點(diǎn),要想?yún)R編再轉(zhuǎn)C,即便能轉(zhuǎn),又有多少人能看懂轉(zhuǎn)出來(lái)的C代碼呢?

bin文件轉(zhuǎn)C語(yǔ)言有哪些工具?

為了搞明白,我還特意在網(wǎng)上找了一下bin轉(zhuǎn)C的工具:

bin文件是二進(jìn)制文件,不能直接轉(zhuǎn)換為C語(yǔ)言代碼。如果要將其轉(zhuǎn)換為可讀的C語(yǔ)言代碼,那么您需要使用逆向工程工具,如IDA Pro,OllyDbg或Radare2。

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

也順便問(wèn)了下ChatGPT:

有幾個(gè)工具可以將二進(jìn)制(.bin)文件轉(zhuǎn)換為C語(yǔ)言代碼,幫助您進(jìn)行反匯編或分析。

以下是一些常用的工具:

IDA Pro:這是一個(gè)廣泛使用的逆向工程平臺(tái),它提供了強(qiáng)大的反匯編和靜態(tài)分析功能。IDA Pro可以將二進(jìn)制文件轉(zhuǎn)換為C語(yǔ)言偽代碼,使得理解和重建源代碼更加容易。

Ghidra:這是由美國(guó)國(guó)家安全局開(kāi)發(fā)并于2019年發(fā)布的免費(fèi)逆向工程框架。Ghidra支持將二進(jìn)制文件轉(zhuǎn)換為C語(yǔ)言代碼,并且功能非常強(qiáng)大。

Binary Ninja:這是另一個(gè)流行的逆向工程平臺(tái),它提供了高級(jí)反匯編、數(shù)據(jù)流分析和可視化等特性。Binary Ninja也支持將二進(jìn)制文件轉(zhuǎn)換為C語(yǔ)言表示形式。

請(qǐng)注意,以上列出的工具都需要一定水平的技術(shù)知識(shí)才能正確使用,并且結(jié)果可能不完全準(zhǔn)確或直接可用。

因此,在處理敏感信息之前,請(qǐng)遵循法律法規(guī)以及相關(guān)道德準(zhǔn)則,并確保擁有合法許可證(如果需要)。

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

我也嘗試用了一下 IDA Pro 這個(gè)廣泛使用的逆向工程平臺(tái)進(jìn)實(shí)踐驗(yàn)證了一下。

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

大概得出的結(jié)果就是,轉(zhuǎn)(反)匯編問(wèn)題不大,想要轉(zhuǎn)成C語(yǔ)言,很難,即便能轉(zhuǎn)為C語(yǔ)言,都是“偽C”,是你看不懂那種C語(yǔ)言。

所以,小工程(比如點(diǎn)燈)不用轉(zhuǎn),大工程轉(zhuǎn)不了。

好了,就分享到這里。因?yàn)闀r(shí)間和精力的有限,我了解的可能不是很充分,也不一定對(duì)。

最后問(wèn)問(wèn)大家,你們有搞過(guò)逆向工程嗎?歡迎大家留言討論。






審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 單片機(jī)
    +關(guān)注

    關(guān)注

    6030

    文章

    44489

    瀏覽量

    631975
  • PCB板
    +關(guān)注

    關(guān)注

    27

    文章

    1441

    瀏覽量

    51456
  • C語(yǔ)言
    +關(guān)注

    關(guān)注

    180

    文章

    7594

    瀏覽量

    135857
  • BIN文件
    +關(guān)注

    關(guān)注

    0

    文章

    26

    瀏覽量

    8257

原文標(biāo)題:bin文件轉(zhuǎn)C語(yǔ)言,可以嗎?

文章出處:【微信號(hào):strongerHuang,微信公眾號(hào):strongerHuang】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    C語(yǔ)言-文件編程

    這篇文章介紹C語(yǔ)言文件編程函數(shù),案例代碼是在Linux環(huán)境下運(yùn)行測(cè)試的分別介紹了C語(yǔ)言標(biāo)準(zhǔn)庫(kù)的文件
    的頭像 發(fā)表于 09-09 11:33 ?1976次閱讀

    轉(zhuǎn)換M34508 TXT文件BIN文件

    轉(zhuǎn)換M34508 TXT文件BIN文件-TXT To BIN For Renesas M34508
    發(fā)表于 12-27 18:32 ?106次下載

    HEX轉(zhuǎn)BIN的小軟件(附源程序代碼)

    HEX轉(zhuǎn)BIN的小軟件(附源程序代碼) :在項(xiàng)目開(kāi)發(fā)過(guò)程中,有時(shí)候軟件編譯生成的HEX文件會(huì)比較大,這樣的話就得考慮存儲(chǔ)空間比較大的控制器,那樣會(huì)增加成本,BIN
    發(fā)表于 09-13 15:31 ?326次下載

    圖片轉(zhuǎn)C語(yǔ)言工具bin2c.exe

    電子發(fā)燒友網(wǎng)站提供《圖片轉(zhuǎn)C語(yǔ)言工具bin2c.exe.rar》資料免費(fèi)下載
    發(fā)表于 06-05 09:00 ?22次下載

    C語(yǔ)言教程之矩陣的轉(zhuǎn)

    C語(yǔ)言教程之矩陣的轉(zhuǎn)置,很好的C語(yǔ)言資料,快來(lái)學(xué)習(xí)吧。
    發(fā)表于 04-25 15:41 ?0次下載

    MDk如何生成bin文件

    介紹了MDk生成bin文件的詳細(xì)過(guò)程。
    發(fā)表于 11-02 17:20 ?1次下載

    bin文件轉(zhuǎn)換為hex文件操作步驟解析

    在做單片機(jī)開(kāi)發(fā)時(shí),用不同的下載工具,要求下載的固件格式也不一樣,有的要求是HEX文件,有的則要求是BIN文件,如果只有一個(gè)BIN文件如何將它
    發(fā)表于 11-14 09:04 ?7.8w次閱讀
    <b class='flag-5'>bin</b><b class='flag-5'>文件</b>轉(zhuǎn)換為hex<b class='flag-5'>文件</b>操作步驟解析

    MDK -ARM如何生產(chǎn)Bin文件

    MDK-ARM如何生產(chǎn)Bin文件
    的頭像 發(fā)表于 03-14 10:59 ?3280次閱讀
    MDK -ARM如何生產(chǎn)<b class='flag-5'>Bin</b><b class='flag-5'>文件</b>

    C語(yǔ)言文件是做什么的

    c語(yǔ)言程序代碼文件擴(kuò)展名只能是.c或者.h,換句話說(shuō),c語(yǔ)言程序代碼只能在擴(kuò)展名為.
    的頭像 發(fā)表于 02-13 15:29 ?9358次閱讀

    BIN或.ASM文件轉(zhuǎn)換成C文件常見(jiàn)步驟

    足夠的了解。 通常的操作都是: 第一步:先進(jìn)行解密,提供二進(jìn)制代碼BIN文件。 第二步:將BIN文件轉(zhuǎn)成反匯編文件,匯編
    的頭像 發(fā)表于 12-07 10:29 ?9795次閱讀

    Keil開(kāi)發(fā)環(huán)境如何生成BIN文件

    作者:王超首發(fā):電子電路開(kāi)發(fā)學(xué)習(xí)為什么需要BIN文件呢?有些燒錄器只支持BIN文件。進(jìn)行OTA遠(yuǎn)程升級(jí)時(shí),只能使用BIN
    發(fā)表于 01-26 19:29 ?6次下載
    Keil開(kāi)發(fā)環(huán)境如何生成<b class='flag-5'>BIN</b><b class='flag-5'>文件</b>

    用于量產(chǎn)燒錄的拼接Bin文件操作

    一般芯片開(kāi)發(fā)過(guò)程中,存在Bin 文件的拼接過(guò)程,比如在做IAP 程序+用戶程序過(guò)程中,最終燒寫(xiě)bin 文件或hex 文件需要將兩個(gè)或者三個(gè)單
    發(fā)表于 11-21 15:07 ?5次下載

    常用的BIN文件操作總結(jié)

    BIN文件,即二進(jìn)制文件,廣泛應(yīng)用于嵌入式,我們常用的Firmware通常會(huì)以BIN文件或者HEX文件
    的頭像 發(fā)表于 02-28 14:34 ?4.6w次閱讀
    常用的<b class='flag-5'>BIN</b><b class='flag-5'>文件</b>操作總結(jié)

    淺析HEX和BIN文件

    BIN文件是單純的二進(jìn)制程序文件,內(nèi)部沒(méi)有地址信息。如果使用BIN文件燒錄程序時(shí),需要指定下載地址。
    的頭像 發(fā)表于 04-24 17:32 ?5061次閱讀
    淺析HEX和<b class='flag-5'>BIN</b><b class='flag-5'>文件</b>

    keil如何生成bin文件

    Keil是一種集成開(kāi)發(fā)環(huán)境(IDE),專(zhuān)為ARM架構(gòu)的嵌入式系統(tǒng)開(kāi)發(fā)而設(shè)計(jì)。在Keil中生成bin文件是將代碼編譯并轉(zhuǎn)換為可執(zhí)行文件的過(guò)程。本文將詳細(xì)介紹Keil生成bin
    的頭像 發(fā)表于 12-15 13:43 ?1.1w次閱讀