当前位置:首页 » 编程软件 » 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对应的汇编程序了。

热点内容
linux下ntp服务器搭建 发布:2024-09-08 08:26:46 浏览:742
db2新建数据库 发布:2024-09-08 08:10:19 浏览:171
频率计源码 发布:2024-09-08 07:40:26 浏览:778
奥迪a6哪个配置带后排加热 发布:2024-09-08 07:06:32 浏览:100
linux修改apache端口 发布:2024-09-08 07:05:49 浏览:208
有多少个不同的密码子 发布:2024-09-08 07:00:46 浏览:566
linux搭建mysql服务器配置 发布:2024-09-08 06:50:02 浏览:995
加上www不能访问 发布:2024-09-08 06:39:52 浏览:811
银行支付密码器怎么用 发布:2024-09-08 06:39:52 浏览:513
苹果手机清理浏览器缓存怎么清理缓存 发布:2024-09-08 06:31:32 浏览:554