защита DRx регистры

Тема в разделе "WASM.WIN32", создана пользователем Hellspawn, 5 янв 2007.

  1. Hellspawn

    Hellspawn New Member

    Публикаций:
    0
    Регистрация:
    4 фев 2006
    Сообщения:
    310
    Адрес:
    Москва
    значид так, перехватываю KiUserExceptionDispatcher (с целью сохранить оригинальные регистры и занулить их после этого, а потом уже в ZwContinue вернуть всё обратно):

    Код (Text):
    1. 0013001E    60                 PUSHAD
    2. 0013001F    83C1 04            ADD ECX,4 // ECX - контекст
    3. 00130022    8BF1               MOV ESI,ECX
    4. 00130024    8BD1               MOV EDX,ECX
    5. 00130026    BF 00001300        MOV EDI,130000 // тут сохраняем
    6. 0013002B    B9 18000000        MOV ECX,18 // 18h байтов
    7. 00130030    FC                 CLD
    8. 00130031    F3:A4              REP MOVS BYTE PTR ES:[EDI],BYTE PTR DS:[ESI]
    9. 00130033    B9 06000000        MOV ECX,6
    10. 00130038    C702 00000000      MOV DWORD PTR DS:[EDX],0 // зануляем
    11. 0013003E    83C2 04            ADD EDX,4
    12. 00130041  ^ E2 F5              LOOPD SHORT 00130038
    13. 00130043    61                 POPAD
    14. 00130044    E8 69CBE777        CALL ntdll.77FACBB2 // затёртый код
    15. 00130049  - E9 781BE677        JMP ntdll.77F91BC6 // обратно
    дык вот, на простых прогах для теста прокатываед, а вот на протах,
    проги валяться в беск. цикл с аксессами =( что я не так сделал?
     
  2. tar4

    tar4 New Member

    Публикаций:
    0
    Регистрация:
    28 сен 2006
    Сообщения:
    43
    Я так понимаю, что на проте у тебя сложности с тестированием этого участка кода? Когда я отлаживал dll-ку с этой функцией, внедряемую в запакованную прогу, я специально, для удобства отладки, добавлял команду cli перед исследуемым кодом. Потом запускал ехешник и прога вываливалась в отладчике на этой команде
    cli. Менял ее на nop и далее уже трассировал нужный мне код (хотя есть наверное и другие варианты). Или я не верно понял твой вопрос? А так по коду - сложно что сказать.
     
  3. Hellspawn

    Hellspawn New Member

    Публикаций:
    0
    Регистрация:
    4 фев 2006
    Сообщения:
    310
    Адрес:
    Москва
    хех, вроде разобрался... я всё делаю правильно, но Obsidium что-то делает с этими ДРх и
    когда я их обнуляю, он валиться. Мля, надо думать...
     
  4. tar4

    tar4 New Member

    Публикаций:
    0
    Регистрация:
    28 сен 2006
    Сообщения:
    43
    Во-во, я так и думал, что прот виноват (ты ведь не написал, какой используешь). Так может их вообще не использовать, если прот их отслеживает? Ведь они нужны тебе для остановки на определенных адресах. Вместо бряка создай в этом адресе искусственно исключительную ситуация, а затем ее сам обрабатывай через функцию KiUserExceptionDispatcher.
     
  5. Hellspawn

    Hellspawn New Member

    Публикаций:
    0
    Регистрация:
    4 фев 2006
    Сообщения:
    310
    Адрес:
    Москва
    я реализовал как хотел... ASPr, Obsidium, ExeCryptor молчат и позволяюд ставить
    "железные" бряки... =)

    как вариант можно юзать и твой способ...
     
  6. tar4

    tar4 New Member

    Публикаций:
    0
    Регистрация:
    28 сен 2006
    Сообщения:
    43
    Где-то я читал, что какой-то протектор уже юзает "железные бряки". Наверное, недалеко то время, когда и остальные придут к этому же решению.