Old binaries (Windows 2000 RTM, Windows XP RTM, Windows 2003 RTM) do not have this hotpatching prologue part. It was first introduced with Windows 2003 SP1 and higher version and after then come with service packs to XP. Aside from this many routines in NTDLL do not have such prologue at all (for example all Nt(Zw) stubs).
Example given, ntdll!
CsrClientCallServer
Windows 2003 NO SP
Code: Select all.text:77F49D69 push ebp
.text:77F49D6A mov ebp, esp
.text:77F49D6C mov eax, [ebp+arg_C]
.text:77F49D6F push ebx
Windows 7 SP1
Code: Select all.text:77F1EA70 mov edi, edi
.text:77F1EA72 push ebp
.text:77F1EA73 mov ebp, esp
.text:77F1EA75 mov ecx, [ebp+arg_8]
.text:77F1EA78 mov edx, [ebp+arg_C]
Windows XP SP3
Code: Select all.text:7C912D71 mov edi, edi
.text:7C912D73 push ebp
.text:7C912D74 mov ebp, esp
.text:7C912D76 mov eax, [ebp+arg_C]
Windows 2003 SP2
Code: Select all.text:7C93EBF3 mov edi, edi
.text:7C93EBF5 push ebp
.text:7C93EBF6 mov ebp, esp
.text:7C93EBF8 mov eax, [ebp+arg_C]
Another example, kernel32!
GetStdHandle.
Windows 2000 SP4 (5.0.2195.7006) dated back to 2005 year.
Code: Select all.text:79438797 ; HANDLE __stdcall GetStdHandle(DWORD nStdHandle)
.text:79438797 push ebp
.text:79438798 mov ebp, esp
.text:7943879A push esi
.text:7943879B mov eax, large fs:18h
Windows XP SP2
Code: Select all.text:7C812CA9 ; HANDLE __stdcall GetStdHandle(DWORD nStdHandle)
.text:7C812CA9 mov edi, edi
.text:7C812CAB push ebp
.text:7C812CAC mov ebp, esp
.text:7C812CAE push esi
.text:7C812CAF mov eax, large fs:18h
So in simple words - you can't assume that you always have hotpatching prologue in NTDLL. If you plan restore functions body the only good way - read dll from disk and use it real data for restoring.