Нахождение PID, TEB и TEB

Тема в разделе "WASM.ASSEMBLER", создана пользователем novIce, 22 июл 2007.

  1. novIce

    novIce New Member

    Публикаций:
    0
    Регистрация:
    14 июн 2004
    Сообщения:
    45
    Адрес:
    Russia
    Сделал вставку на asm в С программу дык как то криво.
    Если есть у кого мысли по улучшению алгоритма прошу отразить.

    Код (Text):
    1.     _asm
    2.     {
    3.         mov eax, dword ptr fs:[18h]
    4.         mov pTEB, eax
    5.             push eax
    6.         mov eax, dword ptr [eax+20h]
    7.         mov PID, eax
    8.             pop eax
    9.         mov eax, dword ptr [eax+30h]
    10.         mov pPEB, eax
    11.     }
    естественно сначала int pTEB, PID, pPEB;
    Знаю здесь есть много талантливых кодеров гляньте, за спрос не бейте сильно.

    Заранее спасибо за идеи!
     
  2. asmfan

    asmfan New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2006
    Сообщения:
    1.004
    Адрес:
    Abaddon
    Если простое перемещение памяти - алгоритм, то можно улучшить - не использовать стэк. задействовать вспомогательный(е) регистр(ы).
     
  3. novIce

    novIce New Member

    Публикаций:
    0
    Регистрация:
    14 июн 2004
    Сообщения:
    45
    Адрес:
    Russia
    asmfan
    Да конечно! Тот же mov ebx,eax схавает 2 байта, а push всего 1.

    Не я имел ввиду другой (более короткий) способ нахождения PID, pTEB (Address TEB), pPEB(Address PEB).
     
  4. t00x

    t00x New Member

    Публикаций:
    0
    Регистрация:
    15 фев 2007
    Сообщения:
    1.921
    mov ebx, eax выполняется быстрее чем обращение к памяти (push, pop)

    быстрее чем непосредственное чтение из памяти может быть только чтение регистра
     
  5. leo

    leo Active Member

    Публикаций:
    0
    Регистрация:
    4 авг 2004
    Сообщения:
    2.542
    Адрес:
    Russia
    А я вот так и не понимаю, почему в виндах при чтении полей TEB всегда сначала грузят указатель на TEB из fs:[18h], хотя он и в 9х и во всех NT равен fs:0 и поэтому поля можно адресовать непосредственно от fs
    Код (Text):
    1. mov eax, fs:[20h]
    2. mov PID, eax
    3. mov eax, fs:[30h]
    4. mov pPEB, eax