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 ...
随机推荐
- Hibernate入门与简谈
Hibernate jdbc Java Databases Connectivity, 他是提供了一组Java API来访问关系数据库的Java程序.这些Java API 可以使Java应用程序执行S ...
- 第六篇——初尝Python,意犹未尽
作业2的要求是选一个你从来没有学过的编程语言,试一试实现基本功能.那么在这里我准备学习Python语言进行学习,并尝试用Python写一写东西. http://www.runoob.com/ Pyth ...
- [转]XSS现代WAF规则探测及绕过技术
初始测试 1.使用无害的payload,类似<b>,<i>,<u>观察响应,判断应用程序是否被HTML编码,是否标签被过滤,是否过滤<>等等: 2.如果 ...
- CoreJava学习笔记1-基本概念、对象和类
一. java的基本程序设计结构 (一) java共有8种基本类型:4种整型,2种浮点类型,1种char,1种boolean. 1) 4种整型:byte(1).short(2). ...
- 如何用极路由+OpenWrt+SDR电视棒搭建SDR服务器
0×00 前言 近期因为有个从异地捕获无线信号的需求,便尝试着用OpenWrt+公网IP搭建了一台SDR服务器.如果有小伙伴嫌SDR硬件天线看起来太乱.或者电脑没有足够的USB接口也可在局域网搭建SD ...
- clojure 之 hello world
1. 安装Leiningen 2. lein new app bar 3. lein run Hello, World!
- 【RobotFramework】Selenium2Library类库关键字使用说明
Add CookieArguments:[ name | value | path=None | domain=None | secure=None | expiry=None ]Adds a coo ...
- iOS 架构模式MVVM
MVVM Model-View-ViewModelMVVM 其实是MVC的进化版,他将业务逻辑从VC中解耦到ViewModel,实现VC的瘦身. 做一个简单的登录判断: 创建LoginViewMode ...
- nodejs+express安装
1.安装nodejs http://www.nodejs.org/下载或直接安装nodejs. 安装默认会勾选加入环境变量. 打开cmd,输入node -v.测试是否成功. 2.安装express 命 ...
- DotNetBar 第2课,窗口设置 Ribbon Form 样式
1. 新增 windows 窗体时,选 Ribbon Form 2. 窗体继承 Office2007RibbonForm 3. 设计窗口下面,删除 删除styleManager1 组件 窗口效果如下 ...