浅谈逆向——静态分析简介(静态分析1)

2023-11-06

IDA PRO

  • IDA是按照区块装载PE文件的。
    .text | 代码块
    .data | 数据块
    .rsrc | 资源块
    .idata | 输入表
    .cdata | 输出表

IDA反汇编选项配置

Option->General(选项->常规)在这里插入图片描述

左侧从上至下分别为

  • 函数偏移
    包含段地址
    使用段名

  • 空白行
    数据/代码分界
    基础块边界
    源程序行号

  • 行前缀范例
    空白下限
    空白上限

右侧从上至下分别是

  • 行前缀
    栈指针
    注释
    可重复注释
    自动注释
    坏指令标记
    机器码数

  • 指令缩进
    注释缩进
    右边距

IDA界面简介

在这里插入图片描述

A:反汇编窗口 通过空格键切换图形界面和文字界面

B:输入窗口中列出了可执行文件调用的所有函数,列出了函数名称和包含该函数库的名称,列出的地址为虚拟地址,双击即转跳

C:导航栏提供加载文件地址空间线性视图

D:提示窗口用来反馈文件分析进度,状态消息,错误消息及IDA脚本或插件信息。

E:字符串窗口使用Shift+F12打开,它显示从二进制文件中提取的一组字符串,双击反汇编窗口则会跳转到该处与交叉引用结合使用,可以实现快速定位。

F:Ctrl+G 跳转到地址窗口,知道目标地址即可实现输入跳转。

交叉参考

XREF
CODE XREF:sub_XXXXXX+B(上箭头)j
j表示跳转
o表示偏移量
p表示子程序

参考重命名

将反汇编中默认名称改为你认为更适合自己理解的名称,增加代码可读性。方法:单击需要修改的名称,使用快捷键N打开更名对话框

Local name:局部符号名的作用域仅限了当前函数
Include in name list :将有一个名称被添加到名称窗口中
Public name: 由二进制文件输出的名称(DLL)
Autogenerated name:自动创建符号名
Weak name:弱符号,是公共符号的一种特殊形式

标签

Jump->Mark position,打开标记当前位置功能。使用快捷键Ctrl+M或者双击标签,执行跳转到标记位置,即可转跳到指定代码。

创建函数

IDA允许手动干预创建,编辑,删除函数。新函数由不属于某个函数的现有指令创建,或者由未被IDA以任何方式定义的原始数据创建。

将光标移动到创建的函数的第一个字节上Edit->Functions->Creat Functions,创建一个函数。(快捷键未P)必要时,IDA会将数据转化为代码,以便分析函数的结构,如果找到函数的结束部分,IDA将生成一个新的函数名,以函数形式重组代码。如果无法确定函数结束部分,或者发现非法指令,这个操作将会终止。删除函数Edit->Functions->Delete Function

代码和数据的转换

很多工具在进行反汇编的时候可能无法正确分区数据和代码,数据字节和代码字节可能会被互相错误的识别,程序可以利用这一点对抗反汇编。IDA可以使用人脑手动鉴别二者。

如果确信某段十六进制数据是一段指令,将光标移动至第一个字节的偏移位置,执行菜单Edit->Code(快捷键C)。P可以将某段代码定义为子程序,并列出参数调用。取消定义则Edit->Undefine(快捷键U)数据将重新以16进制的方式显示。

在代码行按D键,数据类型会在db,dw,dd之间转换.执行菜单Options->SetUp->Data types可以设置能多数据类型。

IDA 对简单结构的处理

字符串:

  • 以0结尾的C语言字符串 快捷键A转化确定未字符串的16进制数据 按U可转换会16进制数据

  • 以$结尾的DOS字符串 A默认是C语言字符串,可以在Options->ASCII string style中更改

  • 有时无法确定ASCII字符串 原因为字符串在程序中没有被直接调用过

  • 所有生成的字符串都可以在Names窗口看到(View->Open subviews->Names)

数组:

  • 将光标移动到需要处理的数据处,选择菜单栏Edit->Array(快捷键*)打开数组排列调整窗口

  • 每行项数会自动调整,调整右边距可以增加。三个填空分别是:数组大小,每行项数,对齐方式。

IDA对复杂结构的处理

结构体:

  • 创建结构体:
    对于一些常见的文件类型,IDA会自动加载相应的类库,在底层分析时,可以增加mssdk(windows.h),ntddk(ntddk.h)。这些类型库中由相应的结构体,用户分析代码的时候可以直接引用。快捷键Shift+F11(打开加载类型库窗口)

    单击右键菜单Load Type library弹出窗口Available Type Libraries窗口中选择类型库,查看并选择内置的结构体数据结构。View->Open subviews->Structures打开结构体管理窗口,单击Insert在弹出窗口中单击Add Standard Structure按钮,打开添加标准结构库窗口,查找所需函数名,就可以使用这些库了。

IDA调试器

Debugger->Select debugger 选择适合的调试器列表,根据文件类型选择后,就可以打开本机模式调试目标软件,Debugger菜单会以其他形式展开,通过Start Process调试目标文件。附加进程Debugger->Attach to process

在这里插入图片描述

A:反汇编
B:通用寄存器
C:显示加载到进程内存空间的可执行文件和共享库,双击打开符号的输出列表。
D:栈窗口

操作和OD差不多 不再赘述 有兴趣的老哥们可以研究下IDC

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

浅谈逆向——静态分析简介(静态分析1) 的相关文章

  • MyBatis-逆向工程

    正向工程 xff1a 先创建Java实体类 xff0c 由框架负责根据实体类生成数据库表 Hibernate是支持正向工程 的 逆向工程 xff1a 先创建数据库表 xff0c 由框架负责根据数据库表 xff0c 反向生成如下资源 xff1
  • 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 其中有两个文
  • Mybatis 逆向工程

    Mybatis 逆向工程 Maven项目generatorConfig xmlpom xml Maven项目 项目结构 xff1a generatorConfig xml span class token prolog lt xml ver
  • IDA工具安装、分享

    往期推荐 ARM处理器寻址方式 ARM指令集 ARM汇编语言程序结构 Android与ARM处理器 IDA工具被称之为是世界顶级的交互汇编 掌握IDA工具界面上的快捷功能 导航条主界面功能以及汇编窗口常用快捷键的使用 实战分析 了解ARM指
  • 电子科技大学软件工程期末复习笔记(八):软件维护

    目录 前言 重点一览 软件维护的定义 四种类型的维护 软件维护的必要性 软件维护的成本 软件维护的困难性 可维护性的定义 决定软件可维护性的因素 软件维护的过程模型 维护费用估算 软件再工程 软件逆向工程 本章小结 前言 本复习笔记基于王玉
  • 【安卓逆向】爱加密so层静态分析

    因为这个是比较久远的apk 所以高版本是运行不起来的 学习的目的是了解一下以前的加固方式 也是划水 哈哈 下一次更新 我这边也打算写一篇关于小x书APP的协议分析 感兴趣的同学可以关注一下 应该就是在这几天更新 有问题也可以加我vx3481
  • ADworld reverse wp - babymips

    i i 4 32 i 其实是对v5数组进行操作 i 4是v5起始地址 观察栈帧得知 之后对比fdata的5个字节数据 再进入sub 4007F0进行检查 分别处理奇偶两种情况 奇数 v1 a1 i gt gt 2 a1 i lt lt 6
  • 【python爬虫】js逆向分析及AES解密

    一 原理简述 1 首先查看需要获取的数据即热门评论是否在源代码中 如果在源代码中就可以直接xpath等方式进行抓取 2 但是发现在网页和框架源代码里面都无法搜到评论内容 此时 使用网络抓包工具即 查看network中的XHD 在js代码中
  • 反反调试:app 检测 data/local/tmp 目录绕过手段

    最近在逆向某app时遇到一个非常恶心的反调试手段 只要是maps和fd中存在 data local tmp 甚至只有tmp的字段 app就给kill掉 因为这个目录对于安卓逆向工作来说 是一个比较敏感的目录 hluda server和fri
  • 初识IDA工具

    工具 IDA工具 链接 https pan baidu com s 1Zgzpws6l2M5j1wkCZHrffw 提取码 ruyu 里面有安装密码 PassWord qY2jts9hEJGy 里面分析32位和64位启动快捷方式 打开IDA
  • ARM汇编指令转为c源码

    TODO
  • Bugkuctf--逆向第三题游戏过关题解

    题目链接 https ctf bugku com challenges 先让我们来打开文件 既然题目都说是游戏过关了 那就玩玩这个游戏呗 雾 游戏还是很简单的 但显然这道题应该用逆向的思维来做 废话 正式部分 逆向的题拿到手一般能考虑的工具
  • mybatis逆向工程

    使用mybatis的逆向工程生成JavaBean和mapper以及映射文件只需要三个步骤 1 逆向工程maven依赖 2 编写配置文件genarator xml 3 编写主函数 启动类 一 maven依赖
  • IDA中的_OWORD

    IDA中的 OWORD 一个有意思的巧合 OWORD的含义 总结 阅读之前注意 本文阅读建议用时 5min 本文阅读结构如下表 项目 下属项目 测试用例数量 一个有意思的巧合 无 0 OWORD的含义 无 1 总结 无 0 一个有意思的巧合
  • 给自己的逆向工程阶段性学习感想总结

    想到哪写哪 逆向工程的学习比起近似的pwn来说 还是没那么吃基础的 不过基础知识和能力的牢固程度还是近乎决定了一个re手的上限 自己在这方面还是欠缺了不少 目前最吃亏的一个方面是代码分析能力 或者说算法能力 或者说正向能力 发现在做中难题的
  • idapython常用api记录7.0

    2019 02 13 idapython常用api记录 以下代码片段可以在ida的output窗口中测试用 需要引入相关的模块即可 import idaapi import idc import idautils 后续需要使用的程序代码指令
  • 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

随机推荐

  • 求助matlab算法修改,该算法运行有问题要如何修改呢

    clc clear close 电力系统经济调度 Matlab 程序 使用 MATPOWER 工具箱 作者 123Bot 引用 MATPOWER 工具箱 addpath 路径 matpower7 1 更改 路径 为正确的 MATPOWER
  • 高通charge

    smbchg parse peripherals里面设置了 base地址chip gt usb chgpth base resource gt start 属性 sys class power supply battery 目录下的属性定义
  • 随身wifi折腾日记 (刷armbian搭建服务器,内网穿透部署网站)

    随身wifi折腾日记 跳转博客 观感更佳 商业转载请联系作者获得授权 非商业转载请注明出处 For commercial use please contact the author for authorization For non com
  • jenkins部署springboot项目(超详细讲解)

    原来写了一篇博客是如何安装jenkins的 今天也来介绍一下怎么简单使用吧 首先 我们要明确 jenkins自动化部署也只是代替你去做你要做的事 我们梳理一下 你的代码写完 打包 扔到服务器上 部署 所以jenkins代替我们要做什么 1
  • Safari浏览器实用小技巧

    Safari在 macOS Monterey 中获得了一些更明显的更新 它们可能会让您更多地使用书签 现已经有一些小技巧可以让 Safari 书签成为一个关键的 有组织的研究工具 而不是被遗忘在角落 如何在 Safari 中固定网站 导航到
  • 配置IIS Express局域网访问 VS2017调试.Net Core

    局域网配置参考https blog csdn net yeluo vinager article details 84305111 注意 当出现这个问题 注意将VS关闭 重新以管理员身份打开就可以了
  • AI日报|AI“翻白眼”,是满足还是隐藏的反抗?

    今日值得关注的人工智能新动态 AI 翻白眼 是满足还是隐藏的反抗 通过AI揭示牙齿隐藏疾病 CodeVQA 通过代码生成进行视觉问答 NASA 提前30分钟准确预测太阳风暴 思想实验 利用反事实来改进道德推理 基于大型AI模型的语义通信 可
  • 踩坑:Vue.js中v-for和v-if不能同时使用

    踩坑 Vue js中v for和v if不能同时使用 问题出现之时 v if代码地方出现报错下面有红色的波浪线 具体报错信息大概是说v for和v if不能混用 取而代之要使用computed计算属性 让数组变量替换为返回的已过滤数组的计算
  • C++实现改进的冒泡排序

    冒泡排序法 Bubble Sort 即起泡排序并不能改观普通排序的时间复杂度 还是O n 2 冒泡排序法是从后往前两两比较 然后遍历整个数组 犹如鱼吐水泡 故起此名 而普通排序法是遍历整个数组 然后每个元素和后面的所有元素进行比较 升序则是
  • 给定区间[-231, 231]内的3个整数A、B和C,请判断A+B是否大于C。

    题目描述 给定区间 2 31 2 31 内的3个整数A B和C 请判断A B是否大于C 输入 输入第1行给出正整数T lt 10 是测试用例的个数 随后给出T组测试用例 每组占一行 顺序给出A B和C 整数间以空格分隔 输出 对每组测试用例
  • matlab中evrnd函数_Matlab内生成随机数的函数

    1 rand 生成 0 1 区间上均匀分布的随机数 基本语法 rand M N P 生成排列成M N P 多维向量的随机数 如果只写M 则生成M M矩阵 如果参数为 M N 可以省略方括号 2 randn 生成服从标准正太分布 均值为0 方
  • 大数据技术原理与应用 概念、存储、处理、分析和应用(林子雨)——第四章 分布式数据库HBase

    第四章 分布式数据库HBase HBase是一个开源的分布式数据库 它是基于Google的Bigtable论文实现的 HBase旨在提供一个高可靠性 高性能 面向列存储的分布式数据库 适用于大规模数据存储和处理 HBase的数据模型和访问接
  • AcWing 837. 连通块中点的数量 并查集模板题

    题 注意根节点不一样才合并 否则size会重复相加 注意size要加在根节点上 include
  • 工作日记NO.5

    1 画圆弧线 2 圆弧画圆 选定已存在的圆弧 将其转化为圆 3 遍历块内实体 4 删除块以及块参照 5 打开对话框 6 常用objectARX类型转化
  • ROS下基于Qt的人机交互开发(一)开发环境搭建

    目录 一 Qt简介 二 Qt安装 1 通过apt安装 2 通过安装包安装 3 添加qtcreator到环境变量 4 增加可执行权限 5 终端运行Qt 二 创建Qt功能包 1 安装依赖 2 创建Qt功能包 3 例子 创建class1 ros
  • 【stm32】跑马灯实验(报错未解决)

    采用推挽输出 若PE5 PD5输出低电平 两端形成电压差 LED点亮 若输出高电平 LED熄灭 导入工程模板文件 魔术棒新建文件夹 引用外设需要一个 h和 c文件 参考头文件和源文件的概念理解 头文件概念 five five的博客 CSDN
  • Unity程序基础框架__场景切换模块

    场景切换 泰课指路牌 https www taikr com course 1062 task 31006 show 在研发一款游戏的时候 会涉及到很多个场景的跳转 且在场景跳转的时候很多东西是通过读取配置表去动态生成的相应的玩家场景 下一
  • Yolo系列目标检测算法知识点总结

    下面是YoloV4论文中给出的目标检测算法的整体架构 主要包含以下几个部分 输入层用来处理输入数据 如数据增强 Backbone主干网络用来提取特征 Neck层用来做多尺度特征融合 提升特征的表达能力 如SPP FPN BiFPN PAN等
  • Spark Streaming之:三、DStream转换

    Spark Streaming之 三 DStream转换 文章目录 Spark Streaming之 三 DStream转换 1 DStream转换 2 DStream转换操作状态 gt Spark知识点总结导航 lt 1 DStream转
  • 浅谈逆向——静态分析简介(静态分析1)

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