汇编快速入门1

From Codes to Executables

image

编译

gcc file.c-o exe_file –m32生成可执行文件

objdump –d –M intel  file              //-d 反汇编

image这两条必备

image函数的返回结果放在eax中,相当于return 0;

804841f:    68 c0 84 04 08           push   0x80484c0
8048424:    e8 b7 fe ff ff           call   80482e0   <puts@plt>

 

主要的是这两句话

puts 就是printf

                

类型

Byte

short

2

int

4

long

4

char

1

image定义一个char类型的变量。

gcc bin1.c -o bin1 –m32

objdump -d -M intel ./bin1

image核心就是这两行

0x41 =‘A’

EBP栈底 栈底-1字节,分配一个字节的空间。

image一看到这句就代表x=0xb x=11 给程序中的一个变量赋值

DWORD 双字,四个字节byte

WORD 单字,两个字节

image

int a=11;int b=22;int c=33;


浮点数在存储时涉及到整数部分和小数部分

double a=1.234;

image

QWORD

fld //f load

fstp //

一看就是 处理浮点数

。。。丢进IDA

双击main函数 这个db代表double

image双击这个地址

image进去 dq 1.234数据 。rodata 只读段

全局变量放在BSS段或者data段

局部变量放在堆栈中

从数据段中取了一个数付给eax

丢进IDA分析

posted @ 2018-02-19 16:19  歇马  阅读(140)  评论(0编辑  收藏  举报