0x00linux32位汇编初入--前期准备
0x00汇编初入--前期准备
一.汇编工具
在linux平台下常用的编译器为as,连接器为ld,使用的文本编辑器为vim,汇编语法为att
以下是一些工具:
addr2line 把地址转换为文件名和行号
ar 创建,修改和展开文件存档
as 汇编器
c++filt 还原c++符号过滤器
gprof 显示程序简档信息
ld 把目标代码文件链接
nlmconv 把目标代码转换为Netware loadable Module格式
nm 列出目标文件中的符号
objcopy 复制和翻译目标文件
objdump 显示来自目标文件的信息
ranlib 生成存档文件的索引
readelf 按照elf格式显示来自目标文件的信息
size 列出目标文件或者存档文件的段长度
strings 显示目标文件中可打印的字符串
strip 丢弃符号
windres 编译windows资源文件
上面是GNU的开发包binutils中的工具,我们主要用到as和ld这两个工具,也可以直接使用gcc,我们使用gdb进行调试.
二.汇编工具使用基础
1.使用as与ld
a.使用as,把汇编文件转换成目标文件,基本用法如下:
1 as -- -o xxx.o xxx.s
其中--32是告诉汇编器生成32位的目标文件,如果系统是32位的可以不加这个参数,64位的系统请加上这个.
b.使用ld连接目标文件,基本用法如下:
1 ld -m elf_i386 -o xxx xxx.
其中-m elf_i386也是因为32位系统的原因.
2.使用gcc
我们可以写个简单的helloworld
1 #include <stdio.h>
2
int main()
{
printf("Hello world!\n");
return ;
}
把文件保存为helloworld.c,使用以下命令可以得到它的汇编代码
1 gcc -S helloworld.c
编译文件,命令如下
1 gcc helloworld.c -o helloworld
3.使用gdb
我们可以使用gdb来调试程序,可以使用以下命令载入文件(使用gdb调试的文件,须在编译时加入-g这一个参数)
1 gdb -q xxx
// 或者已经启动gdb,我们可以使用file xxx
gdb的常用命令有,如下:
break 设置断点
watch 设置监视点
info 观察系统元素
x 检查内存位置
print 显示变量值
run 运行程序
list 列出指定函数或者行
next 执行下一条指令
step 执行下一条指令
cont 从停止的位置继续执行程序
until 运行程序直到指定行
4.使用objdump
这个工具我经常使用可以进行反汇编,很容易得到程序汇编代码
1 objdump -d xxx
三.结尾
我没有直接写helloword的博文当开始,我准备第二篇再写,我觉得"工欲善其事,必先利其器",先写相关工具的使用比较好.至于什么汇编,以及计算机原理后面,继续慢慢研究吧^_^ 最起码已经开始学习了!!!
0x00linux32位汇编初入--前期准备的更多相关文章
- GDB调试32位汇编堆栈分析
GDB调试32位汇编堆栈分析 测试源代码 #include <stdio.h> int g(int x){ return x+5; } int f(int x){ return g(x)+ ...
- 初入职场的建议--摘自GameRes
又开始一年一度的校招了,最近跑了几个学校演讲,发现很多话用短短的一堂职业规划课讲还远远不够,因为那堂课仅仅可能帮大家多思考怎样找到一份合适的工作,并没有提醒大家怎样在工作中发展自己的职业. 见过这么多 ...
- 20145314郑凯杰《信息安全系统设计基础》GDB调试32位汇编堆栈分析
20145314郑凯杰<信息安全系统设计基础>GDB调试32位汇编堆栈分析 本篇博客将对第五周博客中的GDB调试32位汇编堆栈进行分析 首先放上以前环境配置的图: 图1: 测试代码: #i ...
- 【Xbox one S】开箱&开机&初入坑心得
再来一发水贴,先上产品标准照镇贴: 前言 身为一个资深单机游戏玩家,常年混迹在PC平台,但内心深处一直对主机有种迷之向往,感觉那才是单机游戏的正处之地,坐沙发上拿着手柄对着电视跌宕起伏才是正确的游戏姿 ...
- 32位汇编第一讲x86和8086的区别,以及OllyDbg调试器的使用
32位汇编第一讲x86和8086的区别,以及OllyDbg调试器的使用 一丶32位(x86也称为80386)与8086(16位)汇编的区别 1.寄存器的改变 AX 变为 EAX 可以这样想,16位通 ...
- 32位汇编第三讲,RadAsm,IDE的配置和使用,以及汇编代码注入方式
32位汇编第三讲,RadAsm,IDE的配置和使用,以及汇编代码注入方式 一丶RadAsm的配置和使用 用了怎么长时间的命令行方式,我们发现了几个问题 1.没有代码提醒功能 2.编写代码很慢,记不住各 ...
- 32位汇编第四讲,干货分享,汇编注入的实现,以及快速定位调用API的数量(OD查看)
32位汇编第四讲,干货分享,汇编注入的实现,以及快速定位调用API的数量(OD查看) 昨天,大家可能都看了代码了,不知道昨天有没有在汇编代码的基础上,实现注入计算器. 如果没有,今天则会讲解,不过建议 ...
- 32位汇编第六讲,OllyDbg逆向植物大战僵尸,快速定位阳光基址
32位汇编第六讲,OllyDbg逆向植物大战僵尸,快速定位阳光基址 一丶基址,随机基址的理解 首先,全局变量的地址,我们都知道是固定的,是在PE文件中有保存的 但是高版本有了随机基址,那么要怎么解决这 ...
- win7win8 64位汇编开发环境合集安装与设置
win7win8 64位汇编开发环境合集安装与设置 下载 win7 win8 64位汇编开发环境.rar 下载地址(免积分下载) http://download.csdn.net/detail/li ...
随机推荐
- js相关参考资料
[图片等比例适配:]http://www.cnblogs.com/zengxiangzhan/archive/2009/09/12/1565323.html
- 1st贝塞尔函数的使用
x=-100:0.1:100; y1=besselj(7,x);y2=besselj(10,x);y3=besselj(20,x);y4=besselj(40,x);y5=besselj(60,x); ...
- esxi 6 添加硬盘、网卡
添加硬盘 esxi系统装完之后,直接再接上一块硬盘,然后再使用管理工具添加硬盘 打开VMware vSphere Client,登录esxi服务器, 打开配置-存储器-选择添加存储器 选择磁盘 这里能 ...
- java经典题目
/***********Ryear.java begin********************/ import java.util.Scanner;public class Ryear { /** ...
- 解决iOS9下隐藏App返回按钮文字导致的诡异闪屏问题
问题的原因竟是一行代码导致的,这行代码的作用是隐藏App返回按钮的文字. 看看这有问题的代码: //将返回按钮的文字position设置不在屏幕上显示 [[UIBarButtonItem appear ...
- core Bluetooth(蓝牙4.0)
蓝牙4.0以低功耗著称,一般也叫BLE(Bluetooth Low Energy). 目前主要应用的场景有:智能家居.运动手环和室内导航等. 利用core Bluetooth框架可以实现苹果设备与第三 ...
- autolayout sizeclass 资料集锦
http://www.raywenderlich.com/20881/beginning-auto-layout-part-1-of-2 Core Animation Programming Guid ...
- bootstrap 之 xs,sm,md,lg && 主要颜色
mobile – xs ( <768px ) tablet – sm ( 768~991px ) desktop – md ( 992~1170px ) large desktop – lg ( ...
- Html 开发工具 之Hbulider
下载地址 : 百度搜索该名字即可 或 点击此处 选择 文件->新建Web项目 输入项目名称即可 如下图 它会自动生成一些 文件夹 或文件,不需要的删除即可.
- Windows平台下PHP环境搭建
在Windows平台上搭建PHP的开发环境可以下载WAMP(Windows.Apache.MySQL.PHP的首字母缩写)集成化安装包.这样就不需要单独安装Apache.MySQL和PHP了. 这款软 ...