欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
怎么吧hex文件轉換成c文件啊
[打印本頁]
作者:
2728999742
時間:
2023-6-20 22:45
標題:
怎么吧hex文件轉換成c文件啊
如題
作者:
Hephaestus
時間:
2023-6-21 07:08
轉不了,別想了。等什么時候實現sh1t2rice轉換再說吧。
作者:
coody_sz
時間:
2023-6-21 09:47
問問人工智能
作者:
npn
時間:
2023-6-21 10:22
hex反匯編再反C,網上搜一下有沒有大神會搞,人工翻譯沒有免費的。
作者:
axjuan
時間:
2023-6-21 13:40
呃 一般別人的HEX才需要反成C啊,,,,大兄弟你干了啥,,,
作者:
rayin
時間:
2023-6-21 14:05
hex文件在不知道是51還是ARM或是其他什么單片機型號下, 你是沒辦法還原為c的. 以后人工智能高度發達了,或許有可能.
作者:
Angle145
時間:
2023-6-21 15:09
npn 發表于 2023-6-21 10:22
hex反匯編再反C,網上搜一下有沒有大神會搞,人工翻譯沒有免費的。
看碟下菜,起步2W米
作者:
fishafish
時間:
2023-6-21 15:15
這么多年了,沒有聽說有成功轉換的
作者:
王純正
時間:
2023-6-21 15:34
目前應該還沒有這個功能
作者:
@99
時間:
2023-6-21 16:10
1、你應該是嵌入式開發中已經編譯成.hex的文件吧,這個hex文件基本上可以理解為windows中的.exe,你要是反編譯匯編。
2、還能看出點門道,返回C,我在微軟的操作系統下從來沒比較滿意的做成功過。
3、何況你還是在單片機中。
作者:
angmall
時間:
2023-6-21 19:15
要將51單片機的hex文件轉換為C文件,需要先將hex文件進行反匯編,然后再進行反匯編代碼到C代碼的轉換。以下是一種常見的方法:
1.使用8051反匯編器:使用適合的8051反匯編工具,如單片機智能反編譯軟件,IDA Pro、Ghidra等,將hex文件進行反匯編。Ghidra是一個廣泛使用的開源工具,它可以將8051的機器碼反匯編為匯編代碼。
2.反匯編:使用適當的命令或選項,將hex文件輸入反匯編工具。這將生成反匯編代碼,其中包含了8051芯片的匯編指令和程序的結構。
3.分析反匯編代碼:仔細分析反匯編代碼,了解程序的結構、邏輯和功能。這是將反匯編代碼轉換為C代碼的基礎。
4.根據匯編代碼編寫C代碼:根據分析的反匯編代碼,手動編寫對應的C代碼。這需要熟悉8051匯編語言和C語言,并理解程序的功能和算法。
5.重建程序結構:根據反匯編代碼中的分支、循環和函數調用等信息,重建程序的結構。這包括編寫相應的條件語句、循環語句和函數。
6.重新命名變量和函數:根據反匯編代碼的上下文和功能,為變量和函數命名,使代碼更具可讀性和可維護性。
請注意,將匯編代碼轉換為等效的C代碼是一項復雜的任務,因為在編譯過程中會丟失某些信息,如原始變量名、類型信息等。因此,轉換后的C代碼可能不會完全還原原始代碼,并且可能需要進一步的手動調整和優化。
同時,請確保你有權進行這樣的操作或者你在合法和道德的范圍內進行轉換。注意,根據您的具體情況,可能還需要使用其他反匯編工具或轉換器,具體取決于您的要求和可用的工具。
作者:
chxelc
時間:
2023-6-23 09:36
這個真不行,就算強行轉換成功也不保證能夠使用。
作者:
玲瓏紅豆
時間:
2023-6-24 21:13
生成機器的十六進制語言,本質上是C語言到匯編到機器語言,反過來就需要反過來編譯,需要理解每個轉換步驟的語言,需要研究底層的機器語言,好像沒有軟件可以反過來。
作者:
cnos
時間:
2023-6-25 10:09
信息的可逆性?
我很多個寫法做出來編譯后可能得到的HEX是一樣的,你怎么可能反編譯回去呢?
比如同一個C文件我把變量名改改,編譯出來的結果不會改變,所以反編譯是不可能的,只能梳理程序執行的流程和結構,手動重寫C,這比正向開發難多了。
作者:
angmall
時間:
2023-6-25 11:31
coody_sz 發表于 2023-6-21 09:47
問問人工智能
人工智能 給出來的答案。
將MCS-51 8051的hex文件轉換成C文件
:0B002300EF1FAC0670011E4C70F622AF
:10000300C2A07F507EC3120023D2A07F507EC312B2
:04001300002380EC5A
:03000000020017E4
:0C001700787FE4F6D8FD75810702000335
:00000001FF
反匯編 編譯
;標號==============指令================================地址===機器碼=======
;==========================================================================
Q0000: LJMP Q0017 ;0000 02 00 17
;==========================================================================
Q0003: CLR P2.0 ;0003 C2 A0
MOV R7,#50H ;0005 7F 50
MOV R6,#0C3H ;0007 7E C3
LCALL Q0023 ;0009 12 00 23
SETB P2.0 ;000C D2 A0
MOV R7,#50H ;000E 7F 50
MOV R6,#0C3H ;0010 7E C3
LCALL Q0023 ;0012 12 00 23
SJMP Q0003 ;0015 80 EC
Q0017: MOV R0,#7FH ;0017 78 7F
CLR A ;0019 E4
Q001A: MOV @R0,A ;001A F6
DJNZ R0,Q001A ;001B D8 FD
MOV SP,#07H ;001D 75 81 07
LJMP Q0003 ;0020 02 00 03
;==========================================================================
Q0023: MOV A,R7 ;0023 EF
DEC R7 ;0024 1F
MOV R4,06H ;0025 AC 06
JNZ Q002A ;0027 70 01
DEC R6 ;0029 1E
Q002A: ORL A,R4 ;002A 4C
JNZ Q0023 ;002B 70 F6
RET ;002D 22
;==========================================================================
要將MCS-51 8051的HEX文件轉換為C文件,你可以按照以下步驟進行手動轉換:
1.創建一個新的C文件(例如example.c)來保存轉換后的代碼。
2.打開HEX文件,并查看每一行的指令和地址。
3.解析hex文件:打開hex文件,讀取每一行的數據。每一行通常以冒號(:)開頭,后面是一系列的16進制數字,代表指令、數據和校驗等信息。
4.將每一行指令轉換為等效的C語句,并按地址順序將它們寫入到example.c文件中。
以下是一個示例轉換的過程:
#include <8051.h> // 根據你的8051型號和編譯器選擇正確的頭文件
void main() {
Q0000:
// LJMP Q0017 (地址:0000,機器碼:02 00 17)
goto Q0017;
Q0003:
// CLR P2.0 (地址:0003,機器碼:C2 A0)
P2_0 = 0;
// MOV R7,#50H (地址:0005,機器碼:7F 50)
R7 = 0x50;
// MOV R6,#0C3H (地址:0007,機器碼:7E C3)
R6 = 0xC3;
// LCALL Q0023 (地址:0009,機器碼:12 00 23)
Q0023();
// SETB P2.0 (地址:000C,機器碼:D2 A0)
P2_0 = 1;
// MOV R7,#50H (地址:000E,機器碼:7F 50)
R7 = 0x50;
// MOV R6,#0C3H (地址:0010,機器碼:7E C3)
R6 = 0xC3;
// LCALL Q0023 (地址:0012,機器碼:12 00 23)
Q0023();
// SJMP Q0003 (地址:0015,機器碼:80 EC)
goto Q0003;
Q0017:
// MOV R0,#7FH (地址:0017,機器碼:78 7F)
R0 = 0x7F;
// CLR A (地址:0019,機器碼:E4)
A = 0;
Q001A:
// MOV @R0,A (地址:001A,機器碼:F6)
*R0 = A;
// DJNZ R0,Q001A (地址:001B,機器碼:D8 FD)
if (--R0 != 0) {
goto Q001A;
}
// MOV SP,#07H (地址:001D,機器碼:75 81 07)
SP = 0x07;
// LJMP Q0003 (地址:0020,機器碼:02 00 03)
goto Q0003;
}
void Q0023() {
// MOV A,R7 (地址:0023,機器碼:EF)
A = R7;
// DEC R7 (地址:0024,機器碼:1F)
R7--;
// MOV R4,06H (地址:0025,機器碼:AC 06)
R4 = 0x06;
// JNZ Q002A (地址:0027,機器碼:70 01)
if (R7 != 0) {
goto Q002A;
}
// DEC R6 (地址:0029,機器碼:1E)
R6--;
Q002A:
// ORL A,R4 (地址:002A,機器碼:4C)
A |= R4;
// JNZ Q0023 (地址:002B,機器碼:70 F6)
if (A != 0) {
goto Q0023;
}
// RET (地址:002D,機器碼:22)
return;
}
注意,上述代碼只是根據你提供的HEX文件進行的大致轉換,具體轉換的結果可能因8051芯片型號、編譯器和編程環境的不同而有所不同。在實際轉換過程中,你可能需要根據你的具體情況進行調整和優化。同時,根據HEX文件提供的信息,你需要手動添加初始化和其他邏輯來完整地重現原始程序的功能。
原本的程序。
/**************************************************************************************
* LED閃爍實驗 *
實現現象:下載程序后D1指示燈閃爍
注意事項:無
***************************************************************************************/
#include "reg52.h" //此文件中定義了單片機的一些特殊功能寄存器
typedef unsigned int u16; //對數據類型進行聲明定義
typedef unsigned char u8;
sbit led=P2^0; //將單片機的P2.0端口定義為led
/*******************************************************************************
* 函 數 名 : delay
* 函數功能 : 延時函數,i=1時,大約延時10us
*******************************************************************************/
void delay(u16 i)
{
while(i--);
}
/*******************************************************************************
* 函 數 名 : main
* 函數功能 : 主函數
* 輸 入 : 無
* 輸 出 : 無
*******************************************************************************/
void main()
{
while(1)
{
led=0;
delay(50000); //大約延時450ms
led=1;
delay(50000); //大約延時450ms
}
}
作者:
Longan.Wang
時間:
2023-6-26 14:22
HEX到匯編是可行的,再到C,哈哈!還不如知道功能了,重寫!!!!
作者:
小楓啊
時間:
2023-6-26 14:40
不好實現,應該轉不了
作者:
張力力
時間:
2023-6-26 15:22
轉換不了,所采用的原理不一樣,格式不一樣。
作者:
mrLizz
時間:
2023-6-26 20:08
根據匯編重寫C還有的一說吧。直接轉夠嗆
作者:
wmk1094
時間:
2023-6-27 09:55
目前沒有這個能力
作者:
aiwonidong
時間:
2023-6-29 08:28
這個就算是能轉換,確定格式能用嗎?
作者:
aayon1979
時間:
2023-6-29 11:16
轉不了的
作者:
dj3365191
時間:
2023-6-29 11:55
如果能夠反編譯成功,那人人都是盜版高手
作者:
univers
時間:
2023-6-29 11:56
反C,就象OD一樣,把EXE變成匯編語言。
作者:
2398513605
時間:
2024-2-4 20:30
PDF怎么轉HEX
作者:
man1234567
時間:
2024-2-5 08:20
給你一本莎士比亞全集,你能譯出英文原版么,呵呵
作者:
TTQ001
時間:
2024-2-5 09:29
逆向工程可以根據不同的硬件平臺將hex文件轉換為匯編代碼。 將十六進制轉換為 C 代碼并不容易。
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1