IDA Pro 是一种功能强大且灵活的反汇编工具,可以在许多领域中发挥作用,例如漏洞研究、逆向工程、安全审计和软件开发等,被许多安全专家和软件开发者用于逆向工程和分析二进制代码。它支持大量的二进制文件格式和CPU架构,并提供了强大的反汇编和反编译功能。使用IDA Pro,用户可以查看和编辑汇编代码、查看函数和程序结构,并分析代码执行逻辑和漏洞。此外,IDA Pro还具有脚本编程和插件扩展功能,使用户能够轻松自定义和改进其功能。

IDA官方网站:https://hex-rays.com/

IDA的启动非常简单,只需要双击打开ida.exe即可,打开后读者可看到如下图所示的提示界面,当然读者如果需要逆向分析64位应用程序则需要打开文件内的ida64.exe即可,一般而言读者可通过New按钮来选择新建一个反汇编任务,也可以直接通过Go按钮来直接进入反汇编工具主页,当然如果读者有以前分析过的工程项目则可以通过Previous按钮快速跳转到待分析项目中;

我们以New为例,当打开后则提示读者需要选择一个被分析文件,当选择后会自动弹出如下所示的选项卡,选项卡中已经为我们识别出待分析程序的相关内容,读者只需要点击OK按钮即可打开IDA桌面环境;

当读者成功加载了被分析文件,则IDA会呈现出如下图所示的,其中最左侧的Functions列表代表的是当前IDA所分析出的内部函数,这些函数片段通常是编程者自己的一些子过程以及一些第三方API接口,桌面的右侧最大的部分则是IDA的主要工作台,其中IDA View-A代表的是当前被分析程序的反汇编代码,Hex View-1则是十六进制格式的机器码,Structures代表的是IDA所解析出来的结构体参数,Enums代表的是枚举类型的定义数据,Imports是导入表,Exports则是导出表。在IDA的最底部则是输出信息,此处的信息有IDA自身信息,也有程序调试信息等;

在桌面的最顶端是IDA的彩色水平带也叫做导航带,导航带中是被加载文件地址空间的线性视图,默认情况下它会呈现出二进制文件的整个地址范围,读者可以右击导航带内任何位置,并选择一个可用的缩放选项,放大或缩小显示的地址范围,同时导航带中会存在一个黄色的指针,当点击后会提示用户当前指针所对应的文件位置,该导航带对于代码分析可以起到很好的预览目的。

在IDA窗口中读者最需要关注的窗口则是IDA View-A反汇编窗口,在反汇编窗口中读者可根据自身需求对代码进行分析,其次IDA窗口中可实现动态绘图的功能,当读者需要对特定区域中特定函数进行绘图时只需要选中该函数的头部,并右键选择GraphView按钮,则可将当前函数绘制成图;

当绘制成流程图以后,读者可通过按下Ctrl+鼠标中键滚动以此来实现对流程图的放大和缩小,在绘图模式下读者也可以通过点击不同的分支结构从而实现跳转到不同位置处,在绘图模式下,一般而言绿色线条代表跳转为真,红色线条代表跳转为假,而蓝色线条则代表无条件跳转,另外按下空格还可实现汇编与绘图窗口的灵活切换,如下图所示;

除了简单的绘图功能外IDA还提供了F5插件,运用该插件可对特定区域反汇编代码生成C语言格式的流程代码,读者只需要选中一段内存代码片段,并按下F5即可看到如下伪代码输出格式;

针对IDA工具的使用技巧还有许多,此处仅仅只是抛砖引玉带读者入门,如果需要获取更多关于IDA工具的使用方法,还得通过不同的积累学习,本章不可能将IDA中的每一个细节都概括到;

3.0 熟悉IDAPro静态反汇编器的更多相关文章

  1. C++ 基于Capstone实现反汇编器

    Capstone是一个反汇编框架,提供了一个简单.轻量级的API接口,可透明地处理大多数流行的指令体系,包括x86/x86-64.ARM及MIPS等.Capstone支持C/C++和Python,并且 ...

  2. longblogV1.0——我的静态博客发布系统

    longblogV1.0——我的静态博客发布系统 环境依赖: python3-markdown 作者:IT小小龙个人主页:http://long_python.gitcafe.com/电子邮箱:lon ...

  3. 转: MyEclipse 10.0,9.0,8.0 下添加jadClipse反编译插件

    MyEclipse 10.0,9.0,8.0 下添加jadClipse反编译插件 (2012-11-19 15:36:35) 转载▼ 标签: myeclipse jad 反编译 插件 it 分类: M ...

  4. 基于ARM处理器的反汇编器软件简单设计及实现

    写在前面 2012年写的毕业设计,仅供参考 反汇编的目的 缺乏某些必要的说明资料的情况下, 想获得某些软件系统的源代码.设计思想及理念, 以便复制, 改造.移植和发展: 从源码上对软件的可靠性和安全性 ...

  5. vs2010下编译osip2和eXosip2的4.0.0版的静态库及搭建开发环境

    转载于:http://blog.csdn.net/lbc2100/article/details/48293911 本文为参考网上的动态库的方式,进行静态库的实现,在此对动态库的作者表示感谢. 第一步 ...

  6. (二)SpringBoot2.0基础篇- 静态资源的访问及Thymeleaf模板引擎的使用

    一.描述 在应用系统开发的过程中,不可避免的需要使用静态资源(浏览器看的懂,他可以有变量,例:HTML页面,css样式文件,文本,属性文件,图片等): 并且SpringBoot内置了Thymeleaf ...

  7. ASP.NET Core 1.0基础之静态文件处理

    来源 这些HTML , CSS files, image files, 和JavaScript这些静态文件,是ASP.NET能够直接响应给客户端的.本文详述下ASP.NET和静态文件的关系. Serv ...

  8. 使用springboot 2.0后,静态资源默认路径无法访问

    原因在于:META-INF/resources / resources / static / public 都是spring boot 认为静态资源应该放置的位置,会自动去寻找静态资源 然而,在2.0 ...

  9. ubuntu16.0.4 设置静态ip地址

    由于Ubuntu重启之后,ip很容易改变,可以用以下方式固定ip地址 1.设置ip地址 vi /etc/network/interface # The loopback network interfa ...

  10. 【转】编译Lua5.3.0的iOS静态库

    This is a tutorial on how to compile Lua 5.3.0 as an iOS static library (liblua.a) on Mac OS X 10.10 ...

随机推荐

  1. 关于_beginthreadex和CreateThread的区别

    关于_beginthreadex和CreateThread的区别 在 Win32 API 中,创建线程的基本函数是 CreateThread,而 _beginthread(ex) 是 C++ 运行库的 ...

  2. 【3rd Party】nlohmann json 基础用法

    参考链接:Here 什么是nlohman json ? nlohman json GitHub - nlohmann/json: JSON for Modern C++ 是一个为现代C++(C++11 ...

  3. [译]为什么你应该关注 Docker

    注:该文原文为 Why You Should Care About Docker ,由 CHRIS DAWSON 编写. 当我在 Dockercon 上陶醉于那些令人激动地议题时,我想到了一个问题:我 ...

  4. Mynavi Programming Contest 2021(AtCoder Beginner Contest 201)A ~ E题题解

    A - Tiny Arithmetic Sequence 水题,判断3个数是否能构成等差数列 void solve() { int a, b, c; cin >> a >> b ...

  5. 你想怎么使用 Serverless 函数计算?(评测赢好礼 )

    随着云计算发展,云原生热度攀升,Serverless 架构崭露头角且发展势头迅猛.不仅被更多开发者所关注,市场占有率也逐年提高.阿里云函数计算(Function Compute)是一个事件驱动的全托管 ...

  6. Linux vim-go 开发环境搭建

    本文介绍 Linux 下 vim-go 的开发环境搭建.主要参考这篇博客进行的配置,其中记录了几个搭建环境时遇到的问题. 1. vim-go 开发环境搭建 1.1 用户隔离 由于使用的是共享宿主机,为 ...

  7. spring IoC 源码

    spring IoC 容器的加载过程 1.实例化容器: AnnotationConfigApplicationContext 实例化工厂: DefauiltListableBeanFactory 实例 ...

  8. 13个构建RESTful API的最佳实践

    前言 Facebook.GitHub.Google和其他许多巨头都需要一种方法来服务和消费数据.在今天的开发环境中,RESTful API仍然是服务和消费数据的最佳选择之一. 但你是否考虑过学习行业标 ...

  9. [kubernetes]服务健康检查

    前言 进程在运行,但是不代表应用是正常的,对此pod提供的探针可用来检测容器内的应用是否正常.k8s对pod的健康状态可以通过三类探针来检查:LivenessProbe.ReadinessProbe和 ...

  10. Redis-键