anti-reversing-techniques
作成者 wshobsonanti-reversing-techniques は、許可されたマルウェア解析、CTF、パック済みバイナリのトリアージ、セキュリティ監査向けのリバースエンジニアリング用スキルです。アンチデバッグ、アンチVM、パッキング、難読化の典型的なパターンを見極め、コアスキルと上級リファレンスをもとに実践的な解析フローを選ぶのに役立ちます。
このスキルは 78/100 の評価で、ディレクトリ掲載候補として十分に堅実です。許可されたリバースエンジニアリング用途で、エージェントが使いどころを判断しやすく、実務的なガイダンスも充実しています。一方で、リポジトリは主にドキュメント中心で、同梱ツールやインストール手順はないため、実際の運用ではある程度の手動判断が前提になります。
- 用途の判別がしやすい: malware analysis、CTF向けの anti-debugging、packed binaries、VM detection など、使う場面が説明内で明確に示されています。
- 実務面の厚みがある: SKILL.md の内容が充実しており、入出力の整理、ワークフロー、制約、コードフェンス、上級リファレンスへのリンクまで含まれています。
- 信頼性の手がかりがある: デュアルユースのセキュリティ作業に向けて、許可された利用範囲、対象スコープ、法令順守について冒頭で明示しています。
- 導入価値はドキュメント中心です。エージェント実行環境で手順の迷いを減らすための scripts、rules、resources、install commands は含まれていません。
- この分野の一部タスクは本質的に熟練アナリストの判断を要するため、複雑な unpacking や bypass 作業を外部ツールなしで確実に実行できるとは限りません。
anti-reversing-techniques スキルの概要
anti-reversing-techniques スキルは、正当な権限のある解析の場面で、一般的なソフトウェア保護を見抜き、説明し、突破口を整理するためのリバースエンジニアリング支援です。特に、マルウェア解析、CTF、セキュリティリサーチ、パック済みバイナリのトリアージ、防御系ツールの検証などで、anti-debugging、anti-VM、packing、obfuscation が調査の妨げになっているケースに向いています。
このスキルで実際にできること
このスキルの本質は、「あらゆる anti-reversing の手口を網羅的に学ぶ」ことではありません。目的は、通常のツールでは素直に扱えない保護付きサンプル を前にして、実践的な解析計画に落とし込むことです。つまり、あり得る保護を見極め、安全性の高い調査手順を選び、見当違いの unpacking や debugging に時間を費やさないようにするための支援です。
この anti-reversing-techniques スキルが向いている人
この anti-reversing-techniques skill が合うのは、次のようなユーザーです。
- debugger detection や packed な entry stub にぶつかるリバースエンジニア
- 疑わしいバイナリをトリアージするマルウェアアナリスト
- 正当なチャレンジ環境で anti-debug チェックを実装・回避する CTF プレイヤー
- 保護機構が評価ワークフローを妨げていないか確認したいセキュリティ監査担当者
一方で、一般的な secure coding、アプリの hardening 戦略、あるいはサンプルや具体的な対象挙動を伴わない初心者向けマルウェア理論にはあまり向きません。
主な差別化ポイント
一般的な「このバイナリをどう reverse すればいい?」というプロンプトと比べて、anti-reversing-techniques は次の観点を整理した構造化マップを返しやすいのが強みです。
- 解析開始前に何の入力情報が重要か
- 最初に当たるべき典型的な anti-debugging / 環境検出
- Windows 特有の検出パターン
- packer と OEP を軸にしたワークフロー上の判断材料
references/advanced-techniques.mdにある、より踏み込んだ追跡用の補足情報
そのため、長い学術的な解説よりも、まずは使える出発点がほしい場面で最も価値を発揮します。
インストール前・利用前に必ず押さえたい制約
このスキルは明確に dual-use です。想定しているのは、マルウェア解析、自身が所有するソフトウェア、許可を得た pentest、学術研究、CTF 環境といった、正当な権限のある用途に限られます。第三者ソフトウェアの保護を無断で回避する目的なら、このスキルは適切ではなく、ワークフロー自体も見直すべきです。
anti-reversing-techniques スキルの使い方
anti-reversing-techniques のインストール前提
上流のスキルでは、SKILL.md 内に repo ローカルの install コマンドは記載されていません。そのため、ディレクトリ経由で使う場合は通常、親スキルリポジトリから追加します。
npx skills add https://github.com/wshobson/agents --skill anti-reversing-techniques
インストール後は、protected binary、debugger evasion、packer、environment detection が絡むタスクでこのスキルを読み込むのが基本です。
リポジトリで最初に読むべきファイル
最短で立ち上げたいなら、次の順番で読むのが効率的です。
plugins/reverse-engineering/skills/anti-reversing-techniques/SKILL.mdplugins/reverse-engineering/skills/anti-reversing-techniques/references/advanced-techniques.md
SKILL.md には実務に必要な基本線がまとまっています。references/advanced-techniques.md を開くのは、サンプルが packed、virtualized、あるいは意図的に disassembly を妨害しているように見えるときです。
このスキルに渡すべき入力情報
anti-reversing-techniques は、「all anti-reversing techniques を教えて」といった漠然とした聞き方より、具体的な解析入力があるほど出力の質が上がります。役立つ入力例は次のとおりです。
- binary path またはサンプル種別
- OS と architecture
- packed / unpacked の疑い
- 観測している debugger 上の挙動
- すでに見つかっている strings、imports、API
- VM 上で exit、hang、crash、挙動変化があるか
x64dbg,IDA,Ghidra,WinDbg,DIE,PEiDなど現在の toolchain
弱い入力例:
- “Help me reverse this protected executable.”
強い入力例:
- “Analyze an authorized 64-bit Windows PE that exits immediately under
x64dbg, importsIsDebuggerPresentandCheckRemoteDebuggerPresent, and appears packed inDIE. I need a triage plan for anti-debug checks, likely packer identification, and where to look for the OEP.”
ざっくりした目的を強いプロンプトに変える方法
良いプロンプトは、対象範囲、症状、欲しい出力形式がそろっています。使いやすいテンプレートは次のとおりです。
- その binary が何か
- 自分にどこまで権限があるか
- すでに何が観測できているか
- 使える tools は何か
- 次に必要な成果物は何か
例:
“Use the anti-reversing-techniques skill for an authorized malware-analysis lab. I have a Windows PE sample that detects my VM and behaves differently under a debugger. Give me a prioritized workflow to identify anti-VM and anti-debug techniques, likely APIs or instruction patterns to inspect, and safe next steps before dynamic unpacking.”
この形が有効なのは、スキル側が症状を手がかりに、あり得る technique family へ落とし込むのを得意としているからです。広すぎるプロンプトより、実作業に直結する回答を得やすくなります。
典型的な anti-reversing-techniques の利用ワークフロー
実務での anti-reversing-techniques usage は、概ね次の流れになります。
- 権限とスコープを確認する
- platform と保護クラスの当たりを付ける
- imports、strings、sections、packer の兆候を静的にトリアージする
- 深い trace に入る前に、典型的な anti-debug 分岐を確認する
- 先に unpack すべきか、挙動を instrument して見るべきか判断する
- 一般的なパターンで説明できない場合にのみ、advanced reference を使う
この順序は重要です。packed かどうか、あるいは単純な debugger check で gate されているだけかを確認する前に full disassembly へ突っ込み、時間を失うケースは少なくありません。
advanced reference を参照すべきタイミング
次のような兆候があるなら、references/advanced-techniques.md を開く価値があります。
Themida,VMProtect,Enigmaのような commercial protector が疑われる- compressed / encrypted な entry stub が見える
- anti-disassembly trick によって control flow が壊れている
- Original Entry Point を特定して dump する必要がありそう
- 基本的な環境調整をしても anti-VM ロジックが残る
この reference は、packer の見分け方や manual unpacking の進め方、とくに OEP を軸に考える場面で有用です。
想定されているツール環境
このスキルは、自然には Windows の reversing workflow に寄っています。参照されている代表的な PE 向け tools / patterns は次のとおりです。
DIE/ Detect It EasyExeinfo PE/PEiDx64dbgScyllaやImpRECのような import reconstruction tool
macOS の Mach-O や Linux の ELF を主に扱う場合でも考え方自体は役立ちますが、例示されている API やワークフローは自分の環境向けに読み替える必要があります。
出力品質を大きく上げるコツ
anti-reversing-techniques guide からより実用的な結果を得たいなら、次の情報を含めてください。
- 最初に観測できる failure point
- VM 内で execution が変わるか
- 疑わしい API、PEB check、timing check、exception behavior
- section 名、entropy の手がかり、packer signature
- explanation がほしいのか、triage がほしいのか、full workflow がほしいのか
これにより、anti-debugging、anti-VM、packing、単純な crash 挙動を切り分けやすくなります。初見では似て見えるケースでも、必要な次手が大きく変わります。
導入時によくあるつまずき
大きな障害は、たいていインストールそのものではありません。主なボトルネックは次のとおりです。
- 具体的な sample や挙動なしでスキルを使おうとする
- どの protector にも通用する one-shot の unpacking 手順を期待する
- 法的・権限上の境界を見落とす
- advanced reference が hands-on の debugger evidence を置き換えると考える
turnkey な自動化ツールを探しているなら、このスキルはその用途ではありません。これはアナリスト向けの意思決定支援スキルです。
anti-reversing-techniques スキル FAQ
anti-reversing-techniques は初心者向けですか?
はい。ただし、基本的な reverse-engineering のツールと用語をすでに理解しているなら、という条件付きです。完全なゼロスタートには向きません。このスキルは、imports を確認し、debugger を動かし、binary の挙動を説明できることを前提にしています。最も力を発揮するのは、「サンプルはある、次の計画がほしい」という段階です。
このスキルはマルウェア解析専用ですか?
いいえ。CTF、software protection research、unpacking の練習、そして保護機構が正当な評価を妨げる場面での anti-reversing-techniques for Security Audit にも適しています。ただし、ワークフローの中心はあくまで binary analysis であり、policy review や製品選定ではありません。
普通のプロンプトと何が違いますか?
通常のプロンプトだと、ありがちな anti-debugging 手法の羅列で終わりがちです。anti-reversing-techniques skill は、アナリストが持つ入力情報、調査順序、そして実際のトリアージで遭遇しやすい protection category を軸に整理されているため、実務ではこちらの方が役立ちます。
advanced な packer 対応も含まれますか?
はい。ただし、構成はきちんと分かれています。メインの SKILL.md は一般的なパターンに集中し、references/advanced-techniques.md で packer、OEP の発見、manual unpacking、よりニッチな anti-analysis technique を扱っています。
anti-reversing-techniques を使うべきでないのはどんなときですか?
次のような場合は anti-reversing-techniques を使うべきではありません。
- 権限がない
- 課題が generic な secure coding であり、binary analysis ではない
- 解析ガイドではなく fully automated unpacker が必要
- 問題の中心が web、cloud、source-code auditing にある
anti-reversing-techniques はインストールだけで十分ですか?
インストール自体は判断の中心ではありません。実際には、次の前提も必要です。
- 合法かつ権限のある解析コンテキスト
- binary または具体的な症状セット
- runtime behavior を確認できる tools
- 初回トリアージ後に反復できる姿勢
これらがないと、概念説明は受けられても、スキルの出力品質は大きく落ちます。
anti-reversing-techniques スキルを改善する方法
手法一覧ではなく、症状から始める
anti-reversing-techniques の結果を改善する最善策は、手法を聞く前に観測事実を書くことです。“Debugger closes after entry” や “sample only fails in VM” の方が、“list anti-debug tricks” よりはるかに行動に落とし込みやすい入力になります。
binary の文脈を早い段階で伝える
次の情報を含めてください。
- file format と architecture
- target OS
- 分かっていれば compiler や protector
- packed に見えるかどうか
- 各観測結果をどの tool が出したか
これで無関係な tactics が混ざりにくくなり、回答が実際の環境に寄ったものになります。
仮説を優先度付きで出してもらう
強いプロンプトでは、優先順位付きの shortlist を求めます。
- 最も可能性の高い protection mechanism
- それぞれを支える evidence
- 次に何を検証すべきか
- どんな結果なら仮説を支持・除外できるか
これは、anti-reversing techniques の巨大なカタログを要求するより、実務ではるかに有益です。
artifact の断片を添えてプロンプトを強化する
binary 全体を貼る必要はありません。小さな artifact だけでも品質は大きく上がります。
- suspicious imports
- debugger log lines
- section table の異常
- 目立つ strings
- failing branch 周辺の短い disassembly
こうした断片があると、API ベースの check、PEB inspection、timing logic、packer stub のどれに近いかを判断しやすくなります。
避けたい典型的な失敗パターン
次のような聞き方だと、結果が弱くなりがちです。
- sample の説明なしに bypass 手順だけを求める
- platform 情報を省く
- dual-use なタスクなのに権限コンテキストを書かない
- packing と anti-debugging を混同する
- Windows 寄りの例示セットに対して Linux / macOS 固有の答えを期待する
質の低い出力の多くは、スキル自体の問題ではなく、入力の具体性不足から起こります。
最初の回答のあとに再入力する
初回の回答を使って不足している evidence を集め、見つかった内容で再度プロンプトを投げるのが効果的です。
- 新たに見つかった imports
- anti-VM indicator が確認できたか除外できたか
- OEP を見つけられたか
- dumping や import fixing が成功したか
anti-reversing-techniques スキルは、2 回目以降の方が探索空間が狭まり、価値が大きく上がります。
core skill と advanced reference は必要なときだけ組み合わせる
最初から references/advanced-techniques.md に飛びつかないでください。sample が明らかに packed、virtualized、あるいは通常の disassembly に対して敵対的だと見えるときに使うのが適切です。そうすることで、ワークフローを速く保ち、単純なケースに高度すぎる説明を当てはめるのを防げます。
Security Audit 向けの anti-reversing-techniques を改善する
anti-reversing-techniques for Security Audit では、プロンプトを監査の成果物ベースで組み立てると有効です。
- どの protection が assessment を妨げているか
- 必要なのが detection、explanation、reproduction のどれか
- client deliverable に対してどの程度の技術詳細が適切か
- 目的が analyst access、protections の妥当性確認、risk communication のどれか
こうすると、出力が reverse-engineering の小ネタ集ではなく、セキュリティチームが実際に使える evidence に寄っていきます。
