我对逆向工程和组装的东西很感兴趣我已经开始做一些研究,我仍然是一个完整的初学者,到目前为止我学到的东西我们可以使用 virtualbox 为我们转储 RAM,这样我们就可以获得完整的内存转储并查看在打包程序的实际汇编代码中,以及到目前为止我在 x86 Windows 7 Ultimate VM 上所做的
首先在启用调试模式的情况下启动虚拟机
virtualboxvm --startvm "Windows 7" --dbg
然后通过以下方式打开 VirtualBox 调试控制台 Debug -> Command Line
并使用此命令您可以获得完整的 RAM 转储文件:
VBoxDbg> .pgmphystofile 'dump.bin'
所以现在我有了这个文件,但我不确定分析它的正确方法,我猜它是一个“平面二进制文件”
file dump.bin
将输出:
dump.bin :data
我试图用来volatility
获取一些信息:
volatility -f dump.bin imageinfo
输出:
Volatility Foundation Volatility Framework 2.6
INFO : volatility.debug : Determining profile based on KDBG search...
Suggested Profile(s) : Win7SP1x86_23418, Win7SP0x86, Win7SP1x86_24000, Win7SP1x86
AS Layer1 : IA32PagedMemoryPae (Kernel AS)
AS Layer2 : FileAddressSpace (/root/w7-nc-shell.bin)
PAE type : PAE
DTB : 0x185000L
KDBG : 0x8292dc28L
Number of Processors : 1
Image Type (Service Pack) : 1
KPCR for CPU 0 : 0x8292ec00L
KUSER_SHARED_DATA : 0xffdf0000L
Image date and time : 2020-06-14 17:41:24 UTC+0000
Image local date and time : 2020-06-14 09:41:24 -0800
一堆我不确定它们真正含义的信息(如果你能在评论中向我推荐一些关于这些信息的有用资源,我将不胜感激)
因此,无论如何使用波动率,我们都可以使用以下命令获取进程列表:
volatility -f dump.bin --profile=Win7SP1x86_23418 pslist
输出:
Volatility Foundation Volatility Framework 2.6
Offset(V) Name PID PPID Thds Hnds Sess Wow64 Start Exit
---------- -------------------- ------ ------ ------ -------- ------ ------ ------------------------------ ------------------------------
0x8415e558 System 4 0 83 503 ------ 0 2020-06-15 04:31:21 UTC+0000
0x84874560 smss.exe 248 4 2 29 ------ 0 2020-06-15 04:31:21 UTC+0000
0x850579b0 csrss.exe 324 316 10 452 0 0 2020-06-15 04:31:25 UTC+0000
0x850ead40 csrss.exe 376 368 10 267 1 0 2020-06-15 04:31:26 UTC+0000
0x850e9030 wininit.exe 392 316 3 76 0 0 2020-06-15 04:31:26 UTC+0000
0x8511ad40 winlogon.exe 420 368 3 110 1 0 2020-06-15 04:31:26 UTC+0000
....
有没有办法获取一个特定进程的转储并将其转换回 PE?这样我就可以轻松调试解压后的代码了?如果没有,有没有办法只转储进程并反汇编它?
提前致谢。