Как вызвать функцию windows ипользуя прерывание?

Тема в разделе "WASM.WIN32", создана пользователем MaDF, 18 июн 2005.

  1. MaDF

    MaDF New Member

    Публикаций:
    0
    Регистрация:
    10 май 2005
    Сообщения:
    83
    Вобщем-то в названии темы все сказано... я просто нигде не встречал описалово прерываний, параметров и всего остального под Windows, но знал что такое есть под Linux. Где бы раздобыть такое описалово или что-то заменяющее? ;) А если поподробней - меня интересует тема перепонения буффера и исполнение произвольного кода.
     
  2. Ms Rem

    Ms Rem New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2005
    Сообщения:
    1.057
    Адрес:
    С планеты "Земля"
    http://ms-rem.narod.ru/hook/ApiHook3/files/sysservice.rar



    Возможно это то, что тебе надо. А как вызывать системные сервисы - утрудись почитать статейки, которые на васме есть. Также рекомендую почитать Руссиновича.
     
  3. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    Для вызова обычных апишных функций в windows никаких прерываний не нужно - это не линукс.
     
  4. rgo

    rgo New Member

    Публикаций:
    0
    Регистрация:
    21 мар 2005
    Сообщения:
    87
    Для вызова линуксовых API'шных функций прерываний тоже не нужно... Тока для syscall'ов типа read, write, open, close, lseek, fork etc
     
  5. MaDF

    MaDF New Member

    Публикаций:
    0
    Регистрация:
    10 май 2005
    Сообщения:
    83
    Ms Rem хз из того списка мало че понял... А все-таки как пишутся exploits под windows? Ну вот надо мне сделать шелл, для этого использовать send, recv, WSAStartup etc, как же ими воспользоваться?
     
  6. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    Прочитай поиск API. Есть тут на васме.
     
  7. MaDF

    MaDF New Member

    Публикаций:
    0
    Регистрация:
    10 май 2005
    Сообщения:
    83
    Угу... после поисков понял что нет %( только поиск адресов библиотек... ладно спасибо всем
     
  8. Broken Sword

    Broken Sword Robert

    Публикаций:
    0
    Регистрация:
    30 авг 2002
    Сообщения:
    433
    MaDF

    DOS - int 21h, Linux - int 80h, W2K - int 2Eh



    Остальные винды (влючая XP) не используют механизм int для повышения привилегий
     
  9. S_T_A_S_

    S_T_A_S_ New Member

    Публикаций:
    0
    Регистрация:
    27 окт 2003
    Сообщения:
    1.754
    XP тоже использует int 2E - вызывается KiSystemService.
     
  10. Broken Sword

    Broken Sword Robert

    Публикаций:
    0
    Регистрация:
    30 авг 2002
    Сообщения:
    433
    S_T_A_S_



    а вот и нет!

    там механизм SYSENTER, лично лазил и проверял
     
  11. S_T_A_S_

    S_T_A_S_ New Member

    Публикаций:
    0
    Регистрация:
    27 окт 2003
    Сообщения:
    1.754
    Broken Sword

    Набери в айсе команду IDT



    И вот фрагмент ntdll.dll
    Код (Text):
    1. ntdll.KiFastSystemCall      8BD4            mov     edx, esp
    2. 7C90EB8D                    0F34            sysenter
    3. 7C90EB8F                    90              nop
    4. 7C90EB90                    90              nop
    5. 7C90EB91                    90              nop
    6. 7C90EB92                    90              nop
    7. 7C90EB93                    90              nop
    8. ntdll.KiFastSystemCallRet>  C3              retn
    9. 7C90EB95                    8DA424 00000000 lea     esp, [esp]
    10. 7C90EB9C                    8D6424 00       lea     esp, [esp]
    11. 7C90EBA0                    90              nop
    12. 7C90EBA1                    90              nop
    13. 7C90EBA2                    90              nop
    14. 7C90EBA3                    90              nop
    15. 7C90EBA4                    90              nop
    16. ntdll.KiIntSystemCall       8D5424 08       lea     edx, [esp+8]
    17. 7C90EBA9                    [b]CD 2E           int     2E[/b]
    18. 7C90EBAB                    C3              retn
     
  12. Broken Sword

    Broken Sword Robert

    Публикаций:
    0
    Регистрация:
    30 авг 2002
    Сообщения:
    433
    вероятно, для совместимости... но не использует это точно :)



    посмотри на другие сист. вызовы из ntdll (обычне NtCreateFile и т.п.) - каким образом из них происходит вызов.
     
  13. S_T_A_S_

    S_T_A_S_ New Member

    Публикаций:
    0
    Регистрация:
    27 окт 2003
    Сообщения:
    1.754
    Тут смысл не в том, что использует сам XP (если проц не поддерживает sysenter, то будет использоваться int 2e). Просто если самому делать вместо sysenter int 2e, то это будет работать.
     
  14. Broken Sword

    Broken Sword Robert

    Публикаций:
    0
    Регистрация:
    30 авг 2002
    Сообщения:
    433
    S_T_A_S_

    не вижу предмета спора. На x86 XP всегда использует SYSENTER (кстати, это быстрее чем int).
     
  15. iamlamer

    iamlamer New Member

    Публикаций:
    0
    Регистрация:
    20 июн 2005
    Сообщения:
    273
    Адрес:
    Russia
    А можно я влезу в топик?



    Хочу прояснить для себя близкие к теме "исторические" вопросы.

    1. В interrupt list есть вот чего: "int 30 - MS win 3.1+ protected mode callback". Что бы это значило и относится ли это к Win95 ?

    2. Как же все таки в Win95 происходил официальный переход из 3 в 0?

    3. Какую роль играли в kernel32.dll от Win95 присутствовавшие там несколько штук int 20, которые, как известно, есть vxd/vmmcall ?
     
  16. S_T_A_S_

    S_T_A_S_ New Member

    Публикаций:
    0
    Регистрация:
    27 окт 2003
    Сообщения:
    1.754
    Broken Sword

    Тогда зачем же поддержка int 2e? XP можно установить (и это будет работать) на компы с процами не поддерживающими SYSENTER.
     
  17. diamond

    diamond New Member

    Публикаций:
    0
    Регистрация:
    21 май 2004
    Сообщения:
    507
    Адрес:
    Russia
    Broken Sword

    В XP Nt/Zw функции-переходники к ядру выглядят примерно так:
    Код (Text):
    1.  
    2. mov eax, <function-id>
    3. mov edx, 7FFE0300h
    4. call edx
    5. ret
    6.  


    При этом страница памяти по адресу 7FFE0000h - разделяется всеми приложениями и кодом ядра (там она, естественно, по другому адресу, какому - не помню); по адресу 7FFE0300h винда при загрузке в зависимости от типа процессора копирует либо KiFastSystemCall либо KiIntSystemCall. А int 2Eh будет работать в любом случае.

    MaDF

    Правда, вряд ли в твоем случае это стоит использовать. Во-первых, <function-id> для данной функции зависит от версии и даже билда системы, во-вторых, таким путем можно вызвать только NativeAPI, а send/recv/WSAStartup проделывают кучу работы в 3-кольце (сомневаешься - посмотри на размер kernel32/user32/gdi32/... - слишком много для заглушек, правда?)

    iamlamer

    По поводу перехода в 0-кольцо под Win9x - там сам переход осуществлялся через функцию из kernel32, экспортируемую через первые 9 ординалов (то есть ординалы 1-9 указывали на одну и ту же функцию), которая делала, кажется, следующее
    Код (Text):
    1.  
    2. mov eax,[esp+arg_0]
    3. pop dword ptr [esp]
    4. jmp fword ptr xxx
    5.  


    где xxx - far-адрес (16-бит селектор:32-бит смещение), а селектор указывал на кучу инструкций int 30h.
     
  18. Broken Sword

    Broken Sword Robert

    Публикаций:
    0
    Регистрация:
    30 авг 2002
    Сообщения:
    433
    SYSENTER появился со вторых пней, на более ранние (как и на альфы :) XP ставить никто не будет, тем более что на вторых и int 2Eh работать не будет), поэтому незнаю чего вы с такой настойчивостью пытаетесь разрекламировать этот int 2E
     
  19. MaDF

    MaDF New Member

    Публикаций:
    0
    Регистрация:
    10 май 2005
    Сообщения:
    83
    %) Если винды используют int 2Eh, ДолЖнО же бЫть описание функций?? Хотя бы неофициальное...
     
  20. MaDF

    MaDF New Member

    Публикаций:
    0
    Регистрация:
    10 май 2005
    Сообщения:
    83
    ЭЭх топ закрыт