Re学习目录
Re学习目录
有点乱,之后做一下整理
常见加密
工具
IDA:FindCrypt IDA 7.0版本安装查询加密算法的findcrypt3脚本插件的详细步骤
PEID:KANAL(Krypto ANALyzer) (PEiD自带)
各类加密解析:逆向中常见的Hash算法和对称加密算法的分析
特征值识别
注意特征值可能会改变
TEA | AES | DES | BlowFish | MD5 | SHA1 | CRC32 | Base64
特征算法识别
RC4 | Base64 | TEA | AES | DES | MD5
第三方库识别
字符串报错
函数签名识别
Load File -> Flirter file
Diff二进制对比识别
逆向常见方法
符号执行
- python虚拟机:python的库之间会起冲突,比如angr会修改z3,那么需要一个python的虚拟环境
- z3:一个泛型约束求解的东西
- angr:强大的模拟执行工具,有些z3不能解的这个可以解
- 去平坦化(OLLVM):编译原理相关,可以试试用脚本还原 (利用符号执行去除控制流平坦化)
Pin插桩
貌似国赛都没考过,但是可以方便分析,主要涉及一些工具和hook编程
混淆和保护
一般就是花指令,CMS、OLLVM、VM逆向、反调试等
有些脚本可能会临时找
WebAssembly
反调试
详见:windows反调试笔记.md(API)、 CTFer成长之路-Nu1L战队/从0到1 、CTFWiki
Windows
主要利用的是 API 断点检测 其他技巧
Linux
ptrace开启两个进程(MRCTF2021有涉及)
游戏逆向
一般是Unity游戏的逆向,Unity又是基于C#编写,所以静态分析会使用类似Dnspy等工具
修改内存的话是CheateEngine,还是比较主流的修改器制作
高级语言逆向
一般有:python Golang Rust
- python:pyc逆向,python字节码逆向,python-installer逆向
- **Golang **:IDAGolangHelper
DUMP内存
万能的脱壳方法,加壳的程序在运行时肯定是自身脱壳的,所以内存的程序是已经脱了壳的
- 火绒剑 PC_Hunter windows任务管理器
Re工具
反汇编
万能
- ghidra:美国NSA出品,能搞定plt混乱等
IDA相关
- ida_6.8 :适合32位系统(windowsXP)
- ida_7.0:主流
- ida_7.5:最新版,增加一些过混淆,异构程序F5
IDA其他常用的一些插件
PLTResolver - 恢复被打乱的PLT,方便逆向
IDA FLIRT Signature Database – 用于识别静态编译的可执行文件中的库函数
Find Crypt – 寻找常用加密算法中的常数(需要安装 yara-python)
IDA signsrch – 寻找二进制文件所使用的加密、压缩算法
Ponce – 污点分析和符号化执行工具
snowman decompiler – C/C++反汇编插件(F3 进行反汇编)
CodeXplorer – 自动类型重建以及对象浏览(C++)(jump to disasm)
IDA Ref – 汇编指令注释(支持arm,x86,mips)
auto re – 函数自动重命名
nao – dead code 清除HexRaysPyTools – 类/结构体创建和虚函数表检测
DIE – 动态调试增强工具,保存函数调用上下文信息
sk3wldbg – IDA 动态调试器,支持多平台
idaemu – 模拟代码执行(支持X86、ARM平台)
Diaphora – 程序差异比较
Keypatch – 基于 Keystone 的 Patch 二进制文件插件
FRIEND – 哪里不会点哪里,提升汇编格式的可读性、提供指令、寄存器的文档等
SimplifyGraph – 简化复杂的函数流程图
bincat – 静态二进制代码分析工具包,2017 Hex-Rays 插件第一名
golang_loader_assist – Golang编译的二进制文件分析助手
安卓反汇编
- jadx-gui:安卓逆向静态审计
- jeb
- dex-tools
- apktoolbox:smail反编译与编译,方便修改代码
动态调试
windows
- Olldbg:经典,插件多,但是只能调试32位
- x32/x64dbg:和od差不多,但是能调试的64位,插件较少
- windbg:windows内核调试
- CheatEngine:常见于游戏逆向
Linux
- gdb
- gdb各种插件,pwngdb
Android
- android_killer:经典apk动调工具
- android_studio:开发调试
Others
- qemu或者docker挂上ida_server调
查壳
Windows
- PEID
- DIE
- EXEINFO
查看WIN的PE文件结构
- LordPE
- Stud_PE
Linux
- checksec(详细参考pwn中pwntools安装)
脱壳
unpack -> execute
直接将程序代码全部解压到内存中再继续执行程序代码
unpack -> execute -> unpack -> execute …
解压部分代码,再边解压边执行
unpack -> [decoder | encoded code] -> decode -> execute
程序代码有过编码,在解压后再运行函数将真正的程序代码解码执
UPX
PECompat
ASpack