chore: add 计算机安全
This commit is contained in:
FallenYing
2023-08-14 12:06:36 +08:00
parent 2d9163bc19
commit a60ceb5570
10 changed files with 207 additions and 195 deletions

View File

@@ -1,55 +1,59 @@
# 基础工具的使用
IDA pro (交互式反编译器专业版)是二进制安全研究人员必备的反汇编、反编译工具,功能繁多而强大,反编译结果清晰明了。
IDA pro交互式反编译器专业版是二进制安全研究人员必备的反汇编、反编译工具功能繁多而强大反编译结果清晰明了。
IDA pro 是收费软件,价格极其昂贵,一套完全版人民币 10W 左右因此可以到各大网站下载破解版注意到一些知名网站下载比如吾爱破解等防止下载的软件包含病毒。在编写此文时IDA pro 更新到了 8.3,网上能找到的最新的版本为 7.7。本文由于版权原因,不提供下载链接。
# 简易使用方法
## 简易使用方法
> 本文档仅作快速入门,更加细节的内容还请读者查阅其他资料以及多加实践。
>
> 另外在任何使用上操作的问题,都可以在群里提问!
## 0x00 IDA 简单介绍
### 0x00 IDA 简单介绍
![](https://cdn.xyxsw.site/image-20220809113855166.png)
IDA是一款交互式反汇编和反编译工具其支持文件类型和文件平台丰富。
IDA 是一款交互式反汇编和反编译工具,其支持文件类型和文件平台丰富。
可静态分析也可动态调试,可以说是二进制手的吃饭工具了
## 0x01 启动界面
### 0x01 启动界面
![](https://cdn.xyxsw.site/image-20220809114834244.png)
```
NEW打开IDA同时弹出对话框选择要打开的文件
Go单独打开ida打开界面将文件拖入
```txt
NEW打开 IDA 同时弹出对话框选择要打开的文件
Go单独打开 ida打开界面将文件拖入
Previous或者下面的列表项快速打开之前的的文件
```
这里选择Go键打开以后将文件拖入
这里选择 Go 键,打开以后,将文件拖入
![](https://cdn.xyxsw.site/image-20220809124156697.png)
![](https://cdn.xyxsw.site/image-20220809124408179.png)
这里按我们的默认选项点击OK即可
这里按我们的默认选项点击 OK 即可
## 0x02 关闭界面
### 0x02 关闭界面
![](https://cdn.xyxsw.site/image-20220809125554853.png)
```
:::tip
第一个选项:就是不打包数据包文件,那么这些数据库文件就会分开这放。
第二个选项及图中选项就是把这几个数据库文件打包为1个(如.i64文件),下次打开我们分析的文件的时候,打开这个文件即可。
第二个选项及图中选项:就是把这几个数据库文件打包为 1 个 (如.i64 文件),下次打开我们分析的文件的时候,打开这个文件即可。
第三个选项:不会删掉数据库文件,而是打包压缩到存储的文件里面去了。
下面两个选项
第一个选项:回收垃圾,如果打包文件太大了,可以选用这个选项,清理不必要的内存
最后一个选项:当分析时候写错了,选中最后一个,最后一次打开的操作不保留了。(解决错误操作)
```
## 0x03 主界面- IDA View&Pseudocode
最后一个选项:当分析时候写错了,选中最后一个,最后一次打开的操作不保留了。(解决错误操作)
:::
### 0x03 主界面 - IDA View&Pseudocode
反汇编代码的图表窗口
@@ -59,7 +63,7 @@ Previous或者下面的列表项快速打开之前的的文件
![](https://cdn.xyxsw.site/image-20220809130940294.png)
按**F5**进行反编译跳转至`Pseudocode`(伪代码)界面
按**F5**进行反编译跳转至`Pseudocode`(伪代码) 界面
![](https://cdn.xyxsw.site/image-20220809131038284.png)
@@ -67,25 +71,25 @@ Previous或者下面的列表项快速打开之前的的文件
直接点击函数名可以进入到对应函数内部查看函数逻辑
## 0x04 主界面- Hex View
### 0x04 主界面 - Hex View
十六进制窗口(不太常用)
十六进制窗口 (不太常用)
![](https://cdn.xyxsw.site/image-20220809132027773.png)
## 0x05 主界面-Structures
### 0x05 主界面-Structures
结构体窗口
![](https://cdn.xyxsw.site/image-20220809132130778.png)
## 0x06 主界面-Enums
### 0x06 主界面-Enums
枚举类型界面
![](https://cdn.xyxsw.site/image-20220809132242739.png)
## 0x07 主界面-Imports
### 0x07 主界面-Imports
导入表
@@ -93,13 +97,13 @@ Previous或者下面的列表项快速打开之前的的文件
![](https://cdn.xyxsw.site/image-20220809132327043.png)
## 0x08 主界面-Exports
### 0x08 主界面-Exports
导出表
![](https://cdn.xyxsw.site/image-20220809151050575.png)
## 0x09 主界面-Strings
### 0x09 主界面-Strings
`Shift+F12`转到`String`界面,该操作会搜索程序中的字符串数据并展示
@@ -109,7 +113,7 @@ Previous或者下面的列表项快速打开之前的的文件
![](https://cdn.xyxsw.site/image-20220809153408536.png)
## 0x0a 其他界面-Functions
### 0x0a 其他界面-Functions
罗列了程序中用到的所有函数,包括底层调用的库的函数
@@ -117,25 +121,23 @@ Previous或者下面的列表项快速打开之前的的文件
![](https://cdn.xyxsw.site/image-20220809151328885.png)
## 0x0b 其他界面-Output
### 0x0b 其他界面-Output
程序的输出信息都会展示在这里
其中包括插件的加载信息、插件/脚本运行时的输出等
另外还可以直接在下面输入python语句方便在ida使用过程中简单的数据处理
另外还可以直接在下面输入 python 语句,方便在 ida 使用过程中简单的数据处理
![](https://cdn.xyxsw.site/image-20220809151536894.png)
## 0x0c 其他界面-导航栏
### 0x0c 其他界面 - 导航栏
一个二进制文件包括不同的区块,这里显示程序的不同类型数据,不同的颜色代表二进制文件中不同的块
![](https://cdn.xyxsw.site/image-20220809151815243.png)
## 0x0d 常用快捷键
### 0x0d 常用快捷键
> 边用边记,多打打就会记住了!
>
@@ -146,9 +148,9 @@ Previous或者下面的列表项快速打开之前的的文件
- `g` 跳转到任意地址
- `Esc` 返回到跳转前的位置
- `n` 定义或修改名称,常用来修改函数和变量的名字
- `A` 按照ASCII显示数据
- `A` 按照 ASCII 显示数据
- `D` 分别按字节、字、双字来显示数据
- `F5`反编译汇编代码,得到C伪代码
- `F5`反编译汇编代码,得到 C 伪代码
- `Shift+F12` 搜索程序中的字符串
- `Alt+t` 搜索程序中的指令
@@ -156,19 +158,19 @@ Previous或者下面的列表项快速打开之前的的文件
- `Y` 修改变量/函数类型
- `F2`快速下断点
## 0x0e 常用插件
### 0x0e 常用插件
> 具体安装和使用不在此展开了
- [Find Crypt](https://github.com/polymorf/findcrypt-yara) -- 寻找常用加密算法中的常数(需要安装 [yara-python](https://github.com/VirusTotal/yara-python)
- [Keypatch](https://github.com/keystone-engine/keypatch) -- 基于 Keystone 的 Patch 二进制文件插件
- [LazyIDA: Make your IDA Lazy! ](https://github.com/P4nda0s/LazyIDA) -- 快速Dump内存数据
- [LazyIDA: Make your IDA Lazy!](https://github.com/P4nda0s/LazyIDA) -- 快速 Dump 内存数据
- [Finger](https://github.com/aliyunav/Finger) -- 函数签名识别插件
- [D810](https://gitlab.com/eshard/d810) -- 去混淆插件
## 0x10 IDA Python
IDA 提供可与其交互的IDA Python接口可以使用Python做很多的辅助操作
IDA 提供可与其交互的 IDA Python 接口,可以使用 Python 做很多的辅助操作
![](https://cdn.xyxsw.site/image-20220809154742462.png)
@@ -178,36 +180,36 @@ IDA 提供可与其交互的IDA Python接口可以使用Python做很多的辅
## 0x11 IDA 动态调试
> 暂时只对WindowsLinux下的文件调试做介绍MacAndroid下的文件调试有待读者后续探索
> 暂时只对 WindowsLinux 下的文件调试做介绍MacAndroid 下的文件调试有待读者后续探索
### 调试Windows下的文件
### 调试 Windows 下的文件
可以先在汇编代码或伪代码界面下断点,然后`F9`选择调试器,这里直接选`Local Windows Debugger`
![](https://cdn.xyxsw.site/image-20220809160044665.png)
之后就可以用F7(单步不跳过执行)/F8(单步跳过执行)/F9(继续执行,遇到断点停止)进行调试
之后就可以用 F7(单步不跳过执行)/F8(单步跳过执行)/F9(继续执行遇到断点停止) 进行调试
![](https://cdn.xyxsw.site/image-20220809163138453.png)
### 调试Linux下的文件
### 调试 Linux 下的文件
可以先在汇编代码或伪代码界面下断点
![](https://cdn.xyxsw.site/image-20220809155352920.png)
由于Linux下文件调试比较特殊需要远程起一个服务器运行服务端这里可以使用**Vmware**或者**WSL2(Windows subsystem Linux)**进行调试
由于 Linux 下文件调试比较特殊,需要远程起一个服务器运行服务端,这里可以使用**Vmware**或者**WSL2(Windows subsystem Linux)**进行调试
因篇幅有限,在这里直接贴篇链接供大家学习并选择调试方式
因篇幅有限在这里直接贴篇链接供大家学习并选择调试方式
- Vmware 调试 [IDA动态调试ELF](https://bbs.kanxue.com/thread-247830.htm)
- WSL 调试 安装好WSL直接运行ida dbgsrv目录下linux_server文件即可以
- Vmware 调试 [IDA 动态调试 ELF](https://bbs.kanxue.com/thread-247830.htm)
- WSL 调试(安装好 WSL 直接运行 ida dbgsrv 目录下 linux_server 文件即可以)
后面是一样的调试步骤
## 0x12 一个简单程序的分析
#### 源代码
### 源代码
```c
#include <stdio.h>
@@ -238,13 +240,13 @@ int main() {
#### 分析历程
##### 将程序拖入IDA
##### 将程序拖入 IDA
![](https://cdn.xyxsw.site/image-20220809173439491.png)
![](https://cdn.xyxsw.site/image-20220809173548998.png)
##### F5分析查看伪代码
##### F5 分析查看伪代码
![](https://cdn.xyxsw.site/image-20220809173627488.png)
@@ -260,23 +262,23 @@ int main() {
##### 查看函数逻辑
change函数
change 函数
![](https://cdn.xyxsw.site/image-20220809174035800.png)
check函数
check 函数
![](https://cdn.xyxsw.site/image-20220809174058831.png)
###### 静态分析逻辑
change函数是对输入字符串的每一个字节进行修改
change 函数是对输入字符串的每一个字节进行修改
然后在check函数进行比较
然后在 check 函数进行比较
###### 动态分析逻辑
在change函数进入前下好断点
change 函数进入前下好断点
随意的进行一些输入
@@ -286,17 +288,16 @@ change函数是对输入字符串的每一个字节进行修改
![](https://cdn.xyxsw.site/image-20220809174957987.png)
F7进入函数进行单步不跳过调试
F7 进入函数进行单步不跳过调试
![](https://cdn.xyxsw.site/image-20220809175413448.png)
遇到类似`strlen`等库函数可以F8单步调试跳过
遇到类似`strlen`等库函数可以 F8 单步调试跳过
![](https://cdn.xyxsw.site/image-20220809175459668.png)
可以发现输入字符串的每一个字节的Ascii值都减小了1
可以发现输入字符串的每一个字节的 Ascii 值都减小了 1
##### 脚本编写
试试写一个脚本解出这道题吧!