{% hint style="success" %}
AWSハッキングを学び、実践する:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
GCPハッキングを学び、実践する: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
HackTricksをサポートする
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してハッキングトリックを共有してください。**
{% endhint %}
# Wasm逆コンパイルとWatコンパイルガイド
**WebAssembly**の領域では、**逆コンパイル**と**コンパイル**のためのツールが開発者にとって不可欠です。このガイドでは、**Wasm (WebAssemblyバイナリ)**および**Wat (WebAssemblyテキスト)**ファイルを扱うためのオンラインリソースとソフトウェアを紹介します。
## オンラインツール
- WasmをWatに**逆コンパイル**するには、[Wabtのwasm2watデモ](https://webassembly.github.io/wabt/demo/wasm2wat/index.html)が便利です。
- WatをWasmに**コンパイル**するには、[Wabtのwat2wasmデモ](https://webassembly.github.io/wabt/demo/wat2wasm/)が役立ちます。
- 別の逆コンパイルオプションは[web-wasmdec](https://wwwg.github.io/web-wasmdec/)で見つけることができます。
## ソフトウェアソリューション
- より堅牢なソリューションとして、[PNF SoftwareのJEB](https://www.pnfsoftware.com/jeb/demo)が広範な機能を提供します。
- オープンソースプロジェクト[wasmdec](https://github.com/wwwg/wasmdec)も逆コンパイルタスクに利用可能です。
# .Net逆コンパイルリソース
.Netアセンブリの逆コンパイルは、以下のツールを使用して実行できます。
- [ILSpy](https://github.com/icsharpcode/ILSpy)は、[Visual Studio Code用のプラグイン](https://github.com/icsharpcode/ilspy-vscode)も提供しており、クロスプラットフォームでの使用が可能です。
- **逆コンパイル**、**修正**、および**再コンパイル**を含むタスクには、[dnSpy](https://github.com/0xd4d/dnSpy/releases)が強く推奨されます。メソッドを**右クリック**して**Modify Method**を選択することで、コードの変更が可能です。
- [JetBrainsのdotPeek](https://www.jetbrains.com/es-es/decompiler/)も.Netアセンブリの逆コンパイルのための別の選択肢です。
## DNSpyによるデバッグとロギングの強化
### DNSpyロギング
DNSpyを使用してファイルに情報をログするには、以下の.Netコードスニペットを組み込みます。
%%%cpp
using System.IO;
path = "C:\\inetpub\\temp\\MyTest2.txt";
File.AppendAllText(path, "Password: " + password + "\n");
%%%
### DNSpyデバッグ
DNSpyを使用した効果的なデバッグのためには、デバッグのために**Assembly属性**を調整する一連の手順が推奨され、デバッグを妨げる可能性のある最適化が無効にされます。このプロセスには、`DebuggableAttribute`設定の変更、アセンブリの再コンパイル、および変更の保存が含まれます。
さらに、**IIS**によって実行される.Netアプリケーションをデバッグするには、`iisreset /noforce`を実行してIISを再起動します。デバッグのためにDNSpyをIISプロセスにアタッチするには、DNSpy内で**w3wp.exe**プロセスを選択し、デバッグセッションを開始するように指示します。
デバッグ中に読み込まれたモジュールの包括的なビューを得るためには、DNSpyの**Modules**ウィンドウにアクセスし、すべてのモジュールを開いてアセンブリをソートして、ナビゲーションとデバッグを容易にすることが推奨されます。
このガイドは、WebAssemblyと.Net逆コンパイルの本質を要約し、開発者がこれらのタスクを容易にナビゲートできる道筋を提供します。
## **Java逆コンパイラ**
Javaバイトコードを逆コンパイルするために、これらのツールが非常に役立ちます:
- [jadx](https://github.com/skylot/jadx)
- [JD-GUI](https://github.com/java-decompiler/jd-gui/releases)
## **DLLのデバッグ**
### IDAを使用
- **Rundll32**は、64ビットおよび32ビットバージョンの特定のパスからロードされます。
- **Windbg**がデバッガとして選択され、ライブラリのロード/アンロード時に一時停止するオプションが有効になります。
- 実行パラメータにはDLLパスと関数名が含まれます。この設定により、各DLLのロード時に実行が停止します。
### x64dbg/x32dbgを使用
- IDAと同様に、**rundll32**はコマンドラインの修正を加えてDLLと関数を指定してロードされます。
- DLLエントリでブレークするように設定が調整され、希望するDLLエントリポイントでブレークポイントを設定できます。
### 画像
- 実行停止ポイントと設定はスクリーンショットを通じて示されています。
## **ARM & MIPS**
- エミュレーションには、[arm_now](https://github.com/nongiach/arm_now)が便利なリソースです。
## **シェルコード**
### デバッグ技術
- **Blobrunner**と**jmp2it**は、メモリにシェルコードを割り当て、Idaまたはx64dbgでデバッグするためのツールです。
- Blobrunner [リリース](https://github.com/OALabs/BlobRunner/releases/tag/v0.0.5)
- jmp2it [コンパイル版](https://github.com/adamkramer/jmp2it/releases/)
- **Cutter**はGUIベースのシェルコードエミュレーションと検査を提供し、ファイルとしてのシェルコード処理と直接シェルコード処理の違いを強調します。
### デオブフスケーションと分析
- **scdbg**はシェルコード関数とデオブフスケーション機能に関する洞察を提供します。
%%%bash
scdbg.exe -f shellcode # 基本情報
scdbg.exe -f shellcode -r # 分析レポート
scdbg.exe -f shellcode -i -r # インタラクティブフック
scdbg.exe -f shellcode -d # デコードされたシェルコードをダンプ
scdbg.exe -f shellcode /findsc # 開始オフセットを見つける
scdbg.exe -f shellcode /foff 0x0000004D # オフセットから実行
%%%
- シェルコードの逆アセンブルには**CyberChef**を使用: [CyberChefレシピ](https://gchq.github.io/CyberChef/#recipe=To_Hex%28'Space',0%29Disassemble_x86%28'32','Full%20x86%20architecture',16,0,true,true%29)
## **Movfuscator**
- すべての命令を`mov`に置き換えるオブフスケータです。
- 有用なリソースには[YouTubeの説明](https://www.youtube.com/watch?v=2VF_wPkiBJY)と[PDFスライド](https://github.com/xoreaxeaxeax/movfuscator/blob/master/slides/domas_2015_the_movfuscator.pdf)があります。
- **demovfuscator**はmovfuscatorのオブフスケーションを逆転させる可能性があり、`libcapstone-dev`と`libz3-dev`の依存関係が必要で、[keystone](https://github.com/keystone-engine/keystone/blob/master/docs/COMPILE-NIX.md)をインストールする必要があります。
## **Delphi**
- Delphiバイナリには、[IDR](https://github.com/crypto2011/IDR)が推奨されます。
# コース
* [https://github.com/0xZ0F/Z0FCourse\_ReverseEngineering](https://github.com/0xZ0F/Z0FCourse_ReverseEngineering)
* [https://github.com/malrev/ABD](https://github.com/malrev/ABD) \(バイナリデオブフスケーション\)
{% hint style="success" %}
AWSハッキングを学び、実践する:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
GCPハッキングを学び、実践する: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
HackTricksをサポートする
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してハッキングトリックを共有してください。**
{% endhint %}