反汇编入门

写了一个简单的C语言代码:

#include<stdio.h>
int main()
{
	int a,b,c;
	a=1;
	b=2;
	c=a+b;
	printf("%d",c);
}

使用arm-linux-objdump -d 反汇编

00000000 <main>:
   0:	e92d4800 	push	{fp, lr}
   4:	e28db004 	add	fp, sp, #4
   8:	e24dd010 	sub	sp, sp, #16
   c:	e3a03001 	mov	r3, #1
  10:	e50b3010 	str	r3, [fp, #-16]
  14:	e3a03002 	mov	r3, #2
  18:	e50b300c 	str	r3, [fp, #-12]
  1c:	e51b2010 	ldr	r2, [fp, #-16]
  20:	e51b300c 	ldr	r3, [fp, #-12]
  24:	e0823003 	add	r3, r2, r3
  28:	e50b3008 	str	r3, [fp, #-8]
  2c:	e59f3014 	ldr	r3, [pc, #20]	; 48 <main+0x48>
  30:	e1a00003 	mov	r0, r3
  34:	e51b1008 	ldr	r1, [fp, #-8]
  38:	ebfffffe 	bl	0 <printf>
  3c:	e24bd004 	sub	sp, fp, #4
  40:	e8bd4800 	pop	{fp, lr}
  44:	e12fff1e 	bx	lr
  48:	00000000 	.word	0x00000000

地址对应指令内容,可以读懂。

配合arm-linux-gdb单步调试和查看寄存器内容。反汇编利器。

原文地址:https://www.cnblogs.com/fistao/p/3752519.html