Callgate на ассемблере? в чем ошибка?

Тема в разделе "WASM.NT.KERNEL", создана пользователем Pinkbyte, 7 фев 2007.

  1. Pinkbyte

    Pinkbyte Member

    Публикаций:
    0
    Регистрация:
    3 сен 2006
    Сообщения:
    106
    И снова вопрос про наболевшую(похоже, только для меня :), но тем не менее тему.
    Дано: выпуск журнала Phrack №59, где рассказывается про установку callgate через \Device\PhysicalЬMemory
    Номер c исходниками на C++. Закинув файлы kmem.h и chmod_mem.cpp в нужные папки, а также выдрав из XP DDK ntdll.lib(и проставив эту либу в настройках C-шного линкера) я с удивлением обнаружил, что компилироваться это все не хочет ибо:
    unresolved external ...NtOpenSection и unresolved external ...NtClose.
    После этого я пробыл в некоем ступоре, перепробовав разные версии DDK(2k,2003) и С++(Visual Studio 2003,2005,Borland).
    Ничего... Голый номер, те же ошибки. Ладно, решил переписать код на ассемблере. И сразу же уперся в проблему с той же NТеЩзутЫусешщт!!!
    Проинициализировав макросом значения структуры ObjectAttributes и запустив NtOpenSection вот так(как было сказано в номере журнала):
    invoke NtOpenSection,OFFSET Section,WRITE_DAC or READ_CONTROL,OFFSET
    Я увидел в отладчике милую ошибку 80000002h. Переведя ее с помощью программы StatusToError уважаемого Four-F получил:
    "Неверная попытка доступа к адресу памяти."

    Собственно на этом мои изыскания закончились. Я пытался использовать макрос InitializeObjectAttributes Four-F'а, но результат был абсолютно тем же. Пробовал получать Юникод-строку не через MultiByteToWideChar а через макрос CCOUNTEDUNICODESTRING из Strings.mac, пробовал менять параметры NtOpenSection(READ_CONTROL и т.п.).
    Ничего не помогло. Обращаюсь за помощью к форумчанам - может у кого есть идеи почему не работает NtOpenSection и в каком месте у меня кривые руки :).
    Прилагаю исходники программы на ассемблере а также 59-ый номер журнала Phrack, в котором есть исходники программы на C.

    P.S. Я пользуюсь MASM'ом и если здесь будут исходники на FASM или TASM, то не считайте за труд ответить на возможные вопросы, которые могут возникнуть у меня.
     
  2. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Вот тут есть исходник на С++ с вставками асма, полностью рабочий. Автор - sn0w. http://forum.antichat.ru/thread28545-sn0w.html
    Посмотри там все действия, которые у тебя не получаются.
    У меня этот код работает нормально
    скорее всего ты неправильно выставил тип вызова функции. Все апишки виндовые, в том числе и ядерные и ntdll'ные имеют тип вызова stdcall.
    Если компилер у тебя MS VC++ (cl.exe), то у него этим заведует параметр /Gz
     
  3. Pinkbyte

    Pinkbyte Member

    Публикаций:
    0
    Регистрация:
    3 сен 2006
    Сообщения:
    106
    Насчет stdcall там обьявлено

    NTSTATUS _declspec(dllimport) _stdcall NtOpenSection - вроде работать должно...
     
  4. Pinkbyte

    Pinkbyte Member

    Публикаций:
    0
    Регистрация:
    3 сен 2006
    Сообщения:
    106
    и кстати, нахрена там нужна инструкция ассемблера btr?

    да, и еще... вышеуказанный пример - это собственно int gate, а не call gate... хотя мне в принципе параллельно
     
  5. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Pinkbyte
    Я писал int gate на MASM и всё быстро заработало.
    Не знаю как помочь, если только свой исходник могу приаттачить, но что-то аттачи у меня перестали работать -(.
     
  6. Pinkbyte

    Pinkbyte Member

    Публикаций:
    0
    Регистрация:
    3 сен 2006
    Сообщения:
    106
    кидай, пригодится...
     
  7. Pinkbyte

    Pinkbyte Member

    Публикаций:
    0
    Регистрация:
    3 сен 2006
    Сообщения:
    106
    Нда... Все замечательно, только вышеуказанный пример умирает либо с синим экраном(раз 15 из 20) либо с ошибкой функции NtMapViewOfSection - что тоже не круто... Причем не важно где - на VirtualPC или на простой XP
     
  8. Cr4sh

    Cr4sh New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2006
    Сообщения:
    668
    http://cr4sh.0x48k.cc/r0.rar - вот рабочий пример... немного не в тему т.к. на срр, но вдруг пригодится...