當前位置:首頁 » 編程語言 » c語言反匯編有多餘代碼
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言反匯編有多餘代碼

發布時間: 2022-07-12 13:13:13

① 為什麼就一兩行的c語言程序,反匯編出來都是一大堆

很多啊,比如int a = add(b, c, d, e, f),就會變成:
push f
push e
push d
push c
push b
call add
pop b
pop c
pop d
pop e
pop f
ret
要進棧、調用、累加、出棧、返回,你一句話計算機忙半天呢,一共才幾個寄存器可以用啊,你以為呢?

② C語言寫的程序 怎麼反匯編成匯編語言

在keilc中,單片機的C語言程序可以再DEBUG模式中得到對應的匯編程序。步驟如下:

1、建立工程,導入C文件代碼,編譯生成hex文件。

3、點擊View--Disassembly Window調出匯編窗口,如上圖。

通過以上步驟就可以看到與C對應的匯編程序了。

③ 將C語言代碼轉換成匯編語言,求幫忙,建議用反匯編軟體的就不要來了,我試過,那個代碼太多,不實用

說一下我自己的理解。

(1)編譯的過程和反編譯的過程是相反的。

編譯的過程一般是高級語言(如C語言)——》中間語言(只出現在編譯過程中)——》匯編語言——》可執行的二進制代碼

反編譯就是從可執行的二進制代碼開始,反著來。二進制代碼反編譯後一般也就是到匯編而已,通常情況下很難進一步往回反。

(2)分析一下幾種語言的情況

①VC的程序
VC的程序反編譯到匯編代碼沒有問題

②Java的程序
對於.class文件可以反編譯到.java,也沒有問題

③.net的程序
.net中的dll文件可以反編譯到VB.net或者C#,也沒有問題

反編譯中用到的具體軟體沒有給出,可以比較容易地從網上搜索到。

④ ARM匯編語言將C語言反匯編

使用KEIL C。在編譯之後會生成一個.src的文件,打開這個文件就是匯編代碼,將代碼中的注釋去掉。。。

⑤ 什麼軟體能將C語言的執行文件反匯編為匯編源代碼

可以使用Linux下的objmp命令來反匯編。
常用命令:
objmp -x obj:以某種分類信息的形式把目標文件的數據組成輸出;<可查到該文件的的所有動態庫>
objmp -t obj:輸出目標文件的符號表
objmp -h obj:輸出目標文件的所有段概括
objmp -j ./text/.data -S obj:輸出指定段的信息(反匯編源代碼)
objmp -S obj:輸出目標文件的符號表,當gcc -g時列印更明顯
objmp -j .text -Sl stack1 | more
-S 盡可能反匯編出源代碼,尤其當編譯的時候指定了-g這種調試參數時,效果比較明顯。隱含了-d參數。
-l 用文件名和行號標注相應的目標代碼,僅僅和-d、-D或者-r一起使用
使用-ld和使用-d的區別不是很大,在源碼級調試的時候有用,要求編譯時使用了-g之類的調試編譯選項。
-j name 僅僅顯示指定section的信息

⑥ 一段C語言 反匯編代碼,要求詳解每句含義

and $0xfffffff0,%esp 將esp和16進制的fffffff0進行與運算,
cmp $0xfffff000,%eax 將fffff000減去eax,但只改變標志位,而不影響兩個數的大小,一般CMP指令後面會跟一個跳轉指令,也可以說CMP指令是比較指令
neg %ebx 求EBX相反數的補碼
nop指令的機器碼是90,也就是空指令,不起作用的,sub $0x8,%esp這條指令是用於平衡堆棧的,如樓上所說,你可以當它是空氣..有些匯編代碼不用刻意去看懂,掃一眼知道是干什麼用的就行了,有的就得仔細推敲它的含意和它起的作用

⑦ C語言源程序反匯編

對了,你用Keil C51來生成了.HEX文件後可以將其反匯編成匯編源程序

⑧ 編程反匯編C語言的問題...分不是問題

  1. 一般可以通過PEID等查一個未加殼程序的編程語言

  2. 當然也可以通過查殼工具判斷一些殼的種類

  3. 反匯編的工具有很多,OD是現在比較常用的,一般動態用OD,靜態用IDA,還有W32DASM、DEBUG、C32這些工具

  4. 當我們在C語言中聲明了一個char *ch指針,然後他會分配內存給字元串常量abcdef(它們有地方放著了),

之後才會把那個字元串的第一個字元a的地址賦值給指針變數ch。所以可以給它賦值
啦,這時ch就指向字元串的首地址,就可以在程序中用了。

⑨ 誰能將下列反匯編的代碼給用C語言寫出來,謝謝,高分

你這是IDA的偽代碼,看起來像一段加密程序,如果沒人能夠幫你逆向出來的話,你可以試著在C語言中將匯編語句內嵌。

__asm
{
......
}

⑩ c語言反匯編代碼解釋

a1是你定義的變數,char類型,佔1個位元組,所以byte ptr, [a1]就是取出a1的內容

連起來就是,以一個位元組的方式取出[a1]的內容

至於為什麼是a1, 這個是vc為了好觀察才這么做的,如果你拿ollydbg看的話,那麼只會是

mov byte ptr [ebp-XX], 61h