逆向工具之IDA的使用
IDA的使用
- IDA打开文件
- IDA关闭文件
- IDA窗口介绍
- 切换图形界面和文本结构界面
- 显示硬编码——>ACDU指令
- A指令
- C指令
- D指令
- U指令
- 跳转指令:G(go)
- 搜索指令 ALT+T
- N指令
- 创建结构体 ,修改全局变量,修改局部变量
- 注释
- 交叉引用
交互式反汇编器专业版(Interactive Disassembler Professional),人们常称其为IDA Pro,或简称为IDA。是目前最棒的一个静态反编译软件,为众多0day世界的成员和ShellCode安全分析人士不可缺少的利器!IDA Pro是一款交互式的,可编程的,可扩展的,多处理器的,交叉Windows或Linux WinCE MacOS平台主机来分析程序, 被公认为最好的花钱可以买到的逆向工程利器。IDA Pro已经成为事实上的分析敌意代码的标准并让其自身迅速成为攻击研究领域的重要工具。它支持数十种CPU指令集其中包括Intel x86,x64,MIPS,PowerPC,ARM,Z80,68000,c8051等等。
IDA Pro 7.0破解版:http://www.32r.com/soft/42075.html(内含安装步骤)
IDA打开文件
打开IDA后,把我们要分析的文件拖到IDA就行。
IDA关闭文件
当我们用IDA打开要分析的文件时,在这个文件下方会同时生成4个数据库文件,这些文件都是当前的IDA程序。
关闭IDA的时候要注意:
IDA窗口介绍
切换图形界面和文本结构界面
这是一个图形化的界面(CTRL+滚轮可以控制大小)
,有时还有流程图,如果不喜欢这个图形结构,
可以按住空格,就能看到一个文本结构的界面
按空格后:看到一个文本结构的界面(图形结构——》文本结构),再按一次空格又可以回到图形结构界面
这样的界面看上去就全是代码了,很多做逆向分析的人更喜欢这个界面
导航条: 一个PE文件包括数据区,代码区,常量区等,这些不同的块,不同的颜色就代表不同的块
IDA View-A:反汇编窗口,打开程序的时候,一般都是停留在反汇编窗口
Hex View-1:想看当前程序的十六进制文件,可以点击这个窗口HEX
Structures: 结构体
Enums: 枚举类型
Imports: 如果想看当前程序用了哪些模块,用了哪些模块的哪些函数,可以点击imports
Exports: 想看当前程序导出了哪些函数,可以点击exports
结构体是由一批数据组合而成的一种新的数据类型。组成结构型数据的每个数据称为结构型数据的“成员”。
shift+F12可以转到字符串窗口
ctrl+e可以到达程序开始的点(start函数)
刚用IDA打开文件,汇编前面没有地址,怎么打开地址呢?Options——》general——》Disassenbly——》右半边的Line prefixes(graph)【行前缀(图形)】
F5或者点tab键——》都可以把汇编代码反编译成类C代码(类似于C语言的代码,也叫做伪代码)
双击后进入某一个界面,按ESC可以退回
快捷键X或者ctrl+X:交叉引用(看看谁用了这个字符串/地址)
选择某函数,按N:重命名(重要!),要养成重命名的习惯。
怎么知道一个文件是用什么语言写的,有没有加壳?用工具DetectItEasy或者exeinfo PE或者PEiD
静态分析用IDA,动态调试用x64dbg(调试32或64位的)或者是Ollydbg(调试32位的)
显示硬编码——>ACDU指令
任何的一个可执行文件,最终都是由硬编码组成(准确来说是由二进制组成),二进制里面包含了很多CPU能识别的指令,这些指令称为硬编码
把当前文件的硬编码指令显示出来:
选择options——》点击general
exe程序在指令部分都是由这些硬编码组成,每一行硬编码都对应一个具体的汇编代码,所以IDA替我们把这些硬编码转换为汇编代码。
A指令
把当前的数据用字符串的形式来显示
C指令
把当前的数据安照代码(code)的形式来显示
D指令
把当前的数据用数据(data)的形式来显示
U指令
把当前的数据用普通的原始字节的形式来显示(undefined未定义)
ACDU指令:某个数据它显示的不合理,可以告诉IDA你以什么形式来对这个数据进行显示
现在我想以字符串的形式来显示它:用A指令
现在我想以数据的形式来显示它:用D指令
按一次d会以db的形式显示,再按一次会以dw形式显示,再按一次d会以dd的形式显示
现在我想以代码的形式来显示它:用C指令
如果不想对它进行定义,按U
跳转指令:G(go)
在实际逆向过程中,经常需要进行跳转
搜索指令 ALT+T
N指令
改名字,这个指令可以说是最重要的指令
真正的逆向分析就是要弄清函数做了什么事,真正起名字的过程就是逆向分析的过程
真正的逆向人员是不会用F5直接把汇编变成C语言的
F5是不准确的,它识别不了的地方他会省略掉,F5生成的代码没有任何可读性,远远没有直接看汇编代码更加清晰。
一个真正的逆向分析就是一个起名字的过程
创建结构体 ,修改全局变量,修改局部变量
在我们分析函数的过程中,可能看到了某处用到了一个结构体(我们自己分析出来的结构体,IDA本身也能自己替我们识别出来一些系统层面的结构体)
假如我们自己分析出来一个结构体,但是IDA里面还没有这个结构体,我们就可以点开structures这个窗口,在这个窗口新增一个结构体
步骤:打开structures这个窗口——》Edit——》Add struct type
那么想在结构体里面添加成员,选择按D,就会给我们新增一个成员:
这个成员的名字和类型都是可以改的(改名字用N,改类型用D)
万一这个成员是一个结构体怎么办,不是一个普通的dword,或者是dw?
选中这个类型ALT+Q——》就会列出当前ID识别出所有的结构体:
第三个结构体是一个DWORD数组,怎么办:
改为dd,选中后单击右键,选择数组array,定义数组长度
局部变量选择结构体的快捷键是P
全局变量选择结构体是ALT+Q
注释
三种常用的注释:
1、直接按分号; 会弹出一个窗口,在窗口中就可以直接写注释的内容了(它引用 的地方会出现副本)
2、按冒号:它引用 的地方不会出现副本
3、希望每次分析完一个函数以后,能在上面写一个注释
针对函数的注释:选中当前函数的函数名,选中它,按分号,就可以直接写注释了(用来描述当前函数的基本特征)
交叉引用
想看引用某个函数的所有地方,点中函数名——》View——》Open subviews——》Cross reference
点开后出现一个界面,这个界面会出现所有引用这个函数的其他的地方
某一个数据,全局变量也可以安装这个方法进行查看
逆向工具之IDA的使用相关推荐
- 【Android 逆向】Android 逆向工具 ( Apktool | IDA | Python )
文章目录 一.Apktool 二.IDA 三.Python 一.Apktool 参考 [Android 安全]DEX 加密 ( 常用 Android 反编译工具 | apktool | dex2jar ...
- 【逆向工具】IDA使用5-( string、图形化与视图的切换、图形化显示反汇编地址、自动注释、标签使用)...
分析petya病毒时新学会的技巧. IDA技巧1 : string 提取文件中的字符串内容,如果看到一些文件字符串可以定位到关键的函数中. view -> open subview -> ...
- java反编译工具_Android APP 取证之逆向工具篇
一.前言 此系列文章将针对 Android APP 取证领域展开讨论.在国内,由于最近几年国产手机厂商之间的竞争和努力,如今 Android 平台的使用数量和广度,已经远超苹果的 iOS 了.如今 A ...
- 【世界上最优秀的逆向分析工具】IDA Pro6.1绿色版
[世界上最优秀的逆向分析工具]IDA Pro6.1绿色版 让编程改变世界 Change the world by program 世界上最优秀的静态逆向工具没有之一 [caption id=" ...
- java反编译工具_ReverseTool逆向工具集合
反向工具 逆向工具集合 真棒骇客 Java和Jar(Android) jd-gui jar包浏览工具,对应的IDE插件,JD-Eclipse / JD-IntelliJ Luyten一个用于Procy ...
- Black Hat | PE Tree:BlackBerry 发布PE文件开源逆向工具
聚焦源代码安全,网罗国内外最新资讯! 编译:奇安信代码卫士团队 BlackBerry 在今年举办的美国黑帽大会上为网络安全社区发布了一款新工具:PE Tree. PE Tree 是一款适用于 Lin ...
- usb3.0导入工具pe_BlackHat大会上,BlackBerry宣布开源逆向工具PE Tree
在8月3日举办的BlackHat大会上,BlackBerry宣布开源PE逆向工具--PE Tree.PE Tree是由BlackBerry 研究团队研发的使用pefile和PyQt5 来以树形查看PE ...
- 反编译 逆向工具集合
Java & Jar (Android) jd-gui jar包浏览工具,对应的IDE插件,JD-Eclipse/JD-IntelliJ Luyten An Open Source Java ...
- 逆向经验 + 逆向工具
目标:某桔充电 Day1 1.请求抓包,锁定路径为station-api/station/search的请求,对比多个请求的参数,确定要逆向的参数为:url的wsgsig(dd03).headers中 ...
最新文章
- 新国立尤洋:夸父AI——用于大规模并行训练的统一深度学习系统
- COM和ATL学习方法
- Springboot默认加载application.yml原理
- mysql关系数据库_关系型数据库MySql简介
- Python爬虫抓取 python tutorial中文版,保存为word
- ORM框架之Mybatis(三)延迟加载、开启一二级缓存及使用注解增删改查
- nginx 日志和监控
- 安装和运行,意思差异应该很明显
- Tomcat修改端口号图文详解
- 微信小程序 在wxml写过滤器 脱敏手机号
- Linux:DNS域名解析服务
- 支付宝小程序: h5跳转 小程序
- 40.凉鞋问题 11月21日
- 服务器 虚拟机 融合,爱数AnyVM与VMware的全面融合
- 如何防止驱动被恶意利用
- GMap常用属性(方法)简介
- IE和chrom兼容性分析(持续更新)
- Python冲击省一蓝桥杯 DFS集锦
- QD77MS2速度控制模式案例
- 机器翻译c语言,最详细的注释,看不懂你来打我