当前位置:首页 » 编程语言 » 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