恶意程序有时会直接在内存中运行shellcode 。在这篇文章中,我将向你展示如何从内存中获取shellcode。
shellcode在内存中的位置
在内存中分配shellcode的常用方法是使用VirtualAlloc来分配具有所需权~限的内存。然后恶意软件使用RtlMoveMemory将shellcode写入分配的空间。然后创建一个线程将控制权传递到该位置。
shellcode在内存中的位置
如何从内存中提取shellcode
1、我们可以使用api hooks 来提取shellcode。在任何 API 调用上设置断点是很常见的。我将使用 x64dbg。你可以使用其他应用程序。
2、将可执行文件下载到 x64dbg。转到符号并找到VirtualAlloc。设置断点并执行直到返回。
VirtualAlloc将返回分配内存的地址。它将在rax/eax寄存器中。这是你可以找到shellcode的地址。
调用CreateThread函数时设置断点。第三个参数是我们复制shellcode的内存地址。
将突出显示的值与 EAX 进行比较
按照转储中的地址。这里是shellcode的位置:
让我们将内存中的shellcode与源代码中的shellcode进行比较。前三个字节是 DA CB BB
。
是的,它匹配。此方法可用于将解压缩/解密的可执行文件提取到内存中。
原创 7s 7维空间