Сейчас на форуме: laslo, UniSoft, bartolomeo (+5 невидимых) |
eXeL@B —› Программирование —› Обработка memory (и не только) break'ов с помощью VEH |
<< . 1 . 2 . 3 . >> |
Посл.ответ | Сообщение |
|
Создано: 15 ноября 2011 21:43 · Поправил: GoldenJoe · Личное сообщение · #1 Как я себе это представляю: 1. Прога ставит бряки и внедряет либу в процесс-жертву 2. Либа устанавливает VEH 3. Когда возникает исключение, прога должна каким-то образом получить от внедренной DLL-ки EXCEPTION_RECORD с кодом исключения и прочей инфой. Прога должна проверить, а наш ли это бряк (а, может, совсем даже не бряк ) и неведомым образом сообщить внедренной либе, что делать дальше (CONTINUE_SEARCH или CONTINUE_EXECUTION вернуть, например). По первым двум пунктам вопросов нет. С 3 пунктом посложнее. Есть именованный FileMapping да event-ы, есть сокеты. А КРАСИВЫХ решений, я так понимаю, нет? |
|
Создано: 19 ноября 2011 12:02 · Личное сообщение · #2 bowrouco пишет: Гдеже ответ то ? Так я в бане был. Да и вообще с тобой общаться неприятно, как до конкретики доходит ты дурака включаешь и сливаешься. bowrouco пишет: Ну например при вызове сискола с TF возникает задержка, гдето в полтора раза медленее. Это только в твоих гавнотехнологиях подходит, в коммерческой (да есть такое слово) защите нельзя использовать шаманство с замерами, если они только не составляют несколько секунд, да и то... bowrouco пишет: Или например баг приводящий к дедлоку(генерация любого исключения, кроме #DB с TF) позволяет определить TF. На старых виндах и под некоторыми VM это не так, поэтому так же относится к разряду твоих гавнотехнологий. bowrouco пишет: Вот есчо пример - ... Дальше пошло нереализуемое в юзермоде гавно. ----- Yann Tiersen best and do not fuck |
|
Создано: 19 ноября 2011 12:18 · Личное сообщение · #3 PE_Kill > На старых виндах и под некоторыми VM это не так, поэтому так же относится к разряду твоих гавнотехнологий. Это никак с VM не сязано. Сие во всей линейке NT, это вызывает некоторые проблемы часто. > Дальше пошло нереализуемое в юзермоде гавно. 100% рабочий код: Code:
Не зависящий вообще от оси. Результат работы будет один и тотже что в линусе, что в нт. Вы не можите ничего на это ответить, единственный ваш аргумент - говно ибо придумал инде. |
|
Создано: 19 ноября 2011 12:56 · Личное сообщение · #4 |
|
Создано: 19 ноября 2011 13:17 · Поправил: bowrouco · Личное сообщение · #5 |
|
Создано: 19 ноября 2011 13:51 · Поправил: 0x90h · Личное сообщение · #6 На правах оффтопа чайника: bowrouco Это определение LDT? vbox, аппаратная виртуализация intel (по дефолту), не работает. vmware 7, аналогично, но с шаманством. а 100% метод определить ВМ есть? PE_Kill Если все это происходит от tf в обработчике сепшина, не проще-ли сразу манипулировать/эмулировать контекстом выполнение "нежелательных" инструкций? |
|
Создано: 19 ноября 2011 14:07 · Поправил: bowrouco · Личное сообщение · #7 0x90h > Это определение LDT? Нет, причём виртуализация к трейсу. Код выше основан на особенности камня, исполняя iret или retf при смене кпл камень обнуляет рпл поле для нудевых селекторов за ненадобностью. А трейс сопровождается генерацией трапа и возвратом из ядра через iret со сменой кпл. > Если все это происходит от tf в обработчике сепшина, не проще-ли сразу манипулировать/эмулировать контекстом выполнение "нежелательных" инструкций? Это вас запутает. Увидев этот код: Code:
Вы сразу и не поймёте что он делает и как сие обойти. А так да, можно конечно потыкать напрямую контексты. Кстате можно использовать пятиэтажный вызов теневых колбеков, в этом случае из юзермода невозможно будет трейсить код - контекстом манипулирует ядро и он не доступен из юзермода. Но реализация немного сложнее. |
|
Создано: 19 ноября 2011 14:48 · Личное сообщение · #8 Блин Клерк, я как будто с глухим разговариваю. Ты писал, что bowrouco пишет: Или например баг приводящий к дедлоку(генерация любого исключения, кроме #DB с TF) позволяет определить TF. На что я ответил: PE_Kill пишет: Это только в твоих гавнотехнологиях подходит, в коммерческой (да есть такое слово) защите нельзя использовать шаманство с замерами, если они только не составляют несколько секунд, да и то... На что ты отписал и запостил код: bowrouco пишет: Это никак с VM не сязано. Сие во всей линейке NT, это вызывает некоторые проблемы часто. Я утверждаю, что пример с дидлоками на разных виндах и ВМ работает по разному, если ты так уверен в своей правоте можем заключить пари, скажем на 1к бачинских. bowrouco пишет: Поясните, не понятно. куда перейти и причём сегмент стека ? Для ламерофф поясняю, манипуляции с ss типа pop ss невозможно трассировать через трап, нужно использовать брейкпоинты. bowrouco пишет: Это вас запутает. Увидев этот код: Это никого не запутает, т.к. все убедились, что ты генеришь только гавнокод, сталобыть разбираться в нем нет смысла. 0x90h пишет: а 100% метод определить ВМ есть? У меня есть, определяет любую ВМ типа VmWare, VBox, etc, но не бесплатно. 0x90h пишет: Если все это происходит от tf в обработчике сепшина, не проще-ли сразу манипулировать/эмулировать контекстом выполнение "нежелательных" инструкций? Так можно и проще, это я для гавно-клерка отвечал. ----- Yann Tiersen best and do not fuck |
|
Создано: 19 ноября 2011 15:08 · Личное сообщение · #9 PE_Kill > Я утверждаю, что пример с дидлоками на разных виндах и ВМ работает по разному Это не зависит от вм. Если она нормально обрабатывает трапы, тоесть при срабатывании ловушки корректно сохраняет флажки в стеке. У вари с этим нет проблем. Кстати изза хитроумной её реализации и код выше(с селекторами) на ней хорошо исполняется. Про пари с вами бессмысленно спорить - всегда найдётся какаянибудь кривая вм. > разбираться в нем нет смысла. Это не ответ. За всех не отвечайте, хотя бы только за себя. А гавном кидать в меня бессмысленно. Кстате если про шадов сказать, то весь ваш опыт окажется не достаточным для понимания как такой детект исполняется, ибо шадов это довольно сложный механизм, по большей части ядерный. > У меня есть, определяет любую ВМ типа VmWare, VBox, etc, но не бесплатно. Взять порт(железо) прочитать какойнибудь или мср заюзать. Спасибо, можно не благодарить > гавно-клерка Обоснуйте почему это так. Полностью рабочий код. Для закрытия бага, если вы это не юзали и чтото в юзермоде трейсили, то получается это ваш код говно, ибо он повесит поток при возникновении любого фолта. > манипуляции с ss типа pop ss невозможно трассировать через трап, нужно использовать брейкпоинты. Это хорошо что вы вкурсе про загрузку ss, в манах это писано чёрным по белому. Вот только отношения это не имеет к #3. |
|
Создано: 19 ноября 2011 15:31 · Личное сообщение · #10 bowrouco пишет: Про пари с вами бессмысленно спорить - всегда найдётся какаянибудь кривая вм. Ну ясно снова соскок. Хех, тут ничего не поделаешь, как обычно. bowrouco пишет: Взять порт(железо) прочитать какойнибудь или мср заюзать. Спасибо, можно не благодарить Бред, какой порт, какой мср? Типа все ВМ дают прочитать какой то порт? Проспись. У меня есть десяток строк на масме, которые детектят ЛЮБУЮ вм, причем не по всяким там ненормальным адресам, офсетам, сигнатурам, портам,... и не привязан к какой либо ВМ. bowrouco пишет: Полностью рабочий код. На моей Win7 x64 не работает, система не дает освободить память образа. Т.е. это даже не хардкод, это система безопасности, поэтому сказать - ПОЛНОСТЬЮ рабочий код, признать себя ламером. bowrouco пишет: Это хорошо что вы вкурсе про загрузку ss, в манах это писано чёрным по белому. Только вот ты почему то не в курсе, раз спрашивал у меня. Эх илита, таже выкрутиться не смог. ----- Yann Tiersen best and do not fuck |
|
Создано: 19 ноября 2011 16:08 · Личное сообщение · #11 |
|
Создано: 19 ноября 2011 16:13 · Поправил: bowrouco · Личное сообщение · #12 PE_Kill > Бред, какой порт, какой мср? Да любой подходящий. Ну CMOS например я не знаю, это нужно выбрать подходящий. Варя элементарно так детектится, даже через мср, прочие вм я не юзаю. > У меня есть десяток строк на масме, которые детектят ЛЮБУЮ вм Я не отрицаю, возможно. > На моей Win7 x64 не работает Вы не в той архитектуре запускается, на вайне оно тоже наверно не будет работать. Для начала это 32-х битный код, вы же знаете, зачем претворяться дураком. > Только вот ты почему то не в курсе, раз спрашивал у меня. Я не спрашивал, привёл в пример код, а вы на него какойто бред ответили про Ss и Int3. |
|
Создано: 19 ноября 2011 16:29 · Личное сообщение · #13 bowrouco пишет: Вы не в той архитектуре запускается, на вайне оно тоже наверно не будет работать. Для начала это 32-х битный код, вы же знаете, зачем претворяться дураком. Такое понятие как вот это код только для х86, а это для х64 не должно вообще быть. Грамотно написанный код не требует допилов при компиляции под другую архитектуру как в данном случае х64. В моем случае я просто переключу профиль в студии на х64 и получу готовый, рабочий х64 бинарник. А тебе придется все переписывать заново. Где профит? Это какая-то садомаза для людей с кучей свободного времени. |
|
Создано: 19 ноября 2011 16:31 · Поправил: bowrouco · Личное сообщение · #14 Alchemistry > А тебе придется все переписывать заново. Да, мне придётся переписывать на 64, это же не скрипт, а асм. У меня куча свободного времени, почти всё время я свободный. И пишу на асме потомучто мне это нравится, а не для того чтобы сделать какойто портабельный продукт и далее его продавать. Если нужно будет такое, я заюзаю скрипт. |
|
Создано: 19 ноября 2011 17:04 · Поправил: PE_Kill · Личное сообщение · #15 bowrouco пишет: Да любой подходящий. Ну CMOS например я не знаю, это нужно выбрать подходящий. Варя элементарно так детектится, даже через мср, прочие вм я не юзаю. Ну-ну, давай очень интересно, как ты считаешь в ринг3 через мср и 100% скажешь что это ВМ, не VmWare, а именно любая ВМ. Не шаришь не пиши. bowrouco пишет: Вы не в той архитектуре запускается, на вайне оно тоже наверно не будет работать. Для начала это 32-х битный код, вы же знаете, зачем претворяться дураком. Илита должна знать, что x32 запускается на x64 в режиме эмуляции и все x32 программы работают в этом режиме, кроме твоих поделок, так что дураком здесь прикидываешься ты, как и всегда впрочем. Ну а если уж прям для натив x32 исключительно хардкод, то на win2000 тоже не запускается, хотя это самый что ни на есть натив x32, давай говори, что win2k гавно, илита ее не юзает. bowrouco пишет: Я не спрашивал, привёл в пример код, а вы на него какойто бред ответили про Ss и Int3. PE_Kill пишет: В примере достаточно временно перейти на int3, что всё равно нужно делать для ss сегмента и pushfd/popfd инструкций. bowrouco пишет: Поясните, не понятно. куда перейти и причём сегмент стека ? Когда говорят про трап и ss других ассоциаций просто быть не может, не надо прикидываться дураком. ----- Yann Tiersen best and do not fuck |
|
Создано: 19 ноября 2011 17:11 · Личное сообщение · #16 PE_Kill В юзермоде нет прав для I/O, это только в младших версиях доступно. Я имел ввиду из под ядра. Универсального способа обнаружить любую вм я не знаю, есть некоторые основанные на багах. Хорошо что вы знаете, что есчо не факт, хотя мне както всёравно. > win2000 тоже не запускается Там вроде должны быть апи в импорте, ExitProcess() вроде как. Я его никогда в семплы не вставляю, хотя знаю что нужно. > что x32 запускается на x64 в режиме эмуляции Стоит заметить что в режиме кривой эмуляции. Выше я уже писал. > Когда говорят про трап и ss других ассоциаций просто быть не может, не надо прикидывать дураком. Вы ответили это про код со сбросом RPL: > И где здесь генерация исключения? В примере достаточно временно перейти на int3.. Тоесть каким оно боком относится не понятно. Да и смысл фразы я так и не понял. |
|
Создано: 19 ноября 2011 17:26 · Личное сообщение · #17 bowrouco пишет: Там вроде должны быть апи в импорте, ExitProcess() вроде как. Ну илите то не знать, что экспортируемого VEH в win2k нет, причем тут импорт. Да еще и ExitProcess- это вообще жесть. bowrouco пишет: Стоит заметить что в режиме кривой эмуляции. Выше я уже писал. Только почему то кривая эмуляция отрабатывает для всех приложений кроме ваших, ну да если ваше не эмулится то эмуль кривой, надо было догадаться. bowrouco пишет: Тоесть каким оно боком относится не понятно. Да и смысл фразы я так и не понял. Ну тут попрактиковаться нужно, одной теории тут недостаточно. ----- Yann Tiersen best and do not fuck |
|
Создано: 19 ноября 2011 17:33 · Поправил: bowrouco · Личное сообщение · #18 PE_Kill Про VEH я знаю, забыл правдо. Шим например в XP делает выбор - определяет версию и если она младшая, то ставит UEF вместо VEH. Я это никогда не использую, ибо нет смысла. Некоторые пишут код рабочим даже на 98. > ExitProcess- это вообще жесть. В одной из младших версия приложение не запускалось, если в импорте небыло этой апи. > Ну тут попрактиковаться нужно, одной теории тут недостаточно. Можно писать всё подряд, как это инфы делают. Теория теорией, но всёже обьясните, интересно. |
|
Создано: 19 ноября 2011 17:40 · Личное сообщение · #19 |
|
Создано: 19 ноября 2011 17:43 · Личное сообщение · #20 |
|
Создано: 19 ноября 2011 17:49 · Личное сообщение · #21 bowrouco пишет: Бред потому что код выше ss не перезагружает, вот и всё. Ну так там ss и нет, или ты сам не видишь, что пишешь? Так и быть расшифрую. Твой код нужно трассировать брейкпоинтами, как и манипуляции с ss и eflags, причем последнее нужно делать 100%, поэтому и для твоего кода не проблема реализовать трассировщик. Не знаю как еще понятнее. ----- Yann Tiersen best and do not fuck |
|
Создано: 19 ноября 2011 17:56 · Личное сообщение · #22 PE_Kill Ну теперь понятно. Сразу нельзя было нормально ответить.. Вообще то я рассматривал обычную трассировку, та которая #DB через TF. Инты в коде и другие инструкции фолт генерящие не совсем корректно называть трассировкой. Можно вообще копировать код поблочно и исполнять в буфере, либо пойти дальше и эмулировать, как это олли делает. Всёже это будет не трейс. Код выше определяет трассровку обычную, через TF и хард брейк тоже задетектит. А на счёт точек останова через инты - я создал тему про патчи, где подробно показал как с этим можно в юзермоде бороться. |
|
Создано: 19 ноября 2011 17:59 · Личное сообщение · #23 |
|
Создано: 19 ноября 2011 18:02 · Поправил: bowrouco · Личное сообщение · #24 PE_Kill Обсуждали TF, а вы перешли на патчи снова - инты. Используя RE проекцию запись в память станет невозможна. Олли с этим не справляется. На скрине F8. 2b81_19.11.2011_EXELAB.rU.tgz - 1.png |
|
Создано: 19 ноября 2011 18:13 · Личное сообщение · #25 |
|
Создано: 19 ноября 2011 18:14 · Личное сообщение · #26 |
|
Создано: 19 ноября 2011 18:46 · Личное сообщение · #27 |
|
Создано: 19 ноября 2011 19:26 · Личное сообщение · #28 2PE_Kill "У меня есть десяток строк на масме,которые детектят ЛЮБУЮ вм..." при отключенном кэше это нереально. при включенном детектится любая вм в 3 строчки. но это из существующих. теоретически эмуляция кэша тоже возможна, только накладно. Думаю ты преувеличиваешь возможности своего кода. Хотя... Раз детект 100% стабильно, тебе ведь ничто не мешает выложить кодес? Если что-то мешает - значит детект не 100%, а рассчитан на недостатки эмуляции. |
|
Создано: 19 ноября 2011 19:32 · Личное сообщение · #29 |
|
Создано: 19 ноября 2011 19:53 · Поправил: spinz · Личное сообщение · #30 |
|
Создано: 19 ноября 2011 20:05 · Поправил: PE_Kill · Личное сообщение · #31 |
<< . 1 . 2 . 3 . >> |
eXeL@B —› Программирование —› Обработка memory (и не только) break'ов с помощью VEH |