pwn学习-任务一:
- 安装ida;
- 安装linux虚拟机,gdb插件,ROPgadget,ropper,pwntools;
- 熟悉ida的基本使用–完成sysmagic题目。
- 学会使用markdown格式
知识储备:
看书《IDA pro 权威指南》,了解反汇编过程的基础知识及IDA基本使用,在i春秋【CTF精品实战课程】进行IDA基本操作实验。
This is an IDA pro 使用初探. 简单笔记如下:
-
反汇编器:撤销汇编过程,因此,我们可以得到汇编语言形式的输出结果(以机器语言作为输入)。需要进行反汇编的常见情况包括以下几种。分析恶意软件;分析闭源软件的漏洞;分析闭源软件的互操作性;分析编译器生成的代码,以验证编译器的性能和准确性;在调试时显示程序指令。
-
基本反汇编算法:线性扫描(linear sweep)和递归下降
(recursive descent)是两种最主要的反汇编算法。
[1] 确定进行反汇编的代码区域。
[2]知道指令的起始地址后,读取该地址(或文件偏移量)所包含的值,并执行一次表查找,将二进制操作码的值与它的汇编语言助记符对应起来。
[3]获取指令并解码任何所需的操作数后,需要对它的汇编语言等价形式进行格式化,并将其在反汇编代码中输出。
[4]输出一条指令后,继续反汇编下一条指令,并重复上述过程,直到反汇编完文件中的所有指令。 -
逆向与反汇编工具:绝不要根据文件的扩展名来确定文件的类型,这是最基本的原则。在脑子里建立起“文件扩展名并无实际意义”的印象.
[1] 分类工具:file:试图通过检查文件中的某些特定字段来确认文件的类型。file 能够识别大量的文件格式,包括数种 ASCII文本文件、各种可执行文件和数据文件。file执行的幻数检查由幻数文件(magic file)所包含的规则控制. PE Tools:一组用于分析 Windows 系统中正在运行的进程和可执行文件的工具。 PEiD:主要用于识别构建某一特定 Windows PE 二进制文件所使用的编译器,并确定任何用于模糊 Windows PE 二进制文件的工具。
[2] 摘要工具:
nm :列出目标文件每一个符号以及与符号有关的一些信息。大写字母表示全局符号,小写字母则表示局部符号。 ldd:(list dynamic dependencies),列举任何可执行文件所需的动态库。 objdump: 可用于显示以下与目标文件有关的信息(以及其他更多信息):节头部,程序文件每节的摘要信息;专用头部,程序内存分布信息,还有运行时加载器所需的其他信息,包括由 ldd 等工具生成的库列表;调试信息,提取出程序文件中的任何调试信息;符号信息,以类似 nm 的方式转储符号表信息;反汇编代码清单,objdump 对文件中标记为代码的部分执行线性扫描反汇编。 otool :可用于解析与 OS X Mach-O 二进制文件有关的信息,显示与文件的头部和符号表有关的信息,并对文件的代码部分进行反汇编。
[3] 深度检测工具:
strings: 提取文件中的字符串内容,通常,使用该工具不会受到文件格式的限制。 反汇编器:PE、ELF 和 MACH-O 文件可分别使用 dumpbin、objdump 和 otool 进行反汇编。两个用于 x86 指令集的流式反汇编器(stream disassembler):ndisasm 和 diStorm。
-
IDA使用切记:
[1] IDA 不提供撤销功能!也无法命令历史记录列表;几乎所有的操作都有其对应的菜单项、热键和工具栏按钮。 IDA提供方便的、基于上下文的鼠标右键操作菜单。
[2] IDA 对于二进制文件,IDA 不会进行任何初始反汇编,除非你至少确定了一个代码字节。
它没有可用的文件头信息区分二进制文件中的代码字节和数据字节。这时,IDA 会提醒用户指定文件中的一个地址作为入口点,告诉 IDA 将这个地址的字节转换成代码(C 是用于强制 IDA 将字节作为代码处理的热键)。
[3]IDB文件: 通常,人们说到 IDA 数据库时实际上指的是 IDB 文件。
IDA 会创建一个数据库,其组件分别保存在 4 个文件中,这些文件的名称与选定的可执行文件的名称相同,扩展名分别为.id0、.id1、.nam 和.til .id0 文件是一个二叉树形式的数据库。 .id1 文件包含描述每个程序字节的标记。 .nam 文件包含与 IDA 的 Names 窗口中显示的给定程序位置有关的索引信息。 .til 文件用于存储与一个给定数据库的本地类型定义有关的信息。 在关闭当前项目时,这 4 个文件将被存档,还可以选择将它们压缩成一个 IDB文件。
[4]加载器:根据程序文件头包含的信息,确定一个虚拟内存布局,并对数据库进行相应的配置
[5]处理器:确定位于该地址的指令的类型、长度,以及从这个地址继续执行指令的位置(例如,是当前的指令序列还是分支)。 -
pwntools:CTF框架和漏洞利用开发库,用Python开发,由rapid设计,旨在让使用者简单快速的编写exploit。 ROPgadget.
-
Ropper : 显示有关不同文件格式的二进制文件的信息 Ropper.
-
基本应用软件:静态分析:IDA Pro;动态调试:gdb;Exploit:pwntools(没用到)
-
逆向工程:比如你看到别人写的某个exe程序能够做出某种漂亮的动画效果