0.IDA-基本操作

2023-11-10

打开IDA,拖拽一个EXE文件进去,首先会弹出如下窗口:

Kernel option1、Kernel option2、Processor option这三个选项会控制反汇编引擎的工作状态,一般按默认即可,大多数情况下,分析选项的默认值在准确性和方便性之间提供一个折中参数,如果IDA分析出有问题的代码时,把Kernel option1中的选项Make final analysis pass选项关闭是很好的方法:

在某些情况下,一些代码因不在预计的位置而不被确认,尝试把Kernel option2中的Coagulate data segments in the final pass选上是有帮助的(注意这里是选上)

IDA打开文件时,默认是处于图形化模式的,如果要切换到代码模式,执行右键菜单“Text view”

点了之后到了代码模式,可通过可视化菜单标志切换,也可以通过系统菜单View---Open subviews---Disassembly来重新打开图形化模式,而且每点一次出现一个!

合理配置IDA文件,可以大大提高工作效率, Windows图形界面的主程序是idag.exe,可通过菜单Opeions来配置IDA,注意的是这种配置只对当前的项目有效,新建一个项目时,会恢复成默认配置,改变默认配置必须用UE等修改ida.cfg等配置文件(在cfg目录下)

 

IDA默认是不显示中文字符串的,只需要在ida.cfg中搜索AsciiStringChars,将cp866 version这段注释掉,恢复full version这段即可显示中文

 IDA同样可以在反汇编代码后面输入注释,在窗口右边空白处单击鼠标右键,一种是Enter comment(快捷键是;和OD一样),另一种是Enter repeatable comment(快捷键是shift+;)

前一种输入的注释只在该处出现,后一种注释,会在所有交叉参考处出现

 

交叉参考:

快捷键是X键,通过交叉参考(XREF)可以知道指令代码相互调用的关系,如下图:

表示该调用地址是40112B,j表示跳转,其他一些符号:"o"表示偏移值(offset),"p"表示子程序,双击;后的内容或按回车键就可以跳到调用该处的地方,

注意的是直接在前面的代码上双击或回车是无效的,按回车时,提示窗口还会提示"Command "JumpEnter" failed"必须在后点双击或回车才能跳转

在loc_401165字符上按X键,将打开交叉参考窗口,如图所示:

 

 参考重命名:

 Renaming of reference 是IDA的一个极好功能,增加了代码的可读性,如下是WndClass的开始处,IDA默认用local_401120命名,但loc_401120这个字符没有多大意义,

 

若加注释,只有这一行有意义,但用参考重命名功能便可把所有参考点一次改动,在loc_401120上单击鼠标右键,弹出右键菜单,在菜单上选择重命名"Rename"

 或按N键,打开Rename Address对话框,如下:

 

标签的用法

右键菜单"Jump/Mark position"打开"标记当前位置"功能,如下:

为这个标记(当前光标位置)加上标记,"WndProc"便是需要返回的位置,当离开这个标记而返回时,可以在菜单"Jump/Jump to marked position"中或按"Ctrl+M"键执行"跳转到标记位置"功能,选择返回的标签,双击就转到指定代码处:

 

进制的转换

 IDA可以提供多种进制显示,先把光标移到需要转换的数据上,单击工具栏上的#按钮,即可转换成所需要的进制:

Toggle leading zeroes功能是用0填补数据前的空位

 

 代码和数据转换

 很多工具在反汇编时可能无法正确区分数据和代码,IDA也不例外,有些程序就是利用这点来对抗静态反汇编的,IDA的交互性使得用户可以把某段十六进制数指定为代码或数据,

那么如果确认某段十六进制数据是一段指令,只要把光标移到其第一个字节的偏移位置,执行菜单命令"Edit/Code"或按C键,按P键可以把某段代码定义为子程序,参数调用会列出,

若要取消定义,执行菜单命令Edit/Undefine或按U键,数据重新以16进制数据显示:

在数据行按D键,数据类型会在db、dw与dd间转换,而执行菜单"Options/Setup data types"可以设置更多的数据类型

 

字符串

编程语言不同造成字符串也有不同的格式,如以"\0"结尾的C字符串,以"$"结尾的DOS字符串等,IDA支持所有的格式,如果确信某段十六进制是个字符串,只要把光标移到其第一个字符的偏移位置,执行菜单命令"Edit/Strings/ASCII"或按A键

按A默认是C字符串,也可以在菜单"Options/ASCII string style"中设置其他字符串格式为默认值

 

结构体

IDA会根据文件的类型自动加载相应的类型库存,在工具栏上单击T按钮,打开加载类型库窗口(Loaded Type Libraries):

选择好类型库,就可查看内置的结构体数据结构了,选择菜单"View/Open subviews/Structures'或单击工具栏上的

打开结构体管理窗口,按Insert键,在弹出的窗口中单击"Add Standard Structure",打开添加标准结构库窗口,查找需要的结构体,然后就可以正常使用这些库了

 

枚举类型

可以在反汇编时用IDA去动态的定义与操作枚举类型(Enumerated Types),用以下的街头简单代码生成一个release,再用IDA加载:

[cpp]  view plain copy
  1. #include <stdio.h>  
  2.   
  3. int main(void)  
  4. {  
  5.     enum weekday{MONDAY, TUESDAY, WEDNESDAY, THUSDAY,FRIDAY,SUTURDAY,SUNDAY};  
  6.     printf("%d,%d,%d,%d,%d,%d,%d", MONDAY, TUESDAY, WEDNESDAY, THUSDAY,FRIDAY,SUTURDAY,SUNDAY);  
  7.     return 0;  
  8. }  


加载后,看下printf函数部分:

下面演示下如何用枚举类型来表示这些数字,执行菜单"View/Open subviews/Enumerations"或直接单击工具栏上的En按钮打开枚举窗口,按Insert插入一个新的枚举类型,取名weekday.在新建的weekday枚举类型中按N键添加枚举成员,0对应MONDAY,1对应TUESDAY,依次类推:

回到反汇编代码窗口,把光标移到需要重新定义的数据处,执行"Edit/Operand types/Enum member"或直接按M键转换成指定的枚举成员,

再按M就会恢复原有的代码

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

0.IDA-基本操作 的相关文章

  • binwalk 提取bootimg_使用 IDA 处理 U-Boot 二进制流文件

    作者 xff1a Hcamael 64 知道创宇404实验室 最近在研究IoT设备的过程中遇到一种情况 一个IoT设备 xff0c 官方不提供固件包 xff0c 网上也搜不到相关的固件包 xff0c 所以我从flash中直接读取 因为系统是
  • 【Tools系列】IDA远程调试Linux文件

    Date 2023 4 28 文章目录 1 工具安装 2 IDA linux server 参考 1 工具安装 IDA Pro 7 2 2 IDA linux server 1 进入到IDA的安装目录 找到文件夹 dbgsrv 其中有两个文
  • 静态分析:IDA逆向代码段说明 text、idata、rdata、data

    通常IDA对一个PE文件逆向出来的代码中 xff0c 存在四个最基本的段text idata rdata data xff0c 四个段为PE文件的结构中对应的段 一 text段 xff1a 该段位程序代码段 xff0c 在该段一开始就可以看
  • IDA工具安装、分享

    往期推荐 ARM处理器寻址方式 ARM指令集 ARM汇编语言程序结构 Android与ARM处理器 IDA工具被称之为是世界顶级的交互汇编 掌握IDA工具界面上的快捷功能 导航条主界面功能以及汇编窗口常用快捷键的使用 实战分析 了解ARM指
  • IDA调试小技巧

    IDA脚本 MakeNameEX IDA官方链接 实际运用 MakeNameEX MakeNameEx long ea string name long flags SN CHECK ea linear address name new n
  • 混淆技术研究-OLLVM混淆-控制流平坦化(FLA) - WIP

    简介 控制流平坦化通过将程序中的条件分支语句转化为等价的平铺控制流来实现 通常 这包括将原始的分支语句 如if语句 switch语句 中的每个分支提取出来 并将它们放置在一系列连续的基本块中 然后使用一个状态变量或标志来选择要执行的基本块
  • WSA - root,frida与ida测试

    本文旨在配置windows subsystem for android win安卓子系统 来作为win在开启了hyper v的情况下的一种轻量的安卓模拟器方案 使用MagiskOnWsa设置root权限 最终使其正常与开发环境 frida
  • 浅谈逆向——静态分析简介(静态分析1)

    浅谈逆向 IDA简介 IDA PRO IDA反汇编选项配置 IDA界面简介 交叉参考 参考重命名 标签 创建函数 代码和数据的转换 IDA 对简单结构的处理 IDA对复杂结构的处理 IDA调试器 IDA PRO IDA是按照区块装载PE文件
  • 初识IDA工具

    工具 IDA工具 链接 https pan baidu com s 1Zgzpws6l2M5j1wkCZHrffw 提取码 ruyu 里面有安装密码 PassWord qY2jts9hEJGy 里面分析32位和64位启动快捷方式 打开IDA
  • IDA反汇编之栈帧例释

    目录 1 例释环境和预备知识 1 1 运行环境 1 2 IDA版本 1 3 预备知识 2 函数调用约定 3 函数局部变量布局 4 函数栈帧示例 5 IDA栈视图 1 例释环境和预备知识 1 1 运行环境 本示例运行环境为Windows 10
  • 0.IDA-基本操作

    打开IDA 拖拽一个EXE文件进去 首先会弹出如下窗口 Kernel option1 Kernel option2 Processor option这三个选项会控制反汇编引擎的工作状态 一般按默认即可 大多数情况下 分析选项的默认值在准确性
  • Visual Stdio调试IDAPython脚本

    1 安装VS插件PTVS 这一步与第2步中安装版本应该一致 否则最后调试时会连不上 https github com Microsoft PTVS 2 安装python模块PTVSD pip install ptvsd 3 写如下代码ptv
  • IDA中的_OWORD

    IDA中的 OWORD 一个有意思的巧合 OWORD的含义 总结 阅读之前注意 本文阅读建议用时 5min 本文阅读结构如下表 项目 下属项目 测试用例数量 一个有意思的巧合 无 0 OWORD的含义 无 1 总结 无 0 一个有意思的巧合
  • IDA详细使用教程

    文章目录 软件介绍 目录结构 启动页面 IDA文件加载 界面介绍 常用快捷键 操作概述 函数操作 数据类型操作 导航操作 类型操作 关闭数据库 软件介绍 Ollydbg 仅仅是运行于 Windows 用户模式下的一种 32 位调试器 而 I
  • idapython常用api记录7.0

    2019 02 13 idapython常用api记录 以下代码片段可以在ida的output窗口中测试用 需要引入相关的模块即可 import idaapi import idc import idautils 后续需要使用的程序代码指令
  • WinDBG - 如何设置所有异常传递到应用程序中?

    如何将所有异常行为设置为传递给应用程序而不出现在调试器中 我正在使用 IDA Pro 6 6 和 WinDbg 一次对所有异常类型执行此操作有点尴尬 foreach exc sx catch sxd exc 它能做什么 sx 列出所有异常类
  • IDA Pro 中的内存映射类似于 OllyDbg

    IDA Pro 是否具有与 OllyDbg 类似的内存映射功能 如果是的话我就找不到了我知道屏幕顶部有一个细长的栏 显示您在地址空间中的位置以及内存分配的位置 但我认为这还不够 OllyDbg 中的内存映射如下所示 节目细分 在 视图 gt
  • PE - 区分数据和函数导出

    我正在尝试找到一种方法来确定 IDA 中哪些导出是数据导出 哪些是实际函数导出 For example let s have a look at Microsoft s msftedit dll s export entries While
  • 来自 IDA 的 x86 asm 中的方括号

    我使用IDA Starter反汇编了一个Windows程序 在生成的汇编代码中有一些我不明白的东西 mov eax dword 4033CC eax 4 我的问题是 这样做的目的是什么方括号 is 我找到了这个其他问题 https stac
  • IDA pro asm 指令更改

    我只是想知道我怎样才能 更改IDA视图A中的asm指令 如何编辑指令 对于 实例 jnz 到 jmp 如何插入新指令 call func1 调用 func2 插入到现有的 代码 我知道如何制作 diff 文件 我知道如何在我的 DLL 上应

随机推荐

  • RK3588移植-opencv交叉编译aarch64

    文章目录 概括 准备资源 编译Opencv 修改CMakelist文件 将lib库复制到 lib目录 问题 opencv videoCapture无法运行视频 安装历程 history 注意 本文中的所有配置相关路径都与当前安装的路径有关
  • python装饰器简介---这一篇也许就够了

    Python装饰器 decorator 是在程序开发中经常使用到的功能 合理使用装饰器 能让我们的程序如虎添翼 装饰器引入 初期及问题诞生 假如现在在一个公司 有A B C三个业务部门 还有S一个基础服务部门 目前呢 S部门提供了两个函数
  • kubernetes组件

    提示 以下内容均为学习过程中的个人笔记 有用自取 无用勿喷 如有错误欢迎指正 1 k8s前身 Borg 是谷歌内部的大规模集群管理系统 负责对谷歌内部很多核心服务的调度和管理 Borg 的目的是让用户能够不必操心资源管理的问题 让他们专注于
  • 【Android】String.format 字符串拼接

    String stra hello String strB 你好 String str String format s中文是 s stra strB hello中文是 你好
  • zabbix 应用日志监控报警

    zabbix 应用日志监控报警 zabbix可监控日志文件 比如zabbix agent日志 var log zabbix agent zabbix agentd log等 当一个日志文件包含特定的字符或者字符模式时 zabbix向用户发送
  • 电子学会 青少年编程等级考试(C语言)七级 试题

    7级 2022 3 01 红与黑 Flood Fill 红与黑 NOIP CSP c 经典例题选讲41 Flood Fill 红与黑 NOIP CSP c 经典例题选讲41 哔哩哔哩 bilibili AcWing 1113 红与黑 bfs
  • Python安装及环境配置

    编程语言分类 编译型 go语言 c语言 一次性把源代码进行翻译 特点是 执行效率高 平台依赖性一般比较高 解释型 js语言 python语言 ruby语言 逐行地对源代码进行翻译和运行 特点是 执行效率相对较低 平台的依赖性不高 安装各个平
  • 编程常用字体Consolas、Fira Code、Source Code Pro

    编程时方便查看 且中文符号与英文符号区别大 便于排错 1 Consolas 一种等宽字体 属于最常用的编码字体下载地址 参考图 2 Fira Code 一种专为代码排版优化的等宽字体 基于 Fira Mono 等宽字体的一个扩展 主要特点是
  • el-element中el-tabs案例的使用

    el element中el tabs的使用 代码呈现
  • cherry-pick的错误分析

    在cherry pick的时候出现以下错误提示 是对同一提交重复做cherry pick引起的 On branch You are currentlycherry picking all conflicts fixed run gitcom
  • 2023华为OD机试真题【最短木板长度/贪心算法】

    题目描述 小明有 n 块木板 第 i 1 i n 块木板长度为 ai 小明买了一块长度为 m 的木料 这块木料可以切割成任意块 拼接到已有的木板上 用来加长木板 小明想让最短的木板尽量长 请问小明加长木板后 最短木板的长度可以为多少 输入描
  • 自媒体工具网站

    黑镜虚拟科技 MetaMaker V2 2 1 B22 11 01 10 48 18 Giios自动写作机器人 Giiso写作机器人 一款内容创作AI辅助工具 视频背景音乐自动匹配工具 巨量创意 图片微动工具 巨量创意 网络资源所搜工具 百
  • CVE-2023-32315:Openfire管理控制台身份验证绕过到RCE的复现

    CVE 2023 32315 Openfire管理控制台身份验证绕过到RCE复现 前言 本次测试仅供学习使用 如若非法他用 与本文作者无关 需自行负责 一 Openfire简介 Openfire是根据开源Apache许可证授权的实时协作 R
  • es6怎么将对象转换为指定数组格式

    let obj a 1 b 2 c 3 var aa Object values obj 1 2 3 console log aa var arr Object entries obj console log arr 0 2 a 1 1 2
  • 过流检测与保护电路

    在数字压力开关项目中 压力表的输出电路开关负载 输出电路要求负载电流最大为50mA 需要在负载电路中加一个电流检测和保护电路 在负载高电压一端或者低电压一端串入一个高精度小阻值采样电阻 电阻值的选取要注意分担的电压和功率不能太大 同时也要主
  • 超大规模数据库集群保稳系列之三:美团数据库容灾体系建设实践

    本文整理自美团技术沙龙第75期的主题分享 美团数据库攻防演练建设实践 系超大规模数据库集群保稳系列 内含4个议题的PPT及视频 的第3篇文章 本文重点介绍了美团数据库的容灾体系建设实践 主要内容包括业务架构 数据库容灾平台能力建设 演练体系
  • VS打开项目或解决方案卡死,一直处于未响应状态。

    VS打开项目或解决方案卡死 一直处于未响应状态 参考文章 1 VS打开项目或解决方案卡死 一直处于未响应状态 2 https www cnblogs com dh123 p 10474694 html 备忘一下
  • Linux系统(Centos 7)redis

    1 redis背景 1 1 什么是NOSQL nosql not only sql 不仅仅是sql NoSQL 泛指非关系型的数据库 非关系型的数据库则由于其本身的特点得到了非常迅速的发展 非关系数据库和关系型数据库之间的区别 RDBMS
  • LR11_RUN-TIME SETTINGS配置解读

    LR11中RUN TIME SETTINGS重要配置解读 1 配置入口 右键选中任意一个ACtions 2 Run Logic配置说明 PS LR12还多一个脚本执行策略的配置 多个ACTION时是顺序执行 还是随机执行 3 Pacing配
  • 0.IDA-基本操作

    打开IDA 拖拽一个EXE文件进去 首先会弹出如下窗口 Kernel option1 Kernel option2 Processor option这三个选项会控制反汇编引擎的工作状态 一般按默认即可 大多数情况下 分析选项的默认值在准确性