Skip to content

Latest commit

 

History

History
48 lines (41 loc) · 1.33 KB

200312151414.txt.md

File metadata and controls

48 lines (41 loc) · 1.33 KB
  1. ntdll!RtlFillMemoryUlong()

RtlpInsertFreeBlock()调用过RtlFillMemoryUlong()。注意该函数与memset()的区 别。

用IDA Pro逆向英文版XP SP1的ntdll!RtlFillMemoryUlong:


; __stdcall RtlFillMemoryUlong(x,x,x) public _RtlFillMemoryUlong@12 _RtlFillMemoryUlong@12 proc near

dest= dword ptr 8 bytecount= dword ptr 0Ch value= dword ptr 10h

push edi
mov edi, [esp+dest]
mov ecx, [esp+bytecount]
mov eax, [esp+value]
shr ecx, 2                          ; bytecount / 4
rep stosd
pop edi
retn 0Ch

_RtlFillMemoryUlong@12 endp

下面是C风格的伪代码:


VOID NTAPI RtlFillMemoryUlong ( PULONG dest, // 第01形参,[EBP+0x008] DWORD bytecount, // 第02形参,[EBP+0x00C],以字节为单位 ULONG value // 第03形参,[EBP+0x010] ) { /* * 假设ULONG占4字节 */ bytecount /= 4; while ( bytecount-- ) { dest++ = value; } / end of while / return; } / end of RtlFillMemoryUlong */