eXeL@B —› Основной форум —› Отладка приложения накрытого Themida |
. 1 . 2 . >> |
Посл.ответ | Сообщение |
|
Создано: 27 марта 2010 20:34 · Поправил: Модератор · Личное сообщение · #1 Есть dllка, запакованная с помощью темиды. При чем опции там не сильно понаворочены. Цель - посмотреть как работает одна из экспортированных функций в конкретной ситуации. dll-ка является частью большой программы и интерес представляет то как эта функция отрабатывает именно в рамках этой программы (как я уже писал - в конкретной ситуации). В эту программу могу заинжектить свою dllку, и в нужный момент перехватить вызов этой функции. Что делаю (пробовал много разных вариаций, остановился пока на этом): 1) стопаю все потоки кроме того где был вызов (SuspendThread) 2) отключаю уведомления об атаче/детаче потоков во всех модулях. (тут возможно не надо, но в другой ситуации с этой прогой помогло) 3) ухожу в бесконечный цикл (типа while(true);) 4) атачусь олей к запущеной проге. В потоках нахожу этот (активных только 2, 1 которым олли атачился и вот этот), пытаюсь его отлаживать. Он, как и следовало ожидать, находится в моем бесконечном цикле. Пробовал: 1) ставить брекпоинт на строчке следующей за текущей 2) просто делать степ 3) trace into/over Всё это приводит к тому что прога переходит из Paused в Running и если после этого ее стопнуть то этот поток находится в недрах WaitForMultipleObjects. Никак не могу понять как оно туда попало, ибо все потоки вроде как стопнуты, а этому никак мимо моего брекпоинта не пройти. Очень интересует как оно меня так жестоко обходит, ну и "что делать?" От модератора: русский язык научись уважать! Что ещё за "апликуха"? |
|
Создано: 27 марта 2010 21:35 · Личное сообщение · #2 |
|
Создано: 27 марта 2010 21:45 · Личное сообщение · #3 |
|
Создано: 27 марта 2010 21:54 · Личное сообщение · #4 Такое впечатление, что произошёл заход внутрь sysenter со взведеным TF-флагом. Тогда Single Step не даёт планировщику переключить контекст, и поток зависает в состоянии ожидания. Возникает вопрос - с какими объектами хочет синхронизировать выполнение WaitForMultipleObjects? И ещё - для всех ли потоков SuspendThread завершается удачно? ----- Stuck to the plan, always think that we would stand up, never ran. |
|
Создано: 27 марта 2010 22:08 · Личное сообщение · #5 Оли вроде предупреждает что стоит TF флаг и что оне может сделать Step. Кстати он предлагает эту беду разрешить с помощью брейкпоинта. Что в моем случае не помогает. С чем хочет - хз, с объектами которые насоздавала эта программа Там 60-70% потоков висит в этом вейте. Вверх по стеку после Run-Pause там OpenAL олли показывает. SuspendThread для всех удачен (логи в файл пишутся). +Я писал что олли показывает 2 активных потока, тот через который он инжектился и вот этот. |
|
Создано: 28 марта 2010 00:14 · Личное сообщение · #6 |
|
Создано: 28 марта 2010 01:57 · Поправил: DenCoder · Личное сообщение · #7 |
|
Создано: 28 марта 2010 02:08 · Личное сообщение · #8 DenCoder Вряд-ли поможет. Zulkis Попробуй хайды с опциями "anti anti attach". может быть поможет. А вообще скорее всего прога запускается с ключами в командной строке, поэтому не запускается просто через проводник. Думаю что всё-же легче разобраться почему прога не запускается, чем бороться с глюками при аттаче. Как вариант, можешь попробовать последней беткой второй ольки подцепиться. Вроде там пофиксили проблемы при аттаче ----- Research For Food |
|
Создано: 28 марта 2010 02:26 · Личное сообщение · #9 |
|
Создано: 28 марта 2010 03:06 · Личное сообщение · #10 Zulkis пишет: Программа запускается другой программой, и напрямую не запускается. Тут явно сказано что запускается ДРУГОЙ программой. Думаю что чел сказал бы об арме, если бы она там была Вариантов тут не очень много - скорее всего или командная строка или мьютексы, но если там самопальная реализация наномитов или прочей дряни, тогда конечно легче цепануться ----- Research For Food |
|
Создано: 28 марта 2010 03:50 · Поправил: DenCoder · Личное сообщение · #11 daFix пишет: Как вариант, можешь попробовать последней беткой второй ольки подцепиться. Вроде там пофиксили проблемы при аттаче Да, в первой ольге есть баг при аттаче: иногда все потоки вдруг засыпают. Я решал эту проблему так: ПКМ->Resume {50 - 100} ))) ПКМ рука устанет, поэтому лучше Shift-F10. Если у Zulkis'а такая же проблема, то для автоматизма борьбы с этим багом инжектирующая прога может получать состояние потока и будить его, пока он не проснется. NtQuerySystemInformation с классом SystemProcessesAndThreadsInformation даст больше информации о состоянии потока, чем возвращаемое значение ResumeThread. Code:
Process Explorer такжет поможет оживить нужный поток. ----- IZ.RU |
|
Создано: 28 марта 2010 09:34 · Личное сообщение · #12 Bronco Decode SSE registers? Включил - ситуация не поменялась. DenCoder Фантом вылетал при атаче. Оказалось что был старый. Сейчас буду мучить 1.54, или есть новее? Что же касается стопнутых ниток, то мне как раз и надо что бы они все стояли. Т.к. там по ним раскиданы разного рода проверки на дебаг, которые наоборот мешаются. daFix Там какая то самопальная чекалка запуска. Точно не через командную строку. Если заатачиться второй олькой то программа крашится. Опять таки непонятно почему, т.к. все потоки стопнуты. |
|
Создано: 28 марта 2010 10:24 · Личное сообщение · #13 |
|
Создано: 28 марта 2010 10:29 · Личное сообщение · #14 Фима может скрывать свои потоки от отладчика. Так что я бы точно убедился, что ты глядишь именно на тот поток, что надо. Что касается заход внутрь sysenter со взведеным TF-флагом. Тогда Single Step не даёт планировщику переключить контекст, и поток зависает в состоянии ожидания - то TF остаётся вообще во флагах на стеке, а в ринг0 флаги свои, как оно протащит ТФ в ринг0 я вообще хз. |
|
Создано: 28 марта 2010 10:33 · Личное сообщение · #15 Использовал OllyDbg - 9in1 for Themida (взят отсюда: www.tuts4you.com/download.php?view.2012) С ними происходит всё вышеописанное. Попробовал PhantOm 1.54 и HideOD 0.182. К этому они не цепляются т.к. так переименован экзешник Olly. Если вернуть ему имя то во время атача высвечивается ошибка (см. аттач) Далее можно нажимать хоть Да, хоть Нет. Через некоторое время (похоже как раз указанные 5 секунд) опять высвечивается она же. И так до бесконечности. По крайней мере я не додытал что бы она закончилась. Если же взять PhantOm и HideOD с голым Olly, то после Attack/Run прилага вываливается, опять таки минуя брекпоинт. 29ae_28.03.2010_CRACKLAB.rU.tgz - 5sec.jpg |
|
Создано: 28 марта 2010 10:36 · Личное сообщение · #16 |
|
Создано: 28 марта 2010 10:53 · Поправил: obfuskator · Личное сообщение · #17 |
|
Создано: 28 марта 2010 11:01 · Поправил: Zulkis · Личное сообщение · #18 |
|
Создано: 28 марта 2010 12:13 · Личное сообщение · #19 |
|
Создано: 28 марта 2010 13:32 · Личное сообщение · #20 |
|
Создано: 29 марта 2010 10:10 · Поправил: DenCoder · Личное сообщение · #21 Конечно. Лучше перехватывать потоки от старта процесса и не давать их скрыть. ____________________________________________________________________ Да, Archer, прав. Спасибо, Archer! Даже и не знал, что это возможно... так просто. Вот такой простой код Code:
отсоединяет поток от отладчика. ----- IZ.RU |
|
Создано: 29 марта 2010 23:46 · Личное сообщение · #22 Чё-то всё равно не въехал - этот антидебаговый трюк не скрывает потоки от перечисления через те же Tool Help, так что заинжекченная либа всё равно их бы обнаружила и остановила с помощью SuspendThread. Или я чё-то путаю (на практике проверять лень - просто мысли). ----- Stuck to the plan, always think that we would stand up, never ran. |
|
Создано: 30 марта 2010 00:07 · Поправил: DenCoder · Личное сообщение · #23 Ой, блин. Я, похоже, запутался. Вообще если дословно понимать написанное в pdf, то этот трюк скрывает поток от отладчика только в плане исключений. Проверить никто не хочет? У меня времени не особо, к своей тулзе прикручу, чтоб без проблем можно было отладчиком в любой момент подцепиться. Но пока сейчас другое пишу. _________________________ P.S. Время не будет переводиться на cracklab? ))) ----- IZ.RU |
|
Создано: 30 марта 2010 18:15 · Личное сообщение · #24 |
|
Создано: 30 марта 2010 19:18 · Поправил: Zulkis · Личное сообщение · #25 |
|
Создано: 30 марта 2010 19:21 · Личное сообщение · #26 |
|
Создано: 30 марта 2010 20:34 · Личное сообщение · #27 Zulkis пишет: Надо что бы отлаживаемое приложение была запущено из под Olly Именно. Тот же фантик мог бы избавить от этих HideThreadFromDebugger. Valemox пишет: Раньше он при таком фокусе в синьку вылетал Но было это очень-очень-очень давно ----- Stuck to the plan, always think that we would stand up, never ran. |
|
Создано: 30 марта 2010 22:54 · Личное сообщение · #28 |
|
Создано: 30 марта 2010 23:17 · Личное сообщение · #29 Zulkis На сколько я понял, это не прот, а просто опция защиты, так что если снимать, тогда только с Themid'ой. Чуть выше DenCoder, привёл пример этого трюка: Code:
Чтобы его обойти, поймай вызов этой функции и не дай ей выполниться. Сорри, если чего-то не понял ----- Research For Food |
|
Создано: 30 марта 2010 23:49 · Личное сообщение · #30 |
. 1 . 2 . >> |
eXeL@B —› Основной форум —› Отладка приложения накрытого Themida |