『壹』 用C語言寫的程序怎麼進行反編譯
c語言寫的程序一般很難反編譯的,即使可以,也不可能得到源碼的。編譯的完成後已經轉化為機器語言了,不是完全可逆的過程
『貳』 用C語言編寫了一個程序,源代碼和工程文件都弄丟了,只剩下.exe的二進製程序文件。怎麼反編譯出.c
這個確實很困難。如果是DOS程序還好辦,如果是Windows程序,其反匯編的工作量相當巨大。而且這僅是反匯編,得到的只是勉強能用的匯編代碼,而從匯編代碼再反工程到.C,真的是件很困難的事。程序簡單還好辦,復雜的就真是件費力的事了。放棄吧。
如果是自己寫的程序,只要整個設計還記得,那就重新寫一遍吧。
『叄』 c語言怎麼反編譯啊,教教我
用ida
pro,這是市面上能買到的軟體中最棒的反向工程軟體。
你可以試試看,它配合插件甚至可以得到幾乎亂真的C/C++偽碼,甚至不用修改就能編譯回去。
『肆』 linux gcc編譯.c文件成為一個可執行文件,怎麼復原.c文件
完全復原基本不可能,只能使用某些工具生成偽C代碼。比如IDA等
『伍』 c語言生成的exe文件還能不能反編譯成源程序
不能!!!!!!
只能人為的翻譯。
沒有這樣的軟體!!!!!!
如果要是能反編譯,這個世界的程序員就全失業了!
『陸』 gcc可以編譯C語言,而GCC又是C語言編寫的,那用c編寫的gcc又是怎麼編譯的呢 就像unix是C寫的那是怎麼編譯的
比如你要開發一個新的c編譯器,你可以用c實現,然後用現在的編譯器去編譯這個新編譯器,反之亦然。
所以這個根源就在於第一個可以使用的編譯器是怎麼來的。你知道最開始程序是怎麼寫的嗎,先用匯編寫出偽代碼,然後再對照表轉換成二進制數據,再以紙袋打孔的方式,輸入進計算機。
『柒』 用gcc編譯器C語言程序的技巧
方法/步驟
1、編寫c代碼,並輸入以下代碼,生成文件hello.c
[root@wahoo
test]#
vim
hello.c
#include
<stdio.h>
#define
DISPLAY
"hello
c!"
int
main(void)
{
printf("%s\n",
DISPLAY
);
return
0;
}
ZZ(說明:ZZ當前文件進行快速保存操作)
2、預編譯(Preprocessing)
會對各種預處理指令(#include
#define
#ifdef
等#開始的代碼行)進行處理,刪除注釋和多餘的空白字元,生成一份新的代碼
[root@wahoo
test]#gcc
-E
hello.c
-o
hello.i
E
參數
通知gcc對目標文件進行預編譯,這里是對文件hello.c文件
o
參數
是對命令輸出結果進行導入操作,這里是把
gcc
-E
hello.c
操作結果輸出到文件hello.i(命名要自定義)中進行保存
這個命令執行完後我們目錄下多了一個文件hello.i,你可以查閱一下文件的內容。
3、編譯(Compilation)
對代碼進行語法、語義分析和錯誤判斷,生成匯編代碼文件
[root@wahoo
test]#gcc
-S
hello.i
-o
hello.s
S
參數
通知gcc對目標文件進行編譯,這里是對文件hello.i文件
通過這一步我們知道
C語言跟匯編的
關系,至於他們之前是如何進行轉換的,大家可以進行更深入的學習與探討。
此時目錄下多了一個hello.s文件,內容如圖
4、匯編(Assembly)
把匯編代碼轉換與計算機可認識的二進制文件,要知道計算機只認識0和1呢
[root@wahoo
test]#gcc
-c
hello.s
-o
hello.o
c
參數
通知gcc對目標文件執行指令轉換操作
此步驟我們得到文件hello.o
大家也同樣打開文件查看一下,這個文件裡面幾乎沒幾個字元大家能看懂,這就對了,但大家可以通過這種方法將其轉化為我們可讀的形式:
[root@wahoo
test]#readelf
-a
hello.o
5、鏈接(Linking/Build)
通俗的講就是把多個*.o文件合並成一個可執行文件,二進制指令文件
[root@wahoo
test]#gcc
hello.o
-o
hello
這里我們就得到了一個可以直接在系統下執行的文件
hello
我們也可以對這個文件進行readelf操作,也可以進行二進制指令轉匯編的操作
[root@wahoo
test]#objmp
-d
hello
6、程序運行
[root@wahoo
test]#./hello
hello
c!
7、總結:gcc
編譯c程序的主要過程包括
預編譯->編譯->匯編->連接
四個過程,每個過程都分別進行不同的處理,了解了這其中的一些原理,對c編程的理解大有益處
『捌』 匯編語言 菜鳥題gcc換寫成C 求高人指點~~~
反編譯成C語言。這幾個都很簡單,基本上是原C語言的編譯而 成。
第一個圖
intfn(inta,intb)
{
return(a+b)*2;
}
第二個圖
inthw3_3(inta)
{
intb;
if(a>0)
b=1;
else
b=0;
returnb;
}
第三個圖
intfn(intn)
{
intm=1;
while(n>1)
{
m*=n;
n-=1;
}
returnm;
}
『玖』 C語言源代碼編譯一次後,就不能再編譯
你用輸出的二進制運行文件覆蓋了源代碼,改成gcc helloworld.c -o helloworld, (去掉後綴)
-o 表示輸出到
『拾』 gcc下怎麼將 .0後綴反編譯成源代碼
那叫反編譯 但是所有的反編譯只能還原為匯編代碼 以描述程序流程
命令是 objmp , 將2進制代碼還原為C/C++代碼的軟體不存在