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 ...
随机推荐
- 悲惨记忆。。QImage之 pixel() && setPixel()参数不要给反了。。。
QImage repairImg(width, height, QImage::Format_Mono); ; row < height; row++) { // uchar* ucRow = ...
- css 水平居中垂直居中的几种方法
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Qt中文乱码解决思路
最近项目中遇到不少的Qt中文乱码的问题,主要原因是客户的需求比较多,Qt版本有用4的版本的也有用5的版本,并且还有windows与linux跨平台的需求.经常出现个问题是windows的解决了,源代码 ...
- 按月统计tcode和report使用次数的工具
执行report,输入要查询的日期和user, 工具会按照使用次数从高到低列出输入日期所在的月份内所有该user 曾经使用过的tcode 和report list: REPORT zusertcode ...
- Ubuntu 14.10下搭建简易FTP服务器[vsftpd]
Ubuntu下公认最易上手的ftp软件是vsftpd,既然标题都说了是“简易”的,那么必然是用最大众的..下面是正题 目标需求:搭建一个允许匿名/本地登录的FTP,并且支持上传/下载/修改功能,同时F ...
- mysql 添加用户并授权
mysql> create database dogDB; mysql> CREATE USER 'dog'@'%' IDENTIFIED BY '123456'; mysql> g ...
- 探索软件工程道路上的我 V (Θ∀Θ#)
开发语言:Java 开发工具:UltraEdit 小伙伴博客:http://www.cnblogs.com/hyating/ github地址:https://github.com/JUNYU217/ ...
- RadioButtonFor绑定值
<div class="form-group"> <label class="control-label col-md-2">是否< ...
- 去除手机浏览器input焦点默认边框(直接用outline:none就可以了)
1.使用Chrome的都知道,当鼠标焦点在input.textarea这些元素上时,Chrome默认的会给它们加上黄色的边框,我以前一直以为这是chrome的特性,没法去掉,原来是css的效果,out ...
- Gradle简介和安装
一.Gradle介绍 Gradle是一个基于JVM的构建工具,它提供了:像Ant一样,通用灵活的构建工具,可以切换的,基于约定的构建框架,强大的多工程构建支持,基于Apache Ivy的强大的依赖管理 ...