hacktricks/reversing/reversing-tools/README.md

6.1 KiB
Raw Blame History

从零开始学习AWS黑客技术成为专家 htARTEHackTricks AWS红队专家

支持HackTricks的其他方式

Wasm反编译和Wat编译指南

WebAssembly领域,处理WasmWebAssembly二进制WatWebAssembly文本文件的反编译编译工具对开发人员至关重要。本指南介绍了一些在线资源和软件,用于处理这些文件。

在线工具

软件解决方案

  • 对于更强大的解决方案,PNF Software的JEB提供了广泛的功能。
  • 开源项目wasmdec也可用于反编译任务。

.Net反编译资源

可以使用以下工具来反编译.Net程序集

  • ILSpy还提供了适用于Visual Studio Code的插件,可实现跨平台使用。
  • 对于涉及反编译修改重新编译的任务,强烈推荐使用dnSpy。右键单击方法并选择修改方法可进行代码更改。
  • JetBrains的dotPeek是反编译.Net程序集的另一选择。

使用DNSpy增强调试和日志记录

DNSpy日志记录

要使用DNSpy将信息记录到文件中请添加以下.Net代码片段

%%%cpp using System.IO; path = "C:\inetpub\temp\MyTest2.txt"; File.AppendAllText(path, "Password: " + password + "\n"); %%%

DNSpy调试

为了有效地使用DNSpy进行调试建议按照一系列步骤调整程序集属性以进行调试,确保禁用可能阻碍调试的优化。此过程包括更改DebuggableAttribute设置,重新编译程序集并保存更改。

此外,要调试由IIS运行的.Net应用程序执行iisreset /noforce可重新启动IIS。要将DNSpy附加到IIS进程以进行调试指南指导选择DNSpy中的w3wp.exe进程并开始调试会话。

为了在调试过程中全面查看加载的模块建议访问DNSpy中的模块窗口,然后打开所有模块并对程序集进行排序,以便更轻松地导航和调试。

本指南概括了WebAssembly和.Net反编译的要点为开发人员提供了轻松处理这些任务的途径。

Java反编译器

要反编译Java字节码这些工具非常有帮助

调试DLLs

使用IDA

  • Rundll32从特定路径加载64位和32位版本。
  • 选择Windbg作为调试器,并启用在库加载/卸载时暂停的选项。
  • 执行参数包括DLL路径和函数名称。此设置会在每个DLL加载时停止执行。

使用x64dbg/x32dbg

  • 与IDA类似使用命令行修改加载rundll32以指定DLL和函数。
  • 调整设置以在DLL入口处中断允许在所需的DLL入口点设置断点。

图像

通过屏幕截图展示了执行停止点和配置。

ARM和MIPS

  • 对于仿真,arm_now是一个有用的资源。

Shellcode

调试技术

  • Blobrunnerjmp2it是用于在内存中分配shellcode并使用Ida或x64dbg进行调试的工具。
  • Blobrunner 发布版本
  • jmp2it 编译版本
  • 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来反汇编shellcodeCyberChef配方

Movfuscator

  • 一种用mov替换所有指令的混淆器。
  • 有用的资源包括YouTube解释PDF幻灯片
  • demovfuscator可能会反转movfuscator的混淆需要依赖项如libcapstone-devlibz3-dev,并安装keystone

Delphi

  • 对于Delphi二进制文件推荐使用IDR

课程