![]() |
eXeL@B —› Программирование —› Способы установки hardware breakpoints |
Посл.ответ | Сообщение |
![]() Ранг: 419.0 (мудрец), 647thx Активность: 0.46↗0.51 Статус: Участник "Тибериумный реверсинг" |
Создано: 22 декабря 2012 09:47 · Личное сообщение · #1 |
|
Создано: 22 декабря 2012 09:59 · Личное сообщение · #2 |
![]() Ранг: 419.0 (мудрец), 647thx Активность: 0.46↗0.51 Статус: Участник "Тибериумный реверсинг" |
Создано: 22 декабря 2012 10:15 · Личное сообщение · #3 |
![]() Ранг: 419.0 (мудрец), 647thx Активность: 0.46↗0.51 Статус: Участник "Тибериумный реверсинг" |
Создано: 26 февраля 2013 18:05 · Личное сообщение · #4 Для тех кто не знал, пишу способ установки/проверки Hadware Breakpoints (организованный в Sony DADC SecuROM 7-8). Ловкость рук и никакого мошенничества: 1. Берется инструкция UD2(XOR EAX, EAX; MOV [EAX], EAX ... десятки вариантов), под нее ставится SEH-хэндер. Исключение срабатывает. 2. Управление передалось куда-то в ядро, потом возвращается в ntdll.KiUserExceptionDispatcher (PEXCEPTION_RECORD pExcptRec, CONTEXT * pContext ). 3. ntdll.KiUserExceptionDispatcher передает бразды SEH-обработчику секурома. Тот в курсе, что недалеко в стеке лежит указатель на структуру CONTEXT. 4. Недолго думая, секуром вытаскивает/проверяет/запихивает свои (в VM) 4 отладочных регистра и делает RET из обработчика. 5. Катаемся по ntdll пока не попадаем в ZwContinue, который ничего не подозревая, заряжает измененный CONTEXT. 6. Управление передается на следующую, от UD2, инструкцию. ... 7. Это можно обломать и пользоваться Hadware Breakpoints в свое удовольствие ![]() ![]() |
|
Создано: 26 февраля 2013 19:37 · Личное сообщение · #5 ELF_7719116 Я вас понимаю, иногда так приятно разработать свой ![]() ----- Stuck to the plan, always think that we would stand up, never ran. ![]() |
![]() |
eXeL@B —› Программирование —› Способы установки hardware breakpoints |