我正在使用本地Bochs调试器和IDA Pro来调试Shellcode。此shellcode在IDA Pro中可以正确反汇编,但是,现在我要对其进行调试。实例:

xor eax, eax
mov eax, dword ptr fs:[eax+0x30] // PEB


由于PEB是Windows操作系统中定义的结构,因此Bochs无法正确执行此代码(不会在eax中加载PEB地址)。 br />
同样,解析kernel32.dll结构以查找各种API地址的其他代码段也不起作用。 ?

我也有以下内容:在主机操作系统上使用IDA Pro?我认为在这种情况下,可以使用Windows调试器,windbg的引擎。

会有什么配置?在以下文章中:

https://www.hex-rays.com/products/ida/support/tutorials/debugging_windbg.pdf

它描述了如何调试Windows上运行的远程进程。但就我而言,它不是一个进程,而是从文本文件加载的shellcode。

评论

如果不必一定是Bochs,则在此处介绍一种简单的方法来调试Shellcode,方法是使用OllyDbg将其注入正在运行的进程中:blackc0.de/2014/06/shellcode-debugging-ollydbg

#1 楼

对于在Windows上以及一般情况下测试shellcode,最好将其包装在一个执行它的小程序中。

你可以做的是编写一个小程序,该程序将从文件中读取shellcode,例如,读取到malloc()-ed缓冲区中,然后跳转到该缓冲区。

在Windows上,您可能要使用VirtualProtect在对该内存区域进行跳转之前设置PAGE_EXECUTE_READWRITE权限。

将shellcode读取到已分配的内存中并设置了执行权限后,您只需使用函数指针即可对其进行调用/跳转。

这将生成可执行二进制文件,您可以在任何调试器中运行该二进制文件,在调用函数指针之前设置断点,然后根据需要调试shellcode。

编辑:

快速搜索仅显示有关Windows x64 Shellcode的文章中的程序。相同的代码可以在32位Windows上应用。