锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

windows 10 compressed memory工具的使用

时间:2023-01-30 19:00:00 075k1l100只电阻器sl连接电缆

win10 压缩后的内存 windbg查找

抄袭自

  • https://www-fireeye-com.translate.goog/blog/threat-research/2019/08/finding-evil-in-windows-ten-compressed-memory-part-two.html?_x_tr_sl=auto&_x_tr_tl=zh-CN&_x_tr_hl=zh-CN&_x_tr_pto=wapp
  • https://www.fireeye.com/content/dam/fireeye-www/blog/pdfs/finding-evil-in-windows-10-compressed-memory-wp.pdf
  • https://github.com/mandiant/win10_volatility
  • https://www.blackhat.com/us-19/briefings/schedule/#paging-all-windows-geeks–finding-evil-in-windows–compressed-memory-15582

简介

笔记本电脑突然变蓝了。我以为我遇到了一个远程崩溃的软件。我以为机会来了,终于可以调试蓝屏了。我以为是smb蓝屏服务,接下来令人沮丧,没有定位到蓝屏的具体原因和过程,但是dmp信息指向了compressed,想了想,还是跟着看看相关的材料,现在只能用相关的工具,太菜,现在具体结构还没有弄清楚,这个先暂时结一下,以后考古再回头看。

准备材料

申请内存过大会导致前面内存块压缩的程序
win10_volatility 运行环境

内存申请程序

 int main() {  long long memsize = 0;  memsize  = FILE_SIZE;  char* buf = new char[memsize];  cout <<"hello";  memcpy(buf,"hellworld,helloworld,hellworld,hellworld,hellworld,hellworld,hellworld",71);  memset((char*)(buf 77), 'A', memsize);  printf("memsize:4d  MB\r\n", memsize / 1024 / 1024);  printf("%llx", (char*)buf);  while (true)  {   memsize  = FILE_SIZE;   char* sss = new char[memsize];   memset(sss, 'hihh', memsize);   printf("memsize:4d  MB\r\n", memsize / 1024 / 1024);   printf("%llx", &sss);      getchar();  } }  

过程

借助虚拟机vmem,对着part2 和win10_volatility 虚拟机不知道偏移在哪里bug, 相同的内存镜像 , 第一次导出vmem偏移可以向上,第二次vmem如果没有偏移,工具找不到偏移,对上次vmem偏移,唯一的小问题是最终的计算region of compressed pages va每个系统的版本都不一样,可以参考 volatility 结构体的定义.在addrspces和windows下的win10_memcompression中

EXCEPTION_RECORD:  ffff81823a10eeb8 -- (.exr 0xffff81823a10eeb8) ExceptionAddress: fffff80778522c60 (nt!RtlDecompressBufferXpressLz 0x0000000000000050)    ExceptionCode: c0000006 (In-page I/O error)   ExceptionFlags: 00000000 NumberParameters: 3    Parameter[0]: 0000000000000000    Parameter[1]: 00000174165d6f70//IO内存地址操作失败    Parameter[2]: 00000000c0000185//具体IO操作错误 Inpage operation failed at 00000174165d6f70, due to I/O error 00000000c0000185 不正确的终端或基础 SCSI 设备的电缆损坏,或两个设备试图使用相同的电缆 IRQ。 如果 I/O 状态为 C分页文件位于000185 SCSI 磁盘上(分页池),请检查磁盘电缆的连接情况 SCSI 终止是否有问题。  EXCEPTION_PARAMETER1:  0000000000000000  EXCEPTION_PARAMETER2:  00000174165d6f70     11111111 11111111 10110011 10000000          11111100 1101110 00010000 00000000

ffffb380    

fcde1000



CONTEXT:  ffff81823a10e6f0 -- (.cxr 0xffff81823a10e6f0)
rax=fffff80778522c10 rbx=ffffb380fcde1000 rcx=ffffb380fcde1000
rdx=ffffb380fcde1000 rsi=0000000000000002 rdi=00000174165d6f70
rip=fffff80778522c60 rsp=ffff81823a10f0f8 rbp=00000174165d6f26
 r8=00000174165d6f70  r9=000000000000000c r10=ffffb380fcde1ea0
r11=00000174165d6f7c r12=ffff81823a10f368 r13=ffff8d09355dd000
r14=ffffb380fcde2000 r15=0000000000000000
iopl=0         nv up ei pl zr na po nc
cs=0010  ss=0000  ds=002b  es=002b  fs=0053  gs=002b             efl=00050246
nt!RtlDecompressBufferXpressLz+0x50:
fffff807`78522c60 418b08          mov     ecx,dword ptr [r8] ds:002b:00000174`165d6f70=????????
Resetting default scope


ecx,edx,r8d,r9d,


2: kd> uf  nt!RtlDecompressBufferXpressLz
nt!RtlDecompressBufferXpressLz:
fffff807`78522c10 48895c2408      mov     qword ptr [rsp+8],rbx
fffff807`78522c15 48896c2410      mov     qword ptr [rsp+10h],rbp
fffff807`78522c1a 4889742418      mov     qword ptr [rsp+18h],rsi
fffff807`78522c1f 48897c2420      mov     qword ptr [rsp+20h],rdi
fffff807`78522c24 4156            push    r14
fffff807`78522c26 4157            push    r15
fffff807`78522c28 488bd9          mov     rbx,rcx
fffff807`78522c2b 4183f905        cmp     r9d,5
fffff807`78522c2f 0f829e030000    jb      nt!RtlDecompressBufferXpressLz+0x3c3 (fffff807`78522fd3)  Branch    

nt!RtlDecompressBufferXpressLz+0x25:
fffff807`78522c35 448bf2          mov     r14d,edx
fffff807`78522c38 488bd1          mov     rdx,rcx
fffff807`78522c3b 4c03f1          add     r14,rcx
fffff807`78522c3e 458bd9          mov     r11d,r9d
fffff807`78522c41 4d03d8          add     r11,r8
fffff807`78522c44 4533ff          xor     r15d,r15d
fffff807`78522c47 4d8d96a0feffff  lea     r10,[r14-160h]
fffff807`78522c4e 498d6baa        lea     rbp,[r11-56h]
fffff807`78522c52 0f1f4000        nop     dword ptr [rax]
fffff807`78522c56 66660f1f840000000000 nop word ptr [rax+rax]

nt!RtlDecompressBufferXpressLz+0x50:
fffff807`78522c60 418b08          mov     ecx,dword ptr [r8]
bcdedit   /debug on
bcdedit /dbgsettings net hostip :xxx port :xxx key:xxxx.xxx.aaa.xxd

STACK_TEXT: 
kb  k 
 Child-SP          return adress					参数  
ffff8182`3a10f0f8 fffff807`784d2530     : ffffb380`fcde1000 ffffb380`fcde1000 00000000`00000002 00000174`165d6f70 : nt!RtlDecompressBufferXpressLz+0x50
ffff8182`3a10f110 fffff807`7843b670     : 00000000`00000001 00000000`00000000 00000000`00000000 ffffafa4`3da5b7b5 : nt!RtlDecompressBufferEx+0x60  
ffff8182`3a10f160 fffff807`7843b4fd     : 00000000`00000004 fffff807`7843b8b6 00000000`00000000 00000000`00000001 : nt!ST_STORE<SM_TRAITS>::StDmSinglePageCopy+0x150
ffff8182`3a10f220 fffff807`7843be28     : 00000000`00000001 00000000`00016f70 ffff8d09`2f430000 ffff8d09`00001000 : nt!ST_STORE<SM_TRAITS>::StDmSinglePageTransfer+0xa5
ffff8182`3a10f270 fffff807`78539c1c     : 00000000`ffffffff ffff8d09`355dd000 ffff8182`3a10f350 ffff8d09`2ec89250 : nt!ST_STORE<SM_TRAITS>::StDmpSinglePageRetrieve+0x180
ffff8182`3a10f310 fffff807`78539a69     : ffffb380`f5788730 00000000`00000001 00000000`00000000 00000000`00000000 : nt!ST_STORE<SM_TRAITS>::StDmPageRetrieve+0xc8
ffff8182`3a10f3c0 fffff807`78539921     : ffff8d09`2f430000 ffff8d09`2ec89250 ffff8d09`355dd000 ffff8d09`2f4319c0 : nt!SMKM_STORE<SM_TRAITS>::SmStDirectReadIssue+0x85
ffff8182`3a10f440 fffff807`78427328     : ffff8d09`471d1080 ffff8d09`2f430000 00000000`00000000 ffff8d09`4c7a3650 : nt!SMKM_STORE<SM_TRAITS>::SmStDirectReadCallout+0x21
ffff8182`3a10f470 fffff807`7853adf7     : fffff807`78539900 ffff8182`3a10f510 00000000`00000003 00000000`00000000 : nt!KeExpandKernelStackAndCalloutInternal+0x78
ffff8182`3a10f4e0 fffff807`7843634c     : ffff8182`3a10f5e0 00000000`31526d73 00000000`000003ff fffff807`78f239c0 : nt!SMKM_STORE<SM_TRAITS>::SmStDirectRead+0xc7
ffff8182`3a10f5b0 fffff807`78435d80     : 00000000`0000000c 00000000`000003ff ffff8182`3a10f660 fffff807`78f239c0 : nt!SMKM_STORE<SM_TRAITS>::SmStWorkItemQueue+0x1ac
ffff8182`3a10f600 fffff807`7853a057     : 00000000`0000000c 00000000`00000001 ffff8d09`2ec89250 ffff8d09`4c7a3650 : nt!SMKM_STORE_MGR<SM_TRAITS>::SmIoCtxQueueWork+0xc0
ffff8182`3a10f690 fffff807`785324cf     : ffff8d09`00000001 ffff8d09`4c7a3710 00000000`00000000 ffff8d09`2f430000 : nt!SMKM_STORE_MGR<SM_TRAITS>::SmPageRead+0x167
ffff8182`3a10f700 fffff807`78532470     : 0000007f`00000100 00000000`00000000 ffff8182`3a10f958 fffff807`78473820 : nt!SmPageRead+0x33
ffff8182`3a10f750 fffff807`7847337d     : 00000000`00000002 ffff8182`3a10f7e0 ffff8182`3a10f958 ffff8d09`4c7a3600 : nt!MiIssueHardFaultIo+0x10c
ffff8182`3a10f7a0 fffff807`784a69c8     : 00000000`c0033333 00000000`00000001 0000028f`711013b8 00000000`00000000 : nt!MiIssueHardFault+0x29d
ffff8182`3a10f860 fffff807`78605e5e     : ffff8d09`471d1080 ffff8d09`00000000 ffff8182`3a10fa18 00000000`00000000 : nt!MmAccessFault+0x468
ffff8182`3a10fa00 00007ffc`12279ce4     : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : nt!KiPageFault+0x35e
000000ab`facfefc0 00000000`00000000     : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : 0x00007ffc`12279ce4




dd fffff802`c560c4d8  l1

uf nt!MmStoreCheckPagfiles
.for(r $t0=0;$t0<4;r $t0=$t0+1){ 
        dt nt!_MMPAGING_FILE poi(fffff802`c560c4e0+$t0*8) PageFileName VirtualStorepageFile}


!process 0 0 ConsoleApplication3.exe

.process /i   ffffcb80be6015c0  ;g;!pte 1f091c11040;
 


2008921a

sGlobals
root
1: kd> dq nt!SmGlobals +1b8 +8
1: kd> dd  ffffa38c`38f35138
ffffa38c`38f35138  20039b6c 00030000 20039b6d 00030000


0: kd> dd ffffb609`65953ec8
ffffb609`65953ec8  200819be 00030000 200819bf 00030000
00030000



dq poi(poi(nt!SmGlobals +0*8) +0*28)

1: kd> dq poi(poi(nt!SmGlobals +0*8) +0*28)
ffffb609`646f7000  00000080`00058800 00001ff8`00020000
ffffb609`646f7010  00000000`00000000 ffffb609`646f7000


dq poi(poi(poi(nt!SmGlobals +0*8) +0*28)+14*4)

1: kd> dd ffffa38c`388eaad8  
ffffa38c`388eaad8  2008921a 00028645 2008921b 00028646
ffffa38c`388eaae8  2008921c 00028647 2008921d 00028648

chunk key  28645

 
dq poi(poi(nt!SmGlobals +0*8) +0*28)+218

9
1ff
18

? 28645>9
0: kd> ? 28645>>9
Evaluate expression: 323 = 00000000`00000143

1: kd> ?(28645&1ff)*c
Evaluate expression: 828 = 00000000`0000033c



1: kd>  .formats 00000143
Evaluate expression:
  Hex:     00000000`00000143
  Decimal: 323
  Octal:   0000000000000000000503
  Binary:  00000000 00000000 00000000 00000000 00000000 00000000 00000001 01000011
  Chars:   .......C
  Time:    Thu Jan  1 08:05:23 1970
  Float:   low 4.52619e-043 high 0
  Double:  1.59583e-321
  
  i=8
  j=43*2=86
  dq poi(poi(nt!SmGlobals +0*8) +0*28)+110
  x
  
  dq poi(poi(poi(poi(nt!SmGlobals +0*8) +0*28)+110+8*8)+8*86)+39c+18
  
  
  offfset a8
  18
  
  0: kd>  dq poi(poi(poi(poi(nt!SmGlobals +0*8) +0*28)+110+3*8)+8*2)+a8+18
ffffb609`65b450c0  00001edd`0006aa38 0006ab26`b7262557


0: kd>  dd poi(poi(poi(poi(nt!SmGlobals +0*8) +0*28)+110+3*8)+8*2)+a8+18
ffffb609`65b450c0  0006aa38 00001edd b7262557 0006ab26
ffffb609`65b450d0  00001edd 17ecf2ce 0006ac14 00001edd
1: kd> dd poi(poi(poi(poi(nt!SmGlobals +0*8) +0*28)+110+8*8)+8*86)+33c+18
ffffa38c`388ef354  00b5073f 00001046 c7a81541 00b50744
00b5073f
00001046
cr3  c7a81541

dd   poi(poi(nt!SmGlobals +0*8) +0*28)+378

0: kd> dd   poi(poi(nt!SmGlobals +0*8) +0*28)+378
ffffb609`646f7378  00001fff 0000000d 00001fff 00000100

?(b5073f&1fff)<<4

0: kd> ?(b5073f&1fff)<<4
Evaluate expression: 29680 = 00000000`000073f0
0: kd> ?  b5073f>>d
Evaluate expression: 1448 = 00000000`000005a8
ponit=5a8
pags=73f0



dq  poi(poi(poi(nt!SmGlobals +0*8) +0*28)+1828)+8*5a8


ffffb609`645921a8  00000000`0073a380

00000000`00015693

!process 0 0 MemCompression


.process /i ffffa38c3765f040  ; g;






1: kd> .process /i   ffffbb068672e580  ;g;!pte 0x21a0201c040;
You need to continue execution (press 'g' <enter>) for the context
to be switched. When the debugger breaks in again, you will be in
the new process context.
Break instruction exception - code 80000003 (first chance)
                                           VA 0000021a0201c040
PXE at FFFF8341A0D06020    PPE at FFFF8341A0C04340    PDE at FFFF834180868080    PTE at FFFF83010D0100E0
contains 0000000000000000
contains 0000000000000000
not valid

0: kd> !pte 1c257b18040
                                           VA 000001c257b18040
PXE at FFFF8341A0D06018    PPE at FFFF8341A0C03848    PDE at FFFF8341807095E8    PTE at FFFF8300E12BD8C0
contains 0A0000006A5CA867  contains 0A0000006A5CB867  contains 0A0000006A8ED867  contains 000EBAA700002094
pfn 6a5ca     ---DA--UWEV  pfn 6a5cb     ---DA--UWEV  pfn 6a8ed     ---DA--UWEV  not valid
                                                                                  PageFile:  2
                                                                                  Offset: ebaa7
                                                                                  Protect: 4 - ReadWrite
																				  
----------------------------------------------------------------------------------start--------------------------------------													  
kd> .process /i   ffffcb80be6015c0  ;g;!pte 1f091c11040;
You need to continue execution (press 'g' <enter>) for the context
to be switched. When the debugger breaks in again, you will be in
the new process context.
Break instruction exception - code 80000003 (first chance)
                                           VA 000001f091c11040														
PXE at FFFFB3D9ECF67018    PPE at FFFFB3D9ECE03E10    PDE at FFFFB3D9C07C2470    PTE at FFFFB380F848E088
contains 0A0000001BCDA867  contains 0A0000001BCDB867  contains 0A00000049992867  contains 0003DD0400002084
pfn 1bcda     ---DA--UWEV  pfn 1bcdb     ---DA--UWEV  pfn 49992     ---DA--UWEV  not valid
                                                                                  PageFile:  2
                                                                                  Offset: 3dd04
                                                                                  Protect: 4 - ReadWrite
																				  
突然变化 ,不知道因为什么原因																				  
kd> !pte 1f091c11040;
                                           VA 000001f091c11040
PXE at FFFFB3D9ECF67018    PPE at FFFFB3D9ECE03E10    PDE at FFFFB3D9C07C2470    PTE at FFFFB380F848E088
contains 0A0000001BCDA867  contains 0A0000001BCDB867  contains 00098573007D2084
pfn 1bcda     ---DA--UWEV  pfn 1bcdb     ---DA--UWEV  contains 00098573007D2084
not valid
 PageFile:  2
 Offset: 98573
 Protect: 4 - ReadWrite



page  key: 2003dd04


kd> dq  nt!SmGlobals +1b8+8
fffff803`ee019b80  ffffcb80`c03c7000 00000000`0008ccab
fffff803`ee019b90  00000000`00000000 fffff803`ee019b90



kd> dq ffffcb80`c03c7000
ffffcb80`c03c7000  00000000`00030005 ffffcb80`be69f000
ffffcb80`c03c7010  00000000`20020b6a ffffcb80`c03c6000
ffffcb80`c03c7020  00000000`2004066d ffffcb80`c0766000
ffffcb80`c03c7030  00000000`2006056a ffffcb80`c08c1000
ffffcb80`c03c7040  00000000`20082a4d ffffcb80`c0c15000
ffffcb80`c03c7050  00000000`2009f335 ffffcb80`c4313000
ffffcb80`c03c7060  00000000`00000000 00000000`00000000
ffffcb80`c03c7070  00000000`00000000 00000000`00000000


kd> dq ffffcb80`c03c6000
ffffcb80`c03c6000  00000000`000200dc ffffcb80`c03cd000
ffffcb80`c03c6010  00000000`20020f64 ffffcb80`c03d6000
ffffcb80`c03c6020  00000000`20021161 ffffcb80`c03db000
ffffcb80`c03c6030  00000000`2002135e ffffcb80`c03de000
ffffcb80`c03c6040  00000000`2002155b ffffcb80`c03e3000
ffffcb80`c03c6050  00000000`20021758 ffffcb80`c03e8000
ffffcb80`c03c6060  00000000`20021955 ffffcb80`c03ed000
ffffcb80`c03c6070  00000000`20021b52 ffffcb80`c03f3000

kd> dq ffffcb80`c03c6000 l200
....
ffffcb80`c03c6c60  00000000`2003d91c ffffcb80`c06fc000
ffffcb80`c03c6c70  00000000`2003daaf ffffcb80`c0704000
ffffcb80`c03c6c80  00000000`2003dcad ffffcb80`c0708000
ffffcb80`c03c6c90  00000000`2003dea9 ffffcb80`c070c000



kd> dq ffffcb80`c0708000  l100
ffffcb80`c0708000  00000000`010101ee ffffcb80`c070c000
ffffcb80`c0708010  00030000`2003dcad 00030000`2003dcae
ffffcb80`c0708020  00030000`2003dcaf 00030000`2003dcb1
.......

ffffcb80`c0708258  00030000`2003dd04 00030000`2003dd05
ffffcb80`c0708268  00030000`2003dd06 00030000`2003dd07
ffffcb80`c0708278  00030000`2003dd08 00030000`2003dd09



smkm_store_index=0

kd> 元器件数据手册IC替代型号,打造电子元器件IC百科大全!
          

相关文章