Сейчас на форуме: -Sanchez- (+9 невидимых) |
eXeL@B —› Основной форум —› Активность приложения. |
<< . 1 . 2 . |
Посл.ответ | Сообщение |
|
Создано: 25 июня 2019 22:11 · Поправил: difexacaw · Личное сообщение · #1 Как тему назвать лучше я не придумал Идея следующая Смысл в том, что бы автоматикой обнаружить новую активность апп после некоторых событий. Тоесть к примеру найти обработчик события по нажатию кнопки. Для этого нужно выделить всю активность до нажатия и определить которой там небыло. Для этого нужно определить механизмы - что сохранять и как. Так как сохранять трассы/графы затея тёмная, так как не ясно что да как, да и затратно по ресурсам. В простейшем случае я использовал следующее. В самом простом случае сохранение инструкции это маркер её исполнения, тоесть используется битовая карта, где каждый адрес соотвествует биту и взводится посе исполнения инструкции. Для хранения всего кода апп нужны сложные структуры(для экономии памяти), поэтому в простейшем случае можно рассматривать только основной образ апп и карту для него равную ImageSize/8. Если искать новую инструкцию просто по этим маркерам, то это не всегда решение, так как не даст ветвление на эту инструкцию. Тоесть необходимо найти ветвление на новый адрес(маркер которого сброшен в карте). Я использовал следующий критерий отличия событий: если маркер текущей инструкции сброшен и маркер предыдущей инструкции взведён, при этом предыдущая инструкция - ветвление, это новая активность. В первом тесте я использовал winhex, у которого ограничение на размер сохраняемого дампа. Что бы найти место проверки вначале сохраняется файл меньшего размера и при этом строится карта активности. Далее находится новый код по критерию выше при сохранении файла большего размера. В результате в лог выводятся инструкции подходящие под критерий. Место проверки сразу найдено: Для более сложного теста я использовал апп накрытое Armadillo-й: Строится карта, я ввожу данные в форму. Затем начинается проверка критерия, я жму на ввод. Справа начало лога. Сразу оказываемся в крипто-функции, судя по константам это BLAKE" как утверждает вики. 4B53EB как и 4B534C в логе из за особенностей построения карты - маркировка и проверка происходит после исполнения инструкции, тоесть новое ветвление есчо до проверки маркируется. Лог не полный, так как активность только для образа. Вот это место под отладчиком, это крипто-функция имени: Как видно метод отлично работает. Интересны мысли по сабжу. 0b51_25.06.2019_EXELAB.rU.tgz - br.7z Добавлено спустя 2 часа 24 минуты Нашёл тему Интереса ради решил взглянуть. Для блокнота 7-ки есть дебаг символы. Вот лог нажатия "=": Code:
CF0F10: Code:
b001_26.06.2019_EXELAB.rU.tgz - calc.7z ----- vx |
|
Создано: 27 июня 2019 23:04 · Личное сообщение · #2 |
|
Создано: 27 июня 2019 23:22 · Личное сообщение · #3 difexacaw пишет: А что ты можешь по факту.) Ну кое что, как бы вы этого не хотели, я все же уже могу, а вот до знания ядра nt на вашем уровне - мне конечно же, как тут однажды выразился один начальник антивирусной компании, как до Китая раком. Так что сказки о себе про "коньков-горбунков" вы от меня пока не дождетесь. |
|
Создано: 28 июня 2019 01:37 · Поправил: difexacaw · Личное сообщение · #4 Вот пробная сборка SDE Это то, что я сделал за сегодня. pinvm изменён - впрыснута секция кода, она вызывается при выборке инструкций, в сурках пина это fetchIns(). Что бы это запустить нужно зарегать Олли как jit. Там есть сурки с обработкой, она проста. Можно увидеть что обработка не корректна - поток инструкций не последователен. Событие выбрано наугад - копирование инструкций, пока я не знаю нужное место, что бы получить полноценный колбек. Сам SDE работает как годный юзер руткит, те кроме кернел отладчика его вызовы не получится отследить, если только те два, которые можно найти в статике(2e). Если использовать опцию -debugtrace то будет вывод трассы в файл, но источник без виндебаг вы не найдёте. Если узнать нужное место, то можно будет сделать норм рабочий тулз. ps: зачем бинарям .def файлы я хз, но без них не работает. Что бы не париться я залил всё, поэтому такой размер. ----- vx | Сообщение посчитали полезным: plutos |
|
Создано: 28 июня 2019 06:28 · Поправил: plutos · Личное сообщение · #5 |
|
Создано: 28 июня 2019 12:15 · Личное сообщение · #6 SDE у меня тупо стартует пин. Code:
Т.е. походу всё сводится к пониманию работы Pin. ----- Stuck to the plan, always think that we would stand up, never ran. |
|
Создано: 28 июня 2019 12:34 · Поправил: fedik · Личное сообщение · #7 |
|
Создано: 28 июня 2019 17:40 · Поправил: difexacaw · Личное сообщение · #8 fedik Это какие то скрипты для сравнения дампов, а не инструмент, тысячи их для иды - турбодиффы всякие. Ида не предназначена для снятия трассы в реалтайме, как и любой юзер отладчик, разве что всё тем же пином. Было бы рабочее, давно бы все юзали. Та сборка пина что в сде не пригодна для снятия трассы, её просто нет, точнее она идёт частями, некоторые блоки пропускаются. А пин прикрутить для трассировки тоже не просто, он слишком толстый, нужна куча времени что бы разобраться. Да и не всё под ним можно крутить eg: Добавлено спустя 6 часов 23 минуты Свой мотор собрал, пришлось пол дня вычищать лишний функционал. Там понятно всё, видос в архиве. Массива собирает два - условных ветвлений и cal/ret/jmp. Без тлс, они общие для потоков. Добавлено спустя 7 часов 49 минут Пару крякми глянул для теста. Ввведение в крэк.. Олли, 25: Введение в реверс.. Ида, 19: Добавлено спустя 8 часов 44 минуты Захотел посмотреть что получится с вмп если крутнуть. Обработал семпл выше(дефолтные настройки), варился 7 минут: Если бы не имена секций, то не узнал бы что там слой протектора лол Олли не отображает параметры апи как на крине выше, так как импорт захвачен протектором. 6585_29.06.2019_EXELAB.rU.tgz - vmp33.7z Добавлено спустя 9 часов 2 минуты Кстате может кому интересно, расскажу про очень хитрый трюк, так была найдена запись в файл в сде(пине) без использования кернел дебаг. Пин общается с ядром через int2e шлюз; не зная адрес, этот интерфейс в юз обнаружить невозможно(иным способом). Я включил трассировку описателей(ProcessHandleTrace), затем закрыл описатель файла(Олли их отображает). И как следствие сработала ловушка при первом референсе на описатель, которая никогда больше не срабатывает - ядро кидает спец фаулт на мало известный адрес(KiRaiseUser), на стеке все нужные адреса. Так что есть способы и без км дебаг ----- vx | Сообщение посчитали полезным: dma |
|
Создано: 30 июня 2019 20:50 · Личное сообщение · #9 |
|
Создано: 01 июля 2019 18:05 · Личное сообщение · #10 |
<< . 1 . 2 . |
eXeL@B —› Основной форум —› Активность приложения. |
Эта тема закрыта. Ответы больше не принимаются. |