从最简单的程序剖析objdump反汇编指令

本文通过一个最简单的C程序,利用objdump工具进行反汇编分析,探讨.init、.plt、.text等段的作用,以及初始化、判断、循环和函数调用在反汇编指令中的体现。提供实验步骤,帮助理解反汇编在异常程序排查中的应用。
摘要由CSDN通过智能技术生成

        因近期工作需要,需要利用objdump工具剖析程序指定可执行程序,以检查错误函数(语句)。

        objdump命令参考:https://blog.csdn.net/zoomdy/article/details/50563680


        本文以最简单的程序开始,剖析反汇编之后的程序最小执行系统以及初始化、判断语句、循环语句以及函数及其调用过程在反汇编指令集中的形式,方便在工作过程中的异常程序中寻找异常地址。

        文件组成:

        最简文件组成:main.c Makefile

        Makefile代码:

TRGET = main.out

all: clean $(TRGET)

$(TRGET):main.o
	cc main.o -o $(TRGET) 
main.o:

clean:
	rm -f *.o;rm -f *.out

        编辑方式:以挂载的方式挂载到linux系统上,编辑在Window上的NotePad++

        从最简程序开始:(这是我能想到最简单的程序了)

#include <stdio.h>

int main()
{
	return 0;
}

        反汇编指令:

        objdump -C -S main.out > objdump_main_00.txt

        反汇编结果:

main.out:     file format elf32-i386

Disassembly of section .init:

08048254 <_init>:
 8048254:	55                   	push   %ebp
 8048255:	89 e5                	mov    %esp,%ebp
 8048257:	83 ec 08             	sub    $0x8,%esp
 804825a:	e8 51 00 00 00       	call   80482b0 <call_gmon_start>
 804825f:	e8 a4 00 00 00       	call   8048308 <frame_dummy>
 8048264:	e8 87 01 00 00       	call   80483f0 <__do_global_ctors_aux>
 8048269:	c9                   	leave  
 804826a:	c3                   	ret    
Disassembly of section .plt:

0804826c <__libc_start_main@plt-0x10>:
 804826c:	ff 35 20 95 04 08    	pushl  0x8049520
 8048272:	ff 25 24 95 04 08    	jmp    *0x8049524
 8048278:	00 00                	add    %al,(%eax)
	...

0804827c <__libc_start_main@plt>:
 804827c:	ff 25 28 95 04 08    	jmp    *0x8049528
 8048282:	68 00 00 00 00       	push   $0x0
 8048287:	e9 e0 ff ff ff       	jmp    804826c <_init+0x18>
Disassembly of section .text:

0804828c <_start>:
 804828c:	31 ed                	xor    %ebp,%ebp
 804828e:	5e                   	pop    %esi
 804828f:	89 e1                	mov    %esp,%ecx
 8048291:	83 e4 f0             	and    $0xfffffff0,%esp
 8048294:	50                   	push   %eax
 8048295:	54                   	push   %esp
 8048296:	52                   	push   %edx
 8048297:	68 ac 83 04 08       
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值