перевод небольшого кода с С на масм

Тема в разделе "WASM.BEGINNERS", создана пользователем GeNeZiS, 11 янв 2008.

Статус темы:
Закрыта.
  1. GeNeZiS

    GeNeZiS New Member

    Публикаций:
    0
    Регистрация:
    14 сен 2006
    Сообщения:
    135
    Доброго времени суток.
    Помогите пожалуйста начинающему. хочется понять как работать со структурами.

    как на синтаксисе масма будет выглядеть следующее:
    Код (Text):
    1. PMODULES pModules = (PMODULES)&pModules;
    2. DWORD dwNeededSize;
    3.  
    4. NtQuerySystemInformation(SystemModuleInformation, pModules, 4, &dwNeededSize);
    5. pModules = (PSYSTEM_MODULE_INFORMATION)VirtualAlloc(NULL, dwNeededSize, MEM_RESERVE | MEM_COMMIT, PAGE_READWRITE);
    6. NtQuerySystemInformation(SystemModuleInformation, pModules, dwNeededSize, NULL);
    7. DWORD dwKernelBase = (DWORD)pModules->smi.Base;
    8. PCHAR pKernelName = pModules->smi.ModuleNameOffset+pModules->smi.ImageName;
    Благодарю за внимание.
     
  2. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Код (Text):
    1. Local SystemInformation:PVOID
    2. Local LengthReturned:ULONG, BufferSize:ULONG
    3.     invoke ZwQuerySystemInformation, SystemModuleInformation, NULL, NULL, addr BufferSize
    4.     cmp eax,STATUS_INFO_LENGTH_MISMATCH
    5.     jnz exit_
    6.     mov SystemInformation,NULL
    7.     invoke ZwAllocateVirtualMemory, NtCurrentProcess, addr SystemInformation, NULL, addr BufferSize, MEM_COMMIT, PAGE_READWRITE
    8.     test eax,eax
    9.     jnz exit_
    10.     invoke ZwQuerySystemInformation, SystemModuleInformation, SystemInformation, BufferSize, addr LengthReturned
    11.     test eax,eax
    12.     jnz err_query_
    13.     ----...----
    14. err_query_:
    15.     invoke ZwFreeVirtualMemory, NtCurrentProcess, addr SystemInformation, addr BufferSize, MEM_RELEASE
    16. exit_:
    Спроси нормально, что ты хочешь найти.
     
  3. GeNeZiS

    GeNeZiS New Member

    Публикаций:
    0
    Регистрация:
    14 сен 2006
    Сообщения:
    135
    спасибо огромное.

    мне необходимо получить имя (ImageName + ModuleNameOffset) из структуры SYSTEM_MODULE_INFORMATION
     
  4. GeNeZiS

    GeNeZiS New Member

    Публикаций:
    0
    Регистрация:
    14 сен 2006
    Сообщения:
    135
    ок. то что нужно я получил!

    еще небольшой вопрос:
    Код (Text):
    1. void GetHeaders(PCHAR ibase, PIMAGE_FILE_HEADER *pfh, PIMAGE_OPTIONAL_HEADER *poh, PIMAGE_SECTION_HEADER *psh)
    2. {
    3.     PIMAGE_DOS_HEADER mzhead = (PIMAGE_DOS_HEADER)ibase;
    4.     *pfh = (PIMAGE_FILE_HEADER)&ibase[mzhead->e_lfanew];
    5.     *pfh = (PIMAGE_FILE_HEADER)((PBYTE)*pfh + sizeof(IMAGE_NT_SIGNATURE));
    6.     *poh = (PIMAGE_OPTIONAL_HEADER)((PBYTE)*pfh + sizeof(IMAGE_FILE_HEADER));
    7.     *psh = (PIMAGE_SECTION_HEADER)((PBYTE)*poh + sizeof(IMAGE_OPTIONAL_HEADER));
    8. }
    как на масме будет выглядеть данный код?
    особенно смущает : *pfh = (PIMAGE_FILE_HEADER)&ibase[mzhead->e_lfanew];
    помогите пожалуйста новичку.

    заранее благодарен
     
  5. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    GeNeZiS спрашивай конкретно что-ты сделать хочеш.
     
  6. GeNeZiS

    GeNeZiS New Member

    Публикаций:
    0
    Регистрация:
    14 сен 2006
    Сообщения:
    135
    хочу получить SST. пытаюсь разобраться в сишных исходниках Cr4sha но что-то туго идет. никак не пойму как со структурами нормально работать.
     
  7. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    SST - всмысле System Service Table?
    Если да, то какую - текущую или оригинальную.
     
  8. GeNeZiS

    GeNeZiS New Member

    Публикаций:
    0
    Регистрация:
    14 сен 2006
    Сообщения:
    135
    да System Service Table.
    оригинальную. чтобы восстановить потом.
     
  9. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Я уже выкладывал готовый код для микроядра.
    Посмотри ниже тему "Undocumented" < [описался]
     
  10. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    С Win32k попробую сегодня разобратся.
     
  11. GeNeZiS

    GeNeZiS New Member

    Публикаций:
    0
    Регистрация:
    14 сен 2006
    Сообщения:
    135
    этот архив? http://dump.ru/files/n/n653656336/
    нужный мне код это ф-я QuerySystemImageBase(_Img_QuerySystemImageBase_.asm)?
     
  12. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Вот - QueryNtoskrnlSystemServiceTable()
     
  13. GeNeZiS

    GeNeZiS New Member

    Публикаций:
    0
    Регистрация:
    14 сен 2006
    Сообщения:
    135
    ок. а 1й параметр что такое?
     
  14. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Первый параметр - указатель на структуру с адресом проекции и размером её.
    Проецируешь в память модуль ntdll, c помощью PsMapViewImageSystemFile, что возвратит - первый параметр там.
     
  15. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Вот лави:
    http://dump.ru/files/n/n4363877288/
     
  16. GeNeZiS

    GeNeZiS New Member

    Публикаций:
    0
    Регистрация:
    14 сен 2006
    Сообщения:
    135
    спасибо огромное. просветил меня бестолкового. буду теперь это все изучать.
     
  17. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Clerk
    Что-то ты разошёлся сильно. Форум - не место для чата.
     
Статус темы:
Закрыта.