{% hint style="success" %}
学习和实践 AWS 黑客技术:[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
学习和实践 GCP 黑客技术:[**HackTricks 培训 GCP 红队专家 (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)。**右键单击** 方法并选择 **修改方法** 可以进行代码更改。
- [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 + "\n");
%%%
### DNSpy 调试
为了有效地使用 DNSpy 进行调试,建议按照一系列步骤调整 **程序集属性** 以进行调试,确保禁用可能妨碍调试的优化。此过程包括更改 `DebuggableAttribute` 设置、重新编译程序集并保存更改。
此外,要调试由 **IIS** 运行的 .Net 应用程序,执行 `iisreset /noforce` 以重启 IIS。要将 DNSpy 附加到 IIS 进程进行调试,指南指示在 DNSpy 中选择 **w3wp.exe** 进程并开始调试会话。
为了在调试期间全面查看加载的模块,建议访问 DNSpy 中的 **模块** 窗口,然后打开所有模块并对程序集进行排序,以便于导航和调试。
本指南概述了 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) 是一个有用的资源。
## **Shellcodes**
### 调试技术
- **Blobrunner** 和 **jmp2it** 是用于在内存中分配 shellcodes 并使用 Ida 或 x64dbg 调试它们的工具。
- Blobrunner [发布](https://github.com/OALabs/BlobRunner/releases/tag/v0.0.5)
- jmp2it [编译版本](https://github.com/adamkramer/jmp2it/releases/)
- **Cutter** 提供基于 GUI 的 shellcode 仿真和检查,突出显示作为文件与直接 shellcode 处理的差异。
### 反混淆和分析
- **scdbg** 提供对 shellcode 函数和反混淆能力的洞察。
%%%bash
scdbg.exe -f shellcode # 基本信息
scdbg.exe -f shellcode -r # 分析报告
scdbg.exe -f shellcode -i -r # 交互式钩子
scdbg.exe -f shellcode -d # 转储解码的 shellcode
scdbg.exe -f shellcode /findsc # 查找起始偏移
scdbg.exe -f shellcode /foff 0x0000004D # 从偏移执行
%%%
- **CyberChef** 用于反汇编 shellcode:[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 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
学习和实践 GCP 黑客技术:[**HackTricks 培训 GCP 红队专家 (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 %}