RtlAllocateHeap

From
Alexey Nevolin (2:5030/322.41)
To
Alex Fedotov
Date
2001-03-15T00:06:08Z
Area
SU.WINDOWS.NT.PROG
 ■ Hi there, Alex !

 ■ Сдаунлоадив Holodisk в свой Pip-Boy 2000 я обнаружил, что в 14 Mar 01 08:57, Alex Fedotov писал Alexey Nevolin:

 AF> Что-то мне кажется, что GlobalLock и иже с ним тут не при чем. В NT
 AF> Global- функции (и Local- тоже) смоделированы поверх HeapAlloc /
 AF> HeapRealloc / HeapFree (see "Managing Heap Memory in Win32" technical
 AF> article on MSDN). То есть в одном хипе находится много блоков памяти,
 AF> каждый со своим счетчиком блокировок. Что же тогда задает число,
 AF> передаваемое RtlCreateHeap?
Тут вот что: если посмотреть hiew'ом kernel32.dll, то все функции блокировки/разблокировки ссылаются (рано или поздно, но однозначно) в недокументированную RtlLockHeap. Которой передается КУЧА параметров. (Куча слабо сказанно).

─── Тут начинается файл Windows Clipboard ───
▓    kernel32.dll  FRO   PE.77F119D0 a32 --------   374544 ║ Hiew 6.55 (c)SEN
▓.77F119D0: 64A100000000                 mov         eax,fs:[000000000]
▓.77F119D6: 55                           push        ebp
▓.77F119D7: 8BEC                         mov         ebp,esp
░.77F119D9: 6AFF                         push        0FF
░.77F119DB: 68B0CBF377                   push        077F3CBB0 ;"w?╦░"
░.77F119E0: 6844B7F377                   push        077F3B744 ;"w?╖D"
░.77F119E5: 50                           push        eax
░.77F119E6: 64892500000000               mov         fs:[000000000],esp
░.77F119ED: 83EC18                       sub         esp,018 ;""
░.77F119F0: 53                           push        ebx
░.77F119F1: 56                           push        esi
░.77F119F2: 57                           push        edi
░.77F119F3: 8B7508                       mov         esi,[ebp][00008]
░.77F119F6: F7C604000000                 test        esi,000000004 ;"   "
░.77F119FC: 8965E8                       mov         [ebp][-0018],esp
░.77F119FF: 0F849B000000                 je         .077F11AA0   -------- (1)
░.77F11A05: A12065F477                   mov         eax,[077F46520]
░.77F11A0A: 50                           push        eax
░.77F11A0B: FF15FCC1F377                 call        RtlLockHeap ;ntdll.dll
░.77F11A11: 33FF                         xor         edi,edi
░.77F11A13: 897DFC                       mov         [ebp][-0004],edi
░.77F11A16: 83EE04                       sub         esi,004 ;""
░.77F11A19: 56                           push        esi
░1Help   2PutBlk 3Edit   4Mode   5Goto   6Refer  7Search 8Header 9Files 10Quit
─── А здесь Windows Clipboard кончается ───

.77f119d0 - entrypoint от GlobalLock'а. Считаем push'ы. 9 штук =) Все остальные Global/Local Lock'и, Unlock'и, и т.д. Сходятся в итоге сюда.

 >> 2ВСЕ - у кого есть книжка - помогайте!
 AF> Какая книжка?
Книжка с описанием Native API =) Их куча на амазоне.

 ■ cul8r Alex
 ■ wbr Alexey Nevolin.

  [Tuborg][ESP][Drums][WinNT][Sun Solaris][OS/2][Quake3][Scorpions][Metallica]
                    [FML366][Iron Maiden][RU.METALLICA]
... lurking in a dismal fog, hungry for your blood...
 * Origin: Page Fault Station (2:5030/1272.64)