не могу получить доступ к сис. прерываниям

Тема в разделе "WASM.BEGINNERS", создана пользователем skyman1221, 9 янв 2012.

  1. skyman1221

    skyman1221 New Member

    Публикаций:
    0
    Регистрация:
    29 дек 2011
    Сообщения:
    24
    Доброго времени суток.

    Задача написать кликер но не обыкновенный
    а чтоб пахал в онлайн игрушках.

    дело в том что как только стартует игра некоторые системные прерывания просто отрубаются

    такой вариант как вы понимаете работает только без игры
    Код (Text):
    1. invoke mouse_event, MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0
    поковырявшись с олли я выковырял из винды и собрал функцию нажимающую на клавишу

    Код (Text):
    1. my_mouse_event proc
    2. MOV EDI,EDI            
    3. PUSH EBP
    4. MOV EBP,ESP
    5. SUB ESP,28
    6. MOV EAX,DWORD PTR SS:[EBP+8]
    7. AND DWORD PTR SS:[EBP-28],0
    8. AND DWORD PTR SS:[EBP-8],0
    9. MOV DWORD PTR SS:[EBP-12],EAX
    10. MOV EAX,DWORD PTR SS:[EBP+12]
    11. MOV DWORD PTR SS:[EBP-24],EAX
    12. MOV EAX,DWORD PTR SS:[EBP+16]
    13. MOV DWORD PTR SS:[EBP-20],EAX
    14. MOV EAX,DWORD PTR SS:[EBP+20]
    15. MOV DWORD PTR SS:[EBP-16],EAX
    16. MOV EAX,DWORD PTR SS:[EBP+24]
    17. MOV DWORD PTR SS:[EBP-4],EAX
    18. PUSH 28
    19. LEA EAX,DWORD PTR SS:[EBP-28]
    20. PUSH EAX
    21. PUSH 1
    22. MOV EAX,11F6h
    23. ;MOV EDX,7FFE0300h
    24. MOV EDX,ESP
    25. Int 2eh
    26. LEAVE
    27. RET 20
    28. my_mouse_event endp
    без игры работает прекрасно но стоит загрузить игрушку вырубается и не врубается пока игра в памяти

    я не понимаю как так можно взять и отрубить Int 2eh ?
    подскажите как можно еще решить проблему?

    есть конечно вариант припаять к ком порту мышь
    и посылать клики через ком как я делал раньше но согласитесь это кривое решение
     
  2. Malfoy

    Malfoy New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2012
    Сообщения:
    698
    skyman1221
    Защиту какую то используют. Просканте ось рку или есчо чем, что бы найти где фильтр стоит.
     
  3. skyman1221

    skyman1221 New Member

    Публикаций:
    0
    Регистрация:
    29 дек 2011
    Сообщения:
    24
    Malfoy я ж только учусь =) 2 неделю только на ассемблере пишу а вы мне говорите "ось рку"
    ну "ось" эт я еще догоняю что это винда но "рку" ?! что есть "рку" и чем его сканировать?
     
  4. skyman1221

    skyman1221 New Member

    Публикаций:
    0
    Регистрация:
    29 дек 2011
    Сообщения:
    24
    во догнал что естьм РКУ - Rootkit Unhooker
     
  5. skyman1221

    skyman1221 New Member

    Публикаций:
    0
    Регистрация:
    29 дек 2011
    Сообщения:
    24
    короче нашел в Shadow SSDT (знать бы что это)
    хак NtUserSendInput и сразу понял - вот оно!
    вырубил и кликер запахал
    и все бы ничего но я же хочу научиться эту гадость из кода вырубать =)
     
  6. Ezrah

    Ezrah Member

    Публикаций:
    0
    Регистрация:
    22 мар 2011
    Сообщения:
    411
    skyman1221
    Самый простой путь для вас это написать скрипт на каком нибудь AutoIt чтобы он запускал RKU и нажимал в нём кнопочки.
    и не хак а хук)
     
  7. skyman1221

    skyman1221 New Member

    Публикаций:
    0
    Регистрация:
    29 дек 2011
    Сообщения:
    24
    не ну я все ж не такой тупой чтоб так делать =))
    вот есть функция UnhookWindowsHookEx я глянул в списке Shadow SSDT ид хука NtUserSendInput

    написал
    Код (Text):
    1.     mov eax, 502
    2.     invoke UnhookWindowsHookEx, eax
    где 502 - id

    и... и ничего =( хук не вырубился... сижу тоскую ...
    как его отрубить та..?

    надо как то получить дескриптор хука этого
    а у меня есть только его адрес и ид какой то бесполезный..
     
  8. K10

    K10 New Member

    Публикаций:
    0
    Регистрация:
    3 окт 2008
    Сообщения:
    1.590
    skyman1221
    нене, эта функция тут не причем. Придется писать драйвер, находить Shadow SSDT и снимать там хук.
     
  9. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    skyman1221
    Заранее прошу прощения, но это две довольно противоречивые цитаты.
     
  10. skyman1221

    skyman1221 New Member

    Публикаций:
    0
    Регистрация:
    29 дек 2011
    Сообщения:
    24
    ну не знать не стыдно
    стыдно не хотеть учиться

    и поэтому я прошу вас посоветуйте что почитать чтоб научится отрубать Shadow SSDT хуки

    я полистал интернет там все пишут о обычных хуках которые можно снять UnhookWindowsHookEx
    как написать драйвер чтоб получить список Shadow SSDT и отрубить тот хук который надо?

    просто дайте плиз ссылку где пишут об этом а дальше я сам =)
     
  11. steelfactor

    steelfactor New Member

    Публикаций:
    0
    Регистрация:
    26 апр 2007
    Сообщения:
    501
    skyman1221
    Есть стандартный механизм хуков в Win, частью которого является UnhookWindowsHookEx, но она тебе не нужна, писали уже.
    Как правило, функции в ring3/ring0 перехватываются при помощи сплайса или функции, которая выполняет роль "прокси"-обертки. Механизм снятия хуков в ring3/ring0 примерно одинаков, но для снятия хука в ядре (а NtUserSendInput - это ядерная функция) нужно писать драйвер.
    Ищи на форуме что-то типа "restore Shadow SSDT"
     
  12. skyman1221

    skyman1221 New Member

    Публикаций:
    0
    Регистрация:
    29 дек 2011
    Сообщения:
    24
    стандартные да вот не совсем...
    оказывается к ring0 можно не только драйвером подрубиться но и через "калгейт"
    http://forum.antichat.ru/showthread.php?t=28545

    по позывным "restore Shadow SSDT" не форум не гугл ничего вразумительного не выдает

    эх.. чеж делать..
    ладно до калгейта мне еще далеко
    попробую поискать мануалы по писанию драйверов на masm а там можи пойму как доступ к ring0 получить
     
  13. XshStasX

    XshStasX New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2008
    Сообщения:
    991
    skyman1221
    Это закрыли еще в хп сп3 кажется.

    Shadow SSDT UnHook/Shadow SSDT ?
     
  14. K10

    K10 New Member

    Публикаций:
    0
    Регистрация:
    3 окт 2008
    Сообщения:
    1.590
    skyman1221
    В SSDT и Shadow SSDT функции перехватываются заменой адреса оригинального обработчика на адрес перехватчика.
    Это таблица адресов обрабочиков, которым передается управление при вызове сервисов. Соответственно драйвер меняет адрес в данном случае обработчика вызова NtUserSendInput на свой. Задача поменять его обратно на оригинальный.
    Можно попробовать обходные какие то пути, например запустить эту игру (или что там) с ограниченными правами, чтобы она не смогла загрузить свой драйвер. Или если она его заранее ставит, отключить его. М.б перехватить в ней функцию загрузки драйвера и т.п.
     
  15. Malfoy

    Malfoy New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2012
    Сообщения:
    698
    skyman1221
    Шлюзы вызова в нт не робят.

    XshStasX
    Такой прямой бред слышу впервые :)
     
  16. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    Malfoy
    А если бы читали, о чём пишут, то сразу бы разобрались, кто бред несёт. Шлюз устанавливается доступом к PhysicalMemory. И прикрыли это начиная с 2k3 SP1.
     
  17. Malfoy

    Malfoy New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2012
    Сообщения:
    698
    l_inc
    Колгейт это бекдор. Он устанавливается как угодно, доступом к GDT. Если вы читали маны, то должны это знать. Также и то, что при вызове колгейта не сбрасывается IF и TF, из за чего он не может использоваться.
     
  18. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    Malfoy
    Ну для начала, там шлюз прерывания устанавливается. А доступ к PhysicalMemory да ещё и на запись — это тоже потенциальный "бекдор".
     
  19. Malfoy

    Malfoy New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2012
    Сообщения:
    698
    l_inc
    Какие прерывания, какая физиклмемори, о чём вы говорите. Колгейт на NT не может использоваться. Оминь.
     
  20. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    Malfoy
    Я бы посоветовал внимательнее читать, что пишут, а не закрывать глаза и уши и гнуть свою линию. Но для неспособных читать, мы не гордые, можем и повторить: в теме речь идёт об установке шлюза прерывания, ведущего в текущий код, посредством записи в секцию \Device\PhysicalMemory, после чего этот самый шлюз и вызывается. То, что Вы повелись на опечатку и себе там шлюз вызова навоображали, — это уже Ваши проблемы.