Сейчас на форуме: zombi-vadim, zds (+4 невидимых) |
eXeL@B —› Программирование —› TSC. |
Посл.ответ | Сообщение |
|
Создано: 24 октября 2013 13:45 · Поправил: Dr0p · Личное сообщение · #1 Нужно мониторить Rdtsc. При выполнении в юзермоде. Причём под дпортом(KDR не вызывается в этом случае). Больше в ядре ничего нельзя изменять в кодосекциях и IDT. Можно запрещать tsc, но сделать это нужно локально для процесса(тоесть чтобы фолт обрабатывать в VEH), а не глобально во всей системе. По дефолту на сколько помню некоторые системные процессы непрерывно юзают тск(svchost ?). Как такое провернуть ? |
|
Создано: 24 октября 2013 16:22 · Личное сообщение · #2 |
|
Создано: 24 октября 2013 19:42 · Личное сообщение · #3 Что мешает: Взять оригинальный фантом и Со стороны плагина Фантом. В буфере IOCTL есть DeltaRDTSC по смещению 4. Добавить по смещению 8 pid отлаживаемого процесса. Со стороны драйвера. В обработчике фолта добавить проверку пида. Если пид не тот, возвращаем действительные edx:eax ? Мы можем узнать, в каком процессе произошёл фолт? ----- IZ.RU |
|
Создано: 25 октября 2013 02:17 · Личное сообщение · #4 |
|
Создано: 25 октября 2013 02:21 · Личное сообщение · #5 |
|
Создано: 27 октября 2013 21:25 · Личное сообщение · #6 |
|
Создано: 05 ноября 2013 12:37 · Личное сообщение · #7 rdtsc юзает на w7 шедулер. Это значит, что после формирования трап фрейма и размаскировки прерываний поток свопнется и возникнет фолт в самом шедулере, рекурсивно. Значит низя прерывания разрешать. Ну ладно. Ставим свою ловушку. Но нужно обратиться к памяти для проверки инструкции, а в ловушке высочайший иркл и !IF, тоесть подкачка не робит, а память отгружаема, особенно юзермодная. Единственный вариант ещё поставить ловушек на #PF etc и откатывать фолты. Но это какой то изврат. Я не сморел как от той говнотулзы дров робит, но скорее всего синька будет через раз возникать. |
|
Создано: 05 ноября 2013 12:45 · Личное сообщение · #8 Dr0p пишет: после формирования трап фрейма и размаскировки прерываний поток свопнется и возникнет фолт в самом шедулере, рекурсивно. Теперь понятно. Ранее не проводил таких исследований. Будет время или встанет связанная задача, подумаю. Dr0p пишет: Я не сморел как от той говнотулзы дров робит, но скорее всего синька будет через раз возникать был бсод, что-то там связано с некорректным аттачем при закрытии отладки. То есть пользоваться можно, но крайне осторожно. ----- IZ.RU |
|
Создано: 05 ноября 2013 12:50 · Поправил: Dr0p · Личное сообщение · #9 |
|
Создано: 05 ноября 2013 13:29 · Поправил: DenCoder · Личное сообщение · #10 Dr0p пишет: Где слить дров ? аттач дров в ресурсах фантома, извлекается в ...\local settings\Temp\ 1358_05.11.2013_EXELAB.rU.tgz - rdtsc.sys ----- IZ.RU |
|
Создано: 05 ноября 2013 14:39 · Личное сообщение · #11 DenCoder Спасибо, заценил: Code:
Бсодогенератор На границе страницы генерим #GP и всё должно слететь. Да и префиксы необходимо считать. Также есно что не обязательно база сегмента нулевая.. |
|
Создано: 05 ноября 2013 16:08 · Личное сообщение · #12 |
|
Создано: 05 ноября 2013 18:06 · Поправил: Dr0p · Личное сообщение · #13 |
|
Создано: 05 ноября 2013 18:21 · Личное сообщение · #14 |
|
Создано: 06 ноября 2013 01:03 · Личное сообщение · #15 |
|
Создано: 06 ноября 2013 09:35 · Личное сообщение · #16 |
|
Создано: 06 ноября 2013 12:14 · Поправил: Dr0p · Личное сообщение · #17 Archer try db F0 0F 31 except Вот и детект. "#UD If the LOCK prefix is used". Обработка должна быть такой: Code:
Code:
Code:
|
|
Создано: 06 ноября 2013 12:34 · Личное сообщение · #18 В аттаче модифицированный(добавлена обработка тск) сиде мотор. PEB TEB RESULT 0 X Handled 1 0 #PRIV_INSTR, Filter() 1 1 Handled Initialize prto NtImageBase:PVOID, Flags:DWORD PEB_DBG_FLAG equ X86_PAGE_SIZE - 4 TEB_DBG_FLAG equ X86_PAGE_SIZE - 4 FLG_T0 000001B Сервисы ядра. FLG_T10 000010B Сервисы ядра для GUI. FLG_T11 000100B Сервисы шадова. FLG_STPT 001000B STPT KDR. FLG_TF 010000B FSTATEX(сброс TF). Не юзать в данном билде! FLG_TSC 100000B Монитор TSC. FSTATE struct Ip PVOID ? Args PVOID ? FSTATE ends Filter: mov edx,0BADC0DEH Int 2EH 3b6b_06.11.2013_EXELAB.rU.tgz - SIDE.obj |
|
Создано: 09 ноября 2013 00:20 · Поправил: Dr0p · Личное сообщение · #19 |
|
Создано: 15 ноября 2013 00:17 · Личное сообщение · #20 Доделал патч. Задаётся лимит числа инструкций(rdtsc), по достижению лимита инструцкия в памяти модифицируется и далее уже нет тормозных фолтов. Единственный минут - ограничение на число инструкций(52) и память в нулях становится читаемой. f9cd_15.11.2013_EXELAB.rU.tgz - Dll.zip | Сообщение посчитали полезным: ajax |
|
Создано: 15 ноября 2013 00:18 · Поправил: Dr0p · Личное сообщение · #21 |
eXeL@B —› Программирование —› TSC. |