工具的使用

  • 第一章 IDA使用介绍
    • 简介
      • 基本使用:1.静态分析功能
      • 显示设置
      • 代码定位:
      • 栈帧分析
      • 结构体分析:
      • 程序Patch:
      • 程序与代码的转换:
      • IDA的动态调试:
      • IDA安装插件
      • IDA其他常用的一些插件
      • IDA脚本功能
  • 第二章 OD的简介
    • OD的窗口
    • 常用快捷键
    • 断点功能

自己的记性不太好,所以做了一个笔记,总结了一下逆向常用工具IDA和OD的使用,用来平时的翻阅,也希望可以帮助到大家。

第一章 IDA使用介绍

简介

空格:切换代码窗口的显示方式(在图形窗口与文本窗口之间切换)
窗口介绍:“View”–“open subviews”, 可以看到IDA的各个子窗口

常用快捷键:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210303191810237.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzQ2MzYzMjQ5,size_16,color_FFFFFF,t_70

基本使用:1.静态分析功能

​ 2.函数控制流图显示
​ 3.F5 Hex-Rays插件
​ 4.变量类型指定 快捷键y
​ 5.变量重命名 点住这个变量 快捷键n

显示设置

可在“Options”-“Gemeral”-"Disassembly"窗口中设置反汇编的显示内容模式

代码定位:

​ 1、交叉引用

​ 函数调用关系
​ 字符串引用关系
​ 2、字符串定位
​ 提取所有字符串shift+f12
查看交叉引用 :快捷键X

栈帧分析

双击任意局部变量将进入栈帧窗口视图

结构体分析:

IDA可对结构体进行自定义并对结构体数据进行解析, 以增强程序的可读性,步骤如下:
1、Shift + F1:打开本地类型;
2、insert:插入自定义的结构体;这里可以直接复制c语言定义;
3、Shift + F9:打开结构体;
4、Insert:添加上面创建的结构体;
5、选取相应数据,Alt + Q 将其上面的结构体进行解析。

程序Patch:
  • Patch指修改程序中的指令达到一些目的
    绕过反调试
    绕过验证
    其他
  • 将光标置于某条指令
  • Edit -> Patch Program -> Change bytes来修改代码,如果这里你安装了keypatch插件,那么是可以直接通过修改汇编指令来实现程序Patch的。
  • 应用Path:Edit -> Patch Program -> Apply patch to input file
程序与代码的转换:
  • 若某个函数未被引用,可能无法被IDA识别
  • 导航窗
  • 手动定位,识别为函数:快捷键 p
  • 将代码转换为数据:快捷键 d
  • 将数据转换为代码:快捷键 c
    通常用来清除花指令等

IDA没有撤销功能,慎重转换

IDA的动态调试:

IDA也提供了动态调试的功能,调试步骤如下:

  • Debugger -> Select debugger
    选择local windows debugger
  • F2对入口点处或者其他地方下断点
  • Debugger -> Start process 启动调试
  • 优点
    可以在F5的窗格中单步跟踪伪代码
  • 缺点
    调试功能没有OllyDBG等强大,没有反调试、dump、硬件断点、内存断点等功能。
IDA安装插件

插件安装:复制相应文件到ida安装目录plugin文件夹

  • Hex-Rays Decompiler:F5插件
    支持x86与x64
    6.8支持arm
    6.9支持arm64
    6.95支持PowerPC

  • IDAPython:IDC脚本的Python接口

IDA其他常用的一些插件

IDA FLIRT Signature Database – 用于识别静态编译的可执行文件中的库函数
Find Crypt – 寻找常用加密算法中的常数(需要安装 yara-python)
IDA signsrch – 寻找二进制文件所使用的加密、压缩算法
Ponce – 污点分析和符号化执行工具
snowman decompiler – C/C++反汇编插件(F3 进行反汇编)
CodeXplorer – 自动类型重建以及对象浏览(C++)(jump to disasm)
IDA Ref – 汇编指令注释(支持arm,x86,mips)
auto re – 函数自动重命名
nao – dead code 清除HexRaysPyTools – 类/结构体创建和虚函数表检测
DIE – 动态调试增强工具,保存函数调用上下文信息
sk3wldbg – IDA 动态调试器,支持多平台
idaemu – 模拟代码执行(支持X86、ARM平台)
Diaphora – 程序差异比较
Keypatch – 基于 Keystone 的 Patch 二进制文件插件
FRIEND – 哪里不会点哪里,提升汇编格式的可读性、提供指令、寄存器的文档等
SimplifyGraph – 简化复杂的函数流程图
bincat – 静态二进制代码分析工具包,2017 Hex-Rays 插件第一名
golang_loader_assist – Golang编译的二进制文件分析助手

IDA脚本功能

File->Script command ,打开IDA的脚本执行窗口,脚本语言类型默认是IDC,可以修改成Python

第二章 OD的简介

OllyDBG可在动态调试过程中实时查看程序反汇编、内存、数据等信息,并可对其进行修改编辑等操作。
目前市面上有很多OllyDBG个人修改版,主要是为了防止被反反调试检测到而做的定制修改,并且自己搭配了一些常用的插件,这里我们使用一款Olly4st的修改版OD来作为演示。我们也统一称其为OllyDBG。

OD的窗口

反汇编窗口:显示被调试程序的反汇编代码,标题栏上的地址、HEX 数据、反汇编、注释可以通过在窗口中右击出现的菜单 界面选项->隐藏标题 或 显示标题 来进行切换是否显示。用鼠标左键点击注释标签可以切换注释显示的方式。

寄存器窗口:显示当前所选线程的 CPU 寄存器内容。同样点击标签 寄存器 (FPU) 可以切换显示寄存器的方式。

信息窗口:显示反汇编窗口中选中的第一个命令的参数及一些跳转目标地址、字串等。

内存窗口:显示内存或文件的内容。右键菜单可用于切换显示方式。

堆栈窗口:显示当前线程的堆栈。

常用快捷键

断点功能
  • 设置断点
    Int3断点:可以有多个,设置在代码上
    内存断点:通过设置内存页面属性异常来实现的断点功能,不去修改程序代码
    硬件断点:使用调试寄存器设置断点,不会修改程序代码,最多设置4个


希望大家可以有所收获!!!

[re入门]IDA和OD的基本使用(持续更新)相关推荐

  1. 全网最全-QCC51xx-QCC30xx(TWS)系列从入门到精通开发教程汇总(持续更新中)

    详细记录分析QCC51XX和QCC30XX系列,sdk解析,帮助你快速部署开发项目.教程没完结前,不定时持续更新,包括新发布文章和对已发布的补充更新. 本系列以3040为例,其他QCC5181,QCC ...

  2. 网络工程师从入门到精通(学习总目录——持续更新)

    网络工程师课程体系包含:入门课程.中级课程.高级课程. 一.入门课程:计算机网络技术及应用.Windows server服务器系统管理.活动目录(AD)管理及维护.小型网络组建实战 1.计算机网络技术 ...

  3. 零基础入门专利代理考试需要了解的,持续更新ing

    首先,你得清楚以下几个最值得关注的问题: https://mp.weixin.qq.com/s/lyCszTvUYPmQG33Fv2UNyQ 1.这是一个什么样的考试? 国家统一考试,是入门级的资格考 ...

  4. 数据分析入门需要了解的统计学知识【持续更新】

    大家早上好,本人姓吴,如果觉得文章写得还行的话也可以叫我吴老师.欢迎大家跟我一起走进数据分析的世界,一起学习! 感兴趣的朋友可以关注我或者我的数据分析专栏,里面有许多优质的文章跟大家分享哦. 最近一直 ...

  5. 【从入门到精通系列】-- MySQL(持续更新中……)

    系列文章目录 文章目录 系列文章目录 前言 一.初识MySQL 1.1数据库基础 1.1.1 什么是数据库 1.1.2 表 1.1.3 数据类型 1.1.4 主键 1.2 数据库技术构成 1.2.1 ...

  6. python3.6基础知识_新手零基础学Python3.6入门知识笔记速来取,持续更新

    最近自己在学习Python与人工智能的课程,我把最近学习的课程内容发给大家,我用XMind整理一些知识点,算是比较完善的笔记,我考试复习都是看它,希望对大家有帮助,后期也会慢慢更新,可以关注我的公众号 ...

  7. [网络安全自学篇] 七十.WannaCry勒索病毒复现及分析(三)蠕虫传播机制分析及IDA和OD逆向

    这是作者网络安全自学教程系列,主要是关于安全工具和实践操作的在线笔记,特分享出来与博友们学习,希望您们喜欢,一起进步.前文分享了宏病毒相关知识,包括宏病毒基础原理.防御措施.自发邮件及APT28样本分 ...

  8. [系统安全] 二十七.WannaCry勒索病毒分析 (3)蠕虫传播机制解析及IDA和OD逆向

    您可能之前看到过我写的类似文章,为什么还要重复撰写呢?只是想更好地帮助初学者了解病毒逆向分析和系统安全,更加成体系且不破坏之前的系列.因此,我重新开设了这个专栏,准备系统整理和深入学习系统安全.逆向分 ...

  9. [系统安全] 十四.熊猫烧香病毒IDA和OD逆向分析--病毒释放过程(下)

    您可能之前看到过我写的类似文章,为什么还要重复撰写呢?只是想更好地帮助初学者了解病毒逆向分析和系统安全,更加成体系且不破坏之前的系列.因此,我重新开设了这个专栏,准备系统整理和深入学习系统安全.逆向分 ...

  10. AI之Paper:人工智能领域之学术界的所有国际期刊简介、入门、学以致用(持续更新,建议收藏!)

    AI之Paper:人工智能领域之学术界的所有国际期刊简介.入门.学以致用(持续更新,建议收藏!) 目录 中国计算机学会推荐的人工智能与模式识别领域相关国际期刊 一.A类 二.B类 三.C类 国内八大学 ...

最新文章

  1. 行业观察 | 机器人Ameca挣脱「灵魂」枷锁觉醒?
  2. HDU 5239 上海大都会 D题(线段树+数论)
  3. mysql根据bin log恢复_MySQL 通过 binlog 恢复数据
  4. ACM中Java输入输出
  5. 小程序获取input 的value_[小发现] 现在可以获取任意小程序的小程序码了!
  6. C之memset、memcpy、strcpy、strncpy区别
  7. DAY77-Django框架(八)
  8. SLAM - 01 - 分类
  9. javascript:使用canvas绘图2D图形
  10. 【java学习之路】(java SE篇)001.java初识
  11. 面试题(Qt + 函数指针)
  12. MyBatis的环境搭建(图文)
  13. iOS动画之大雪纷飞
  14. 氧化镁MgO晶体基片|钛酸锶SrTiO3晶体基片|铌酸锂LiNbO3晶体基片;直径10mm
  15. SCI、EI、ISTP国际三大检索分别指的是什么?
  16. 如何看计算机cpu的好坏,cpu主要的性能参数有哪些、怎么看?教你几招轻松看懂CPU性能好坏...
  17. 冬天洗衣不动手,这几款智慧洗衣机可以帮到你
  18. Excel个人学习笔记
  19. 在线php后门查找,一款猥琐的PHP后门分析
  20. 华为运维客户端SeoClient接收返回码错误

热门文章

  1. RDA5820收音机芯片驱动
  2. 大学英语四六级往年成绩查询+成绩单补办教程(四级/六级/4级/6级/46级)
  3. Linux系统上安装python详细步骤
  4. Ckplayer视频播放器使用方法介绍
  5. main函数写法总结
  6. 分层图解决的一些最短路问题
  7. 上海计算机一级和四六级,大学英语六级比四级难多少?985学长含泪告诉你!
  8. 分布式事务处理框架之LCN
  9. SRAM和DRAM的真正区别
  10. CSS学习11:区块背景样式(布局图片)和用户交互图片