01-从零开始用IDA做逆向

0x01、IDA是什么

交互式反汇编器专业版(Interactive Disassembler Professional)简称为IDA。IDA Pro是一款支持交互、可编程的、扩展插件、支持多种处理器的逆向工程利器。

0x02、为什么要用IDA Pro?

为什么要用IDA?因为OD是一个只能调试32位程序的调试器。而IDA Pro可以调试32位、64位的程序。除了可以静态反汇编程序,还支持作为调试器对程序调试。

中国人逆向喜欢用OllyDbg:https://ti.360.net/blog/articles/suspected-molerats-new-attack-in-the-middle-east-en/

国外专家Vitali Kremez喜欢用OllyDbg+IDA:https://www.vkremez.com/2018/12/lets-learn-dissecting-apt28-zebrocy.html

IDA支持不同的操作系统环境(例如Windows,Linux或Mac OS X)上运行,也支持远程调试:

IDA支持的微处理器体系结构列表:

0x03、判断程序是32位还是64位

因为crackme.exe是一个32位可执行文件,所以要使用32位IDA版本打开。判断EXE文件是32位还是64位,有很多方法。

PE文件里的NT头->FileHeader->machine这个字段声明PE是哪个平台下运行的,比如32位程序内容是I386 (14Ch)。

struct IMAGE_NT_HEADERS NtHeader
struct IMAGE_FILE_HEADER FileHeader
enum IMAGE_MACHINE Machine

识别比较快的方法是看PE字段后面跟着的值,以PE后面跟着的字母为例:PE..d?字样后的符号是一个64位文件。而crackme.exe的PE之后是:PE..L,所以这是一个32位文件:

0x04、IDA逆向程序-选项卡介绍

打开Crackme。选择“ new”打开一个新文件,会自动识别PE文件的类型:

默认设置单击 “OK”,如果同意显示 ”Proximity View”模式会显示出图形化的界面,在树形模型下显示出Crackme里的函数信息,可以很直观的看出来程序跳转的关系。:

  • 使用快捷键(空格键),可以在图形模式(*Graph*)或普通文本模式之间切换。
  • 在“ Options(选项) - General(常规)”,选中“ Line prefixes(行前缀)”可以显示跟内存地址有关的更多信息。选中“Number of opcode bytes(操作码字节数)”,可以显示操作码。

  • 访问View-Open Subview,可以打开特定功能的选项卡。

在IDA的图形屏幕上会看到许多具有相同地址的位置。例如在开始(start)函数,地址会重复很多次。因为这条地址的信息很多,多到同一条地址上显示不完。

找到重复的同一地址结尾。在这种情况下对应地址00401000的反汇编指令为push 0

通过“Windows-Save Desktop"设置了常用的窗口和选项卡:转到Windows-Save Desktop,然后选择“ Default ”保存默认配置。

在IDA选项卡上,例如FunctionStringsNames等。可以用快捷键按CTRL + F搜索。View-Open Subview-Strings中,IDA会根据搜索关键字显示出有“ try”的字符串,如下图所示:

  • 选择View-Open Subview-Disassembly,可以打开第二个反汇编窗口,之后还可以使用第一个反汇编窗口访问其他功能,让分析人员方便分析程序的其他功能。与OllyDbg / x64dbg相比起来,这是IDA的优势:

IDA还提供类似于OllyDBG / x64dbg的“Dump”(十六进制显示窗口)。在IDA中这样的窗口称为“ Hex View”。可以通过View(视图)-Open Subview(打开子视图)-Hex dump(十六进制转储)显示:

Open Subview中,还可以通过Imports选项卡访问跟程序导入函数有关的信息,如下所示:

左下角看到另一个叫“ Graph overview”的小屏幕(如果没有可以通过“View(视图)-> Graph Overview(图形概述)”的位置打开)。这个窗口显示了正在分析的功能代码块,可以让分析人员快速地在代码块之间来回移动。

IDA还其他很有用的选项卡,例如“ Structures”,“ Exports”,“ Names”,“Segments ”等。顶部导航栏(navigator)用不同的颜色显示出文件的不同部分。

描述性信息每种颜色都有含义,例如,灰色是.data部分,粉红色对应外部符号idata部分和蓝色字体对应在代码部分检测到的功能。

0x05、参考

原文地址:https://www.cnblogs.com/17bdw/p/12239505.html

时间: 2024-10-14 04:16:46

01-从零开始用IDA做逆向的相关文章

02-从零开始用IDA做逆向-进制的基础知识、搜索功能的使用

02-从零开始用IDA做逆向 0x01.进制的概念 计算机中的进制概念是初学者必须知道的基础知识,学习逆向或者构造漏洞利用的时候会接触到这层面知识.二进制,十进制和十六进制的基本概念如下: BINARY(二进制数):由两个数字0和1组成. DECIMAL(十进制数):数字由10位数字(从0到9)组成 HEXADECIMAL(十六进制数字):所有数字都用0到F(从0到9,再加上A,B,C,D,E和F )的字符组成,总共有16个字符.其中:A = 10,B = 11,C = 12,D = 13,E

IDA Pro逆向实战之Crackme(简单篇)

今天手闲的很,没事就拿出了以前没解决的逆向题来做一下,具体的源程序在附件里,废话少说,直接上菜: 0.   源程序运行效果(输入不对的,直接退出): Exeinfo PE 查壳: 看到是无壳的小程序,看来练手一定会很容易!!!那接下来直接载入到IDA中看看程序执行逻辑吧! IDA Pro 查看程序执行逻辑 这里截的是一张白图,不过对于分析程序流程已经足够了,顺便解释下图里的红线是False分支执行的,绿线是True分支执行的,大致看下这里的分支不是很多,所以这个程序逆起来应该不是很复杂! 3.

JS-DOM . 01 了解DOM,动手做一下就明白了!

DOM概述 html加载完毕,渲染引擎会在内存中把html文档生成一个DOM树,getElementById是获取内DOM上的元素,然后操作的时候修改的是该元素的属性 体验事件/事件三要素1.事件源(引发后续事件的标签2.事件(js已经定义好,直接使用3.事件驱动程序(对样式和html的操作)(DOM操作 需求:点击盒子,弹出对话框alert(1)步骤:-->1.获取事件源(document.getElementById("box")2.绑定事件 (事件源.事件 = functi

3.24网络攻防选拔题部分write up

20175221  3.24网络攻防选拔题部分write up Q1:百度一下,你就知道 解压题目得到一个文件夹和一个网址 打开文件夹,有三张图片 用winhex和stegsolve查看三张图片,没有发现异常.Kali里面binwalk跑一下,也没有隐藏文件.不太像隐写题,可能是web,将目标移到网址上. 打开网址,F12开发者工具 发现最底下script下的字符串可疑,复制粘贴用base解. 将字符串先转base16,再转base64,得到flag. Q2 解压题目得到一张图片,但是无法打开.

【Bugly干货分享】手把手教你逆向分析 Android 程序

很多人写文章,喜欢把什么行业现状啊,研究现状啊什么的写了一大通,感觉好像在写毕业论文似的,我这不废话,先直接上几个图,感受一下. 第一张图是在把代码注入到地图里面,启动首页的时候弹出个浮窗,下载网络的图片,苍老师你们不会不认识吧? 第二张图是微信运动步数作弊,6不6?ok,那我们从头说起 1.反编译 Android 的反编译,相信大家都应该有所了解,apktool.JEB 等工具我们先看一下 Apk 文件的结构吧,如下图: 1.META-INF:签名文件(这个是如何生成的后面会提到)2.res:

0-1背包的动态规划算法,部分背包的贪心算法和DP算法------算法导论

一.问题描述 0-1背包问题,部分背包问题.分别实现0-1背包的DP算法,部分背包的贪心算法和DP算法. 二.算法原理 (1)0-1背包的DP算法 0-1背包问题:有n件物品和一个容量为W的背包.第i件物品的重量是w[i],价值是v[i].求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大.其中每种物品只有一件,可以选择放或者不放. 最优子结构性质:对于0-1问题,考虑重量至多W的最值钱的一包东西.如果去掉其中一个物品j,余下的必是除j以外的n-1件物品中,可以带走的重量

为了CTF比赛,如何学习逆向和反汇编?

作者:无名侠链接:https://www.zhihu.com/question/23810828/answer/138696052来源:知乎著作权归作者所有,转载请联系作者获得授权. 元旦节马上就要过去,赶紧趁着12点之前写完回答. ====如果觉得本文对你有用,请点个赞并关注一下我吧~==== 我做逆向大概四年左右,虽然我没有参加过CTF,但还是可以写一些关于如何学习逆向方面的内容~ 逆向实际上是很枯燥的工作,我能从枯燥中感到快乐,这就是支撑我学习逆向的动力了. 学习逆向后有什么用?难道就仅仅

[逆向][Writeup]EIS2016 chkflag - .NET程序逆向

这是一道比较简单的逆向题,难点之处在于chkflag.exe是.NET编译生成的,如果用IDA进行逆向难度很大,因此本题主要考察.NET逆向工具的使用.题目中使用的二进制文件可以从我的github上下载:https://github.com/gsharpsh00ter/reverse 0x01 工具准备 在对.NET程序进行反编译时,常用的一个工具为.NET Reflector,但是目前该工具是收费的.本例中我们使用另一款开源的.NET反编译工具dnSpy.dnSpy是一款开源的基于ILSpy发

【CTF】逆向:Ollydbg使用初级

Ollydbg是Windows下逆向等的不二法器,学会用Ollydbg是做逆向的前提.看雪论坛上有很多关于这个的教程,讲的非常细.前面也看过的各种逆向理论书,现在该是实践的时候了. OllyDbg 主线程窗口 1. 汇编代码对应的地址窗口2. 汇编代码对应的十六进制机器码窗口3. 反汇编窗口4. 反汇编代码对应的注释信息窗口5. 寄存器信息窗口6. 当前执行到的反汇编代码的信息窗口7~9. 数据所在的内存地址,十六进制,ASCII码10~12.栈地址,存放的数据,对应说明信息 OD基本快捷键及功