用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/aivos-xie/hermes-skills --skill reverse-engineering命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
正在显示 SKILL.md
基于 SOC 职业分类
| name | reverse-engineering |
| description | 逆向工程工具链 — Ghidra, radare2, Frida, apktool, jadx, angr, pwntools |
| version | 1.0.0 |
| author | Hermes Agent |
| license | MIT |
| metadata | {"hermes":{"tags":["reverse-engineering","binary-analysis","decompilation","debugging","android","exploitation"]}} |
| 工具 | 用途 | 语言 |
|---|---|---|
| Ghidra | NSA开源反编译器,支持多架构 | Java |
| radare2/rizin | 命令行逆向框架 | C |
| Frida | 动态插桩,运行时hook | Python/JS |
| apktool | APK反编译/重打包 | Java |
| jadx | APK/DEX反编译为Java源码 | Java |
| angr | 符号执行/二进制分析框架 | Python |
| pwntools | CTF/exploit开发框架 | Python |
| Capstone | 多架构反汇编引擎 | C/Python |
| Keystone | 多架构汇编引擎 | C/Python |
| Binwalk | 固件分析/提取 | Python |
| strings | 提取可打印字符串 | 系统自带 |
| file | 文件类型识别 | 系统自带 |
| objdump | 目标文件反汇编 | 系统自带 |
| readelf | ELF文件分析 | 系统自带 |
| strace | 系统调用跟踪 | Linux |
| ltrace | 库函数调用跟踪 | Linux |
sudo apt install openjdk-21-jdk wget unzip
wget https://github.com/NationalSecurityAgency/ghidra/releases/download/Ghidra_12.1.2_build/ghidra_12.1.2_PUBLIC_20260605.zip
unzip ghidra_*.zip -d /opt/
/opt/ghidra_*/ghidraRun
# 无头模式
/opt/ghidra_*/support/analyzeHeadless /tmp/project MyProject -import /path/to/binary -postScript /path/to/script.java
# PyGhidra (Python无头模式)
/opt/ghidra_*/support/pyghidraRun
1. File -> Import File -> 选择二进制
2. 自动分析(Analysis -> Auto Analyze)
3. 左侧Symbol Tree -> Functions查看函数列表
4. 双击函数进入反编译视图
5. Ctrl+E 打开脚本管理器
// 找所有字符串引用
import ghidra.program.util.DefinedDataIterator;
for (var data : DefinedDataIterator.definedStrings(currentProgram)) {
println(data.getAddress() + ": " + data.getDefaultValueRepresentation());
}
/opt/ghidra_*/support/analyzeHeadless /tmp/ghidra_projects batch \
-import /path/to/binary \
-postScript FindStrings.java \
-scriptPath /path/to/scripts \
-deleteProject
# radare2
git clone https://github.com/radareorg/radare2 && cd radare2 && sys/install.sh
# rizin
git clone https://github.com/rizinorg/rizin && cd rizin && meson build && ninja -C build && sudo ninja -C build install
r2 -A ./binary # 打开并自动分析
r2 -A -d ./binary # 调试模式
aaa # 全面分析
afl # 列出所有函数
pdf @main # 反汇编main
s sym.main # 跳转到main
V # 可视化模式
VV # 图形可视化
iz # 列出字符串
axt @str.0x401000 # 交叉引用
db main # 设置断点
dc # 继续执行
pxr 64 @rsp # 查看栈
dr # 查看寄存器
import r2pipe
r2 = r2pipe.open("./binary")
r2.cmd("aaa")
functions = r2.cmdj("aflj")
for func in functions:
print(f"{func['offset']}: {func['name']}")
r2.quit()
pip install frida-tools frida
# Android: 下载frida-server推送到设备
adb push frida-server /data/local/tmp/
adb shell "chmod 755 /data/local/tmp/frida-server"
adb shell "/data/local/tmp/frida-server &"
frida-ps # 列出进程
frida-ps -U # USB设备(手机)
frida -U -n com.target.app -l hook.js # 注入
frida -U -f com.target.app -l hook.js --no-pause # spawn模式
Java.perform(function() {
var LoginActivity = Java.use("com.target.app.LoginActivity");
LoginActivity.checkPassword.implementation = function(password) {
console.log("Password: " + password);
var result = this.checkPassword(password);
console.log("Result: " + result);
return result;
};
});
Interceptor.attach(Module.findExportByName("libnative.so", "encrypt"), {
onEnter: function(args) {
console.log("encrypt input: " + Memory.readUtf8String(args[0]));
},
onLeave: function(retval) {
console.log("encrypt output: " + retval);
}
});
import frida
device = frida.get_usb_device()
session = device.attach("com.target.app")
js_code = """
Java.perform(function() {
var cls = Java.use("com.target.app.Crypto");
cls.encrypt.overload("java.lang.String").implementation = function(input) {
send({type: "plaintext", data: input});
var result = this.encrypt(input);
send({type: "ciphertext", data: result});
return result;
};
});
"""
script = session.create_script(js_code)
def on_message(message, data):
print(f"[Frida] {message}")
script.on("message", on_message)
script.load()
input()
wget https://github.com/iBotPeaches/Apktool/releases/latest/download/apktool.jar
sudo mv apktool.jar /usr/local/bin/
# 反编译
java -jar /usr/local/bin/apktool.jar d target.apk -o output_dir
# 重打包
java -jar /usr/local/bin/apktool.jar b output_dir -o modified.apk
# 签名
keytool -genkey -v -keystore my.keystore -alias my -keyalg RSA -keysize 2048 -validity 10000
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore my.keystore modified.apk my
wget https://github.com/skylot/jadx/releases/download/v1.5.5/jadx-1.5.5.zip
unzip jadx-*.zip -d /opt/jadx
# GUI
/opt/jadx/bin/jadx-gui target.apk
# 命令行
/opt/jadx/bin/jadx target.apk -o output_dir
grep -r "password\|api_key\|secret" output_dir/
1. jadx-gui打开APK -> 查看Java源码逻辑
2. apktool反编译 -> 查看smali、AndroidManifest.xml、资源
3. Frida动态hook -> 运行时抓取密钥/加密结果
4. 修改smali -> 重打包绕过检测
pip install angr
import angr, claripy
proj = angr.Project("./crackme", auto_load_libs=False)
flag = claripy.BVS("flag", 32 * 8)
state = proj.factory.entry_state(stdin=flag)
simgr = proj.factory.simgr(state)
simgr.explore(find=0x401337) # 成功地址
if simgr.found:
found = simgr.found[0]
print("Flag:", found.solver.eval(flag, cast_to=bytes))
pip install pwntools
from pwn import *
r = remote("challenge.ctf.com", 1337)
r.recvuntil(b"Enter password: ")
r.sendline(b"admin")
# 自动找偏移
cyclic(100)
cyclic_find(0x6161616b)
# 构造payload
payload = b"A" * offset
payload += p64(0x401234)
# ret2libc
elf = ELF("./binary")
libc = ELF("./libc.so.6")
rop = ROP(elf)
rop.call(elf.plt["system"], [next(elf.search(b"/bin/sh"))])
# shellcode
context.arch = "amd64"
shellcode = asm(shellcraft.sh())
r.sendline(payload)
r.interactive()
strings binary | grep -i "password\|key\|secret\|flag"
strings -n 8 binary
strings -el binary # 宽字符
file binary
objdump -d binary # 反汇编
objdump -t binary # 符号表
readelf -h binary # ELF头
readelf -S binary # 段表
strace ./binary # 系统调用跟踪
strace -e trace=open,read ./binary
ltrace ./binary # 库函数跟踪
# binwalk v3 (Rust重写!) — 推荐用cargo安装
# cargo install binwalk
# 或从源码: git clone https://github.com/ReFirmLabs/binwalk && cd binwalk && cargo build --release
binwalk firmware.bin # 固件扫描
binwalk -e firmware.bin # 提取嵌入文件
binwalk -E firmware.bin # 熵分析
binwalk -Me firmware.bin # 递归提取
pip install checksec.py
checksec ./binary
# RELRO / Stack Canary / NX / PIE
1. file binary -> 识别架构和类型
2. strings binary -> 快速找flag/密码/提示
3. checksec binary -> 检查保护
4. r2 -A binary -> 快速分析
5. ghidra -> 深度反编译理解逻辑
6. angr -> 符号执行自动求解
7. pwntools -> 写exploit打远程
git clone https://github.com/worawit/blutter.git && cd blutter
sudo apt install python3-pyelftools python3-requests git cmake ninja-build build-essential pkg-config libicu-dev libcapstone-dev
# 从APK提取libapp.so和libflutter.so后:
python3 blutter.py /path/to/arm64-v8a/ /path/to/output/
git clone https://github.com/korcankaraokcu/PINCE.git && cd PINCE
sudo sh install_pince.sh
# Ghidra MCP Server — 200+ MCP工具,让AI/LLM辅助二进制分析
# https://github.com/bethington/ghidra-mcp
# 安装: 按README安装Ghidra插件 + 无头服务器
# IDA Pro + LLM桥接,通过MCP协议让AI直接操作IDA
# https://github.com/mrexodia/ida-pro-mcp
# 安装: 按README安装IDA插件