Сейчас на форуме: tyns777 (+6 невидимых) |
eXeL@B —› Вопросы новичков —› Патчинг обфусцированных приложений |
. 1 . 2 . >> |
Посл.ответ | Сообщение |
|
Создано: 04 июля 2019 13:24 · Личное сообщение · #1 Здравствуйте, ув. Профессионалы! Исходные данные: - программа, написанная на C# и обфусцированная .Net Reactor (скорее всего последней версии). Даже сам дедот пишет "Detected Unknown Obfuscator" - изменить код в dnSpy нельзя - сделать инжект dll + патчинг с помощью ILSpector нельзя - нельзя даже изменить значения переменных во время отладки в dnSpy - максимум, что можно сделать дак это изменить значения переменных, когда отладчик dnSpy входит в саму библиотеку mscorlib Задача: - найти и обучиться способу изменять код в обфусцированных приложениях |
|
Создано: 04 июля 2019 13:44 · Личное сообщение · #2 |
|
Создано: 04 июля 2019 13:50 · Поправил: Medsft · Личное сообщение · #3 rukop84 пишет: - изменить код в dnSpy нельзя - сделать инжект dll + патчинг с помощью ILSpector нельзя - нельзя даже изменить значения переменных во время отладки в dnSpy это фантастика) Хотя ... Дай посмотреть! Хотя ... Все что ты описал связано с проверкой цифровой подписи. Для начала надо пропатчить вызов этой проверки. А потом делай что хочешь) Хотя... Если мне не изменяет память reactor прячет тела методов поэтому что ты там патчить без снятия протектора собрался я не знаю. Добавлено спустя 8 минут rukop84 пишет: Даже сам дедот пишет - это не самый умный специалист по детекции протекторов |
|
Создано: 04 июля 2019 14:06 · Личное сообщение · #4 Adler пишет: А взглянуть на неё можно? пожалуйста только просьба не афишировать название программы Добавлено спустя 8 минут Medsft пишет: Если мне не изменяет память reactor прячет тела методов поэтому что ты там патчить без снятия протектора собрался я не знаю. ну, не знаю... в dnSpy по методам делаю -> щёлк -> щёлк -> щёлк -> щёлк ->...-> Анализировать -> Присваивается... -> щёлк и нашел нужный для модификации метод |
|
Создано: 04 июля 2019 14:43 · Личное сообщение · #5 |
|
Создано: 04 июля 2019 15:03 · Поправил: rukop84 · Личное сообщение · #6 Medsft пишет: У меня складывается стойкое убеждение что самые большие любители халявы это трейдеры в отношении взаимосвязи большинства трейдеров и халявы я не знаю, но в отношении себя могу точно сказать следующее: 1) я предпочитаю не халяву, а автономность; 2) цель должна окупать затраченные на нее средства. А если это не так значит следует искать др. способы реализации этой цели (что собственно и актуально в текущем случае) Мастер, Medsft! Ну, не знаю я почему Вы так не любите этот софт Medsft пишет: Сам не справишься поэтому, и обратился за помощью и советам к Профессионалам Medsft пишет: И это не реактор а что это, если позволите узнать? |
|
Создано: 04 июля 2019 17:32 · Личное сообщение · #7 |
|
Создано: 04 июля 2019 20:13 · Личное сообщение · #8 Medsft пишет: почисти от cflow метод M6sF занопил тело метода в hex-редакторе. Получилось так (скрин): дальше во время отладки в dnSpy получил необработанное исключение (скрин): |
|
Создано: 04 июля 2019 21:40 · Поправил: Adler · Личное сообщение · #9 rukop84 пишет: занопил тело метода в hex-редакторе. ... дальше во время отладки в dnSpy получил необработанное исключение... Да не может быть, прямо мистика какая то Да и то, что эта функция что-то возвращать должна ни разу не смутило? P.S. Может все таки лучше 2,5кР/мес? |
|
Создано: 04 июля 2019 22:09 · Поправил: rukop84 · Личное сообщение · #10 |
|
Создано: 04 июля 2019 22:15 · Поправил: Adler · Личное сообщение · #11 |
|
Создано: 04 июля 2019 23:10 · Поправил: rukop84 · Личное сообщение · #12 А-а-а-а, вспомнил - я этот метод (M6sF) анализировал ранее: - суть метода в том, что он превращает цифры в очень нужные для программы текстовые строки, без которых никуда - создан этот метод обфускатором .Net Reactor, чтобы запутать читабельность кода А отсюда, получается начало доходить и что от меня хочет Мастер Medsft: - в общем надо полностью удалить этот метод, а каждое место, откуда он вызывался следует заменить на соответствующую текстовую константу, так? |
|
Создано: 05 июля 2019 08:45 · Личное сообщение · #13 Примерно) Скажем так что автор реализовал при доставании очередного стринг проверку на целостность сборки Добавлено спустя 3 минуты А пока думаешь над строками, подумай что в этом методе не так что в нем мусор и мусор ли это) Code:
Добавлено спустя 3 минуты И что нужно поправить чтоб понять откуда ноги Добавлено спустя 40 минут Дам тебе rukop84 дельный совет (с условием что поделишься, у самого времени нет) Чтобы справиться со сборкой нужен инструмент заменяющий в методах по маске последовательность байт на последовательность байт. Раз собираешься заниматься реверсингом NET без него не обойтись. А может в сети такой найдешь хз. Ключевое слово в методах а значит notepad++ не пойдет))) | Сообщение посчитали полезным: rukop84 |
|
Создано: 05 июля 2019 13:55 · Личное сообщение · #14 Medsft пишет: автор реализовал при доставании очередного стринг проверку на целостность сборки это очень интересно. Получается, что каждый раз когда метод возвращает текстовую константу происходит еще и проверка на целостность кода Medsft пишет: подумай что в этом методе не так над задачкой подумаю чуть позже, там нужно вникнуть Medsft пишет: нужен инструмент заменяющий в методах по маске последовательность байт на последовательность байт дак, вроде такой инструмент уже известен, дедот называется. Вот ссылка на страницу с небольшим примером в самом низу страницы "Using a different rename regex" Также еще нарыл на гитхабе: dnDeflow - Control flow deobfuscation using Z3 and ILAst. Вот ссылка: Но ни скомпилированного релиза, ни документации, ни справки - нет. И пока неизвестно подойдет ли для нашего случая |
|
Создано: 05 июля 2019 14:22 · Личное сообщение · #15 |
|
Создано: 05 июля 2019 15:14 · Личное сообщение · #16 Medsft пишет: Пиши сам я тебе говорю. Нет инструмента а он тебе нужен Мастер Medsft, Вы переоцениваете способности ученика Если для того, чтобы исследуемое приложение стало доступным для патчинга новичку надо самому создавать какие-то инструменты, значит следует признать, что выбранные способы слишком сложны и отказаться от них. Все Гениальное - пРОСТое и ведет к РОСТу, к результату. А сЛОЖное - ведет по ЛОЖному пути или приводит в тупик Предлагаю тогда оставить обсуждение того, что защищено со всех сторон и практически неуязвимо. И перейти к обсуждению объекта с меньшим способом защиты - библиотеки mscorlib, которую использует программа и в которой можно беспрепятственно менять значения переменных, переданных основным приложением Тогда постановка задачи будет следующая: - какие способы/методы существуют в крэкинге, чтобы изменять код в библиотеки mscorlib? - как можно приложению подсунуть модифицированную mscorlib? - как подменять вычисляемые значения переменных библиотеки mscorlib для конкретного приложения? |
|
Создано: 05 июля 2019 17:23 · Личное сообщение · #17 |
|
Создано: 05 июля 2019 17:38 · Личное сообщение · #18 |
|
Создано: 05 июля 2019 17:40 · Поправил: Dr0p · Личное сообщение · #19 |
|
Создано: 08 июля 2019 09:22 · Личное сообщение · #20 rukop84 Функционал таргета не интересен мне.Меня интересует техника защиты приложения.Я готов был помочь при условии активного содействия над распаковкой программы. Раз у нас с Вами разные цели дальнейшего разговора не получится. Добавлено спустя 2 минуты Бесплатно я не работаю над взломом целевых таргетов |
|
Создано: 08 июля 2019 11:12 · Поправил: rukop84 · Личное сообщение · #21 Medsft пишет: Функционал таргета не интересен мне.Меня интересует техника защиты приложения.Я готов был помочь при условии активного содействия над распаковкой программы. Раз у нас с Вами разные цели дальнейшего разговора не получится. я Вас понял. А в направлении того, что Вам интересно можно будет продолжать тему форума? Да и относительно решения заданных Вами ранее задач? |
|
Создано: 08 июля 2019 12:46 · Личное сообщение · #22 |
|
Создано: 08 июля 2019 18:21 · Личное сообщение · #23 Dr0p пишет: Я написал пост с ответом, но оказалось что заблокирован. Поэтому увы. Второй раз набирать текст нет смысла. Рекомендую поставить какое-нибудь расширение, сохраняющее текст. Например https://addons.mozilla.org/ru/firefox/addon/textarea-cache/ Тогда в случае чего сможете достать набранный текст и сохранить уже в текстовик =) |
|
Создано: 08 июля 2019 18:31 · Личное сообщение · #24 |
|
Создано: 08 июля 2019 18:43 · Личное сообщение · #25 |
|
Создано: 08 июля 2019 18:47 · Поправил: Medsft · Личное сообщение · #26 Не знаю что там написал Dr0p))) но когда ставят вопрос таким образом: rukop84 пишет: Тогда постановка задачи будет следующая: - какие способы/методы существуют в крэкинге, чтобы изменять код в библиотеки mscorlib? - как можно приложению подсунуть модифицированную mscorlib? - как подменять вычисляемые значения переменных библиотеки mscorlib для конкретного приложения? сложно культурно ответить, зря наверное забанили... благо я пьяный был когда увидел и компа залогиненого рядом небыло, а тоб тож забанили))) А потом уж отпустило |
|
Создано: 10 июля 2019 17:42 · Поправил: rukop84 · Личное сообщение · #27 Medsft пишет: но когда ставят вопрос таким образом... дак, не пойму: а на что так срезонировал Ваш организм? На то, что я покушался на библиотеку mscorlib? Medsft пишет: Не знаю что там написал Dr0p))) а Dr0p`a забанили в другой обсуждаемой теме, по другому поводу, и было это давно Medsft пишет: нужен инструмент заменяющий в методах по маске последовательность байт на последовательность байт Мастер Medsft, можете привести пример или простую задачку в рамках исследуемой программы: - что конкретно на что конкретно нужно заменить (байт код на байт код) Когда для мозга появляется конкретика в постановке задачи, то он перестает бунтовать и начинает генерировать решения и перебирать способы и методы Если я найду способ или софт решить одну простую такую задачку, то это действие можно будет затем масштабировать на всю исследуемую программу |
|
Создано: 10 июля 2019 17:49 · Поправил: difexacaw · Личное сообщение · #28 rukop84 Если байт код(данные для транслятора/компилера) изменены, то я бы попробовал связать их через саму вм. Если для неё есть дебаг символы(не факт что есть, для тех версий что я не так давно смотрел их небыло), то это вашу задачу существенно упрощает наверно. Если какой то блок и вовсе вырезан из исходного хранилища(образа), то как определить без известных вызовов что там вызывается при трансляции - никак, если только связать сами данные с известными действиями вм. ----- vx |
|
Создано: 10 июля 2019 20:28 · Поправил: rukop84 · Личное сообщение · #29 В общем пока до меня дойдет что к чему в этом протекторе... Время идет, а дело не движется. Поэтому, чтобы придать хоть какое-то движение к цели, буду делать гипотезы. Мастер Medsft, подправьте, если можно ход моих мыслей: Защита 1: - расположена в методе M6sF - суть защиты в том, что при каждом возвращении текстовой константы происходит еще и проверка на целостность кода Защита 2 (гипотеза): - где-то в коде существуют проверки цифровой подписи - скрывают эту проверку методы с ключевым словом hidebysig Таким образом: 1) удалив все ключевые слова hidebysig в методах, станет ясно где в коде происходит проверка цифровой подписи 2) удалив проверку цифровой подписи и 3) удалив проверку на целостность кода в методе M6sF мы все защиты протектора и снимем, так? |
|
Создано: 10 июля 2019 20:46 · Личное сообщение · #30 |
. 1 . 2 . >> |
eXeL@B —› Вопросы новичков —› Патчинг обфусцированных приложений |
Эта тема закрыта. Ответы больше не принимаются. |