初试IDA与gdb

pwn学习-任务一:

  1. 安装ida;
  2. 安装linux虚拟机,gdb插件,ROPgadget,ropper,pwntools;
  3. 熟悉ida的基本使用–完成sysmagic题目。
  4. 学会使用markdown格式


知识储备:

看书《IDA pro 权威指南》,了解反汇编过程的基础知识及IDA基本使用,在i春秋【CTF精品实战课程】进行IDA基本操作实验。
This is an IDA pro 使用初探. 简单笔记如下:

  1. 反汇编器:撤销汇编过程,因此,我们可以得到汇编语言形式的输出结果(以机器语言作为输入)。需要进行反汇编的常见情况包括以下几种。分析恶意软件;分析闭源软件的漏洞;分析闭源软件的互操作性;分析编译器生成的代码,以验证编译器的性能和准确性;在调试时显示程序指令。

  2. 基本反汇编算法:线性扫描(linear sweep)和递归下降
    (recursive descent)是两种最主要的反汇编算法。
    [1] 确定进行反汇编的代码区域。
    [2]知道指令的起始地址后,读取该地址(或文件偏移量)所包含的值,并执行一次表查找,将二进制操作码的值与它的汇编语言助记符对应起来。
    [3]获取指令并解码任何所需的操作数后,需要对它的汇编语言等价形式进行格式化,并将其在反汇编代码中输出。
    [4]输出一条指令后,继续反汇编下一条指令,并重复上述过程,直到反汇编完文件中的所有指令。

  3. 逆向与反汇编工具:绝不要根据文件的扩展名来确定文件的类型,这是最基本的原则。在脑子里建立起“文件扩展名并无实际意义”的印象.
    [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。
    
  4. 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]处理器:确定位于该地址的指令的类型、长度,以及从这个地址继续执行指令的位置(例如,是当前的指令序列还是分支)。

  5. pwntools:CTF框架和漏洞利用开发库,用Python开发,由rapid设计,旨在让使用者简单快速的编写exploit。 ROPgadget.

  6. Ropper : 显示有关不同文件格式的二进制文件的信息 Ropper.

  7. 基本应用软件:静态分析:IDA Pro;动态调试:gdb;Exploit:pwntools(没用到)

  8. 逆向工程:比如你看到别人写的某个exe程序能够做出某种漂亮的动画效果,你通过反汇编、反编译和动态跟踪等方法,分析出其动画效果的实现过程,这种行为就是逆向工程;不仅仅是反编译,而且还要推倒出设计,并且文档化,逆向软件工程的目的是使软件得以维护。

  9. 参考博文IDA 快捷键.



解题过程:

<

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值