當前位置:首頁 » 編程軟體 » c語言反編譯例子

c語言反編譯例子

發布時間: 2023-12-08 16:05:06

❶ 誰能幫我把一個hex文件反編譯c語言文件

文件有兩種,一種是文本文件,一種是程序二進制文件,不管哪種文件都可以用十六進制編碼來顯示,稱為hex文件。


1、文本Hex文件一般不需要轉成C語言,更多的是程序二進制文件,用十六進制顯示,可以轉換成C語言,一般使用相應的反匯編程序來實現,這方面的工具很多,不同的平台略有不同。Windows平台一般常用的OllyDbg、Windbg、IDA,Linux平台使用最多的是GDB和Linux版的IDA。


OllyDbg,簡稱OD,一般是軟體逆向工程愛好者,最先使用的一個工具,但是因為當下不在更新,所以一般用一般用於學習使用,下圖中左上角的區域即為反匯編區域 ,用戶可以根據匯編指令,分析程序演算法,然後自己編寫代碼。

通過這個實例 ,相信應該能理解一個大致的流程啦。

❷ c語言生成的exe文件還能不能反編譯成源程序

不能!!!!!!
只能人為的翻譯。

沒有這樣的軟體!!!!!!

如果要是能反編譯,這個世界的程序員就全失業了!

❸ c語言的反編譯問題

反編譯源碼——不可能——因為你的變數名全被舍棄,在編譯時變成地址代碼了。

❹ 用C語言編寫了一個程序,源代碼和工程文件都弄丟了,只剩下.exe的二進製程序文件。怎麼反編譯出.c

這個確實很困難。如果是DOS程序還好辦,如果是Windows程序,其反匯編的工作量相當巨大。而且這僅是反匯編,得到的只是勉強能用的匯編代碼,而從匯編代碼再反工程到.C,真的是件很困難的事。程序簡單還好辦,復雜的就真是件費力的事了。放棄吧。

如果是自己寫的程序,只要整個設計還記得,那就重新寫一遍吧。

❺ 用C語言編寫哈夫曼的編碼能進行英文的的翻譯和反編譯 求注釋詳細 好用來學習

要求是相同的,不相同的地方就是涉及輸入的地方,這個相信你可以自己解決的吧,



#include<stdlib.h>

#include<stdio.h>

#include<string.h>

#include<conio.h>

typedef struct

{

int weight;

int parent;

int left;

int right;

}hfmt;

typedef char*hfmcode;

void selectnode(hfmt *ht,int n,int *bt1,int *bt2)

{

int i;

hfmt *ht1,*ht2,*t;

ht1=ht2=NULL;

for(i=1;i<n+1;i++)

{

if(!ht[i].parent)

{

if(ht1==NULL)

{

ht1=ht+i;

continue;

}

if(ht2==NULL)

{

ht2=ht+i;

if(ht1->weight>ht2->weight)

{

t=ht2;

ht2=ht1;

ht1=t;

}

continue;

}

if(ht1&&ht2)

{

if(ht[i].weight<=ht1->weight)

{

ht2=ht1;

ht1=ht+i;

}

else if (ht[i].weight>ht1->weight)

{

ht2=ht+i;

}

}

}

}

if(ht1>ht2){

*bt2=ht1-ht;

*bt1=ht2-ht;

}

else{

*bt1=ht1-ht;

*bt2=ht2-ht;

}

}

void createtree(hfmt *ht,int n,int *w)

{

int i,m=2*n-1,bt1,bt2;

if(n<=1)return;

for(i=1;i<=n;++i)

{

ht[i].weight=w[i-1];

ht[i].parent=0;

ht[i].left=0;

ht[i].right=0;

}

for(;i<=m;i++)

{

ht[i].weight=0;

ht[i].parent=0;

ht[i].left=0;

ht[i].right=0;

}

for(i=n+1;i<=m;i++)

{

selectnode(ht,i-1,&bt1,&bt2);

ht[bt1].parent=i;

ht[bt2].parent=i;

ht[i].left=bt1;

ht[i].right=bt2;

ht[i].weight=ht[bt1].weight=ht[bt2].weight;

}

}


void hfmcoding(hfmt *ht,int n,hfmcode *hc)

{

char*cd;

int start ,i;

int current,parent;

cd=(char*)malloc(sizeof(char)*n);

cd[n-1]='';

for(i=1;i<=n;i++)

{

start=n-1;

current=i;

parent=ht[current].parent;

while(parent)

{

if(current==ht[parent].left)

cd[--start]='0';

else

cd[--start]='1';

current=parent;

parent=ht[parent].parent;

}

hc[i-1]=(char*)malloc(sizeof(char)*(n-start));

strcpy(hc[i-1],&cd[start]);

}

free(cd);

}

void insert(hfmcode *hc,char*alphabet,char*str,char*code)

{

int len=0,i=0,j;

code[0]='';

while(str[i])

{

j=0;

while(alphabet[j]!=str[i])

j++;

strcpy(code+len,hc[j]);

len=len+strlen(hc[j]);

i++;

}

code[len]='';

}

void delete_(hfmt*ht,int m,char*code,char*alphabet,char*decode)

{

int position=0,i,j=0;

m=2*m-1;

while(code[position])

{

for(i=m;ht[i].left&&ht[i].right;position++)

{

if(code[position]=='0')

i=ht[i].left;

else

i=ht[i].right;

}

decode[j]=alphabet[i-1];

j++;

}

decode[j]='';

}

int main()

{

int i,n=4,m;

char test[]="DBDABCDABBCDBADCBDBCDBCDAB";

char code[100],code1[100];

char alphabet[]={'A','B','C','D'};

int w[]={4,9,5,8};

hfmt *ht;

hfmcode *hc;

m=2*n-1;

ht=(hfmt*)malloc((m+1)*sizeof(hfmt));

if(!ht)

{

printf("內存分配失敗 ");

exit(0);

}

hc=(hfmcode*)malloc(n*sizeof(char*));

if(!hc)

{

printf("內存分配失敗 ");

exit(0);

}

createtree(ht,n,w);

hfmcoding(ht,n,hc);

for(i=1;i<=n;i++)

printf("字母:%c,權重:%d,編碼為 %s ",alphabet[i-1],ht[i].weight,hc[i-1]);

insert(hc,alphabet,test,code);

printf(" 字元串: %s 轉換後為: %s ",test,code);

delete_(ht,n,code,alphabet,code1);

printf(" 編碼: %s 轉換後為: %s ",code,code1);

getch();

return 0;

}

❻ 反編譯是什麼意思

反編譯做的就是編譯的相反動作。舉例來說,例如一個程序用C語言來寫,寫完之後要編譯成CPU可以識別和運行的機器代碼,也就是生成EXE程序。而反編譯是反過來,把EXE反編譯成編程源代碼,也就是C程序,不過一般反編譯大多數都是從機器碼反編譯為匯編。其他語言的情況基本也是這樣的。至於具體要怎麼用,這個就看你的目的了。但一般情況下是通過反編譯主要是用於沒有源碼的程序的分析,例如破解別人的軟體等。

❼ c++編寫的exe文件怎麼反編譯成源代碼

1、點擊「開始」菜單——選擇「運行」。

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

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

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

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

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

熱點內容
數據模型於資料庫系統 發布:2024-07-27 09:59:56 瀏覽:849
網站ip訪問量 發布:2024-07-27 09:59:55 瀏覽:286
java字元串字元數組 發布:2024-07-27 09:59:13 瀏覽:593
如何利用無線網路搭建伺服器 發布:2024-07-27 09:59:05 瀏覽:721
it天空解壓密碼 發布:2024-07-27 09:50:39 瀏覽:549
軟體腳本買賣 發布:2024-07-27 09:50:38 瀏覽:917
android對象轉json 發布:2024-07-27 09:50:15 瀏覽:183
安卓平板有什麼可以畫對稱的 發布:2024-07-27 09:36:03 瀏覽:133
羊創意腳本 發布:2024-07-27 09:29:30 瀏覽:895
榮耀v20升級存儲 發布:2024-07-27 09:20:19 瀏覽:486