Функция ZwQueryValueKey, параметр ResultLength

Discussion in 'WASM.BEGINNERS' started by AssemblerIA64, Mar 6, 2009.

  1. AssemblerIA64

    AssemblerIA64 New Member

    Blog Posts:
    0
    Joined:
    Oct 7, 2007
    Messages:
    160
    В статье http://www.wasm.ru/article.php?article=drvw2k03 есть код
    Code (Text):
    1. invoke ZwQueryValueKey, hKey, $CCOUNTED_UNICODE_STRING("ProcessId", 4), \
    2.                                 KeyValuePartialInformation, addr kvpi, sizeof kvpi, [b]esp[/b]
    Почему последний параметр esp? Не понятно, куда esp указывает.
     
  2. Clerk

    Clerk Забанен

    Blog Posts:
    0
    Joined:
    Jan 4, 2008
    Messages:
    6,689
    Location:
    РБ, Могилёв
    Code (Text):
    1.          push eax
    2.          invoke ZwQueryValueKey, hKey, $CCOUNTED_UNICODE_STRING("ProcessId", 4), \
    3.                                 KeyValuePartialInformation, addr kvpi, sizeof kvpi, esp
    4.          pop ecx
    Esp указывает на вершину стека, инструкция push eax выделяет там слово, а он на него указывает. Последний параметр:
    Code (Text):
    1. OUT PULONG ResultLength
    Возвратит в эту переменную полученый размер, далее инструкция pop ecx извлекает его в регистр.
     
  3. AssemblerIA64

    AssemblerIA64 New Member

    Blog Posts:
    0
    Joined:
    Oct 7, 2007
    Messages:
    160
    Clerk, спасибо.
     
  4. Aspire

    Aspire New Member

    Blog Posts:
    0
    Joined:
    May 19, 2007
    Messages:
    1,028
    AssemblerIA64
    Я так хотел изобразить подобный финт на С++. Не получилось.