소스 정보
- 저장소
- aivos-xie/hermes-skills
- 최근 소스 활동
- 2026년 6월 9일 18:05
- 감지된 SKILL.md 언어
- 중국어
- 스타
- 1
- 포크
- 0
설치 방법
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
소스 파일 검토
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
메뉴
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
직접 명령은 검토 Prompt를 거치지 않습니다. 실행하기 전에 소스를 확인하세요.
npx skills add https://github.com/aivos-xie/hermes-skills --skill reverse-engineering명령은 한 줄로 유지됩니다. 복사하기 전에 가로로 스크롤해 전체 내용을 확인하세요.
로컬 사본을 원하시나요? SkillsMP에서 현재 제공할 수 있는 파일을 다운로드하세요.
SKILL.md 표시 중
| 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插件
SOC 직업 분류 기준