Сейчас на форуме: _MBK_ (+5 невидимых) |
![]() |
eXeL@B —› Вопросы новичков —› Инструментарий для комфортного анализа и очистки от "шелухи" |
Посл.ответ | Сообщение |
|
Создано: 13 января 2011 14:55 · Личное сообщение · #1 Добрый день! Cлоган одного производителя IDE гласит "Develop with pleasure!". Ищу подобный инструментарий для анализа программ. Конкретно сейчас столкнулся со следующей ситуацией. Есть программа, которая преобразовывает переданную двоичную строку. В w32dsm нашёл, где начинается преобразование и где оно заканчивается. Внутри идут рекурсивные обращения к десятку различных call функций на основе очередных символов исходной строки (может быть от XOR со сдвигом, до AES или RSA). С помощью многоэтапного запуска пошаговой отладки смогу восстановить алгоритм распаковки, но это может потребовать очень много времени. Сейчас хотел бы найти инструментарий, который позволит выполнить хотя бы некоторые из следующих функций: 1. Выделить нужные мне asm инструкции (и используемые участки памяти программы) в виде отдельной программы. То есть анализировать надо будет лишь нужную мне часть с некоторыми фиксированными блоками инициализации. Возможно, что этот процесс будет итеративным, но он должен быть проще, чем "ручной перевод" и не должен от меня требовать полностью самостоятельного преобразования адресов и т.п. 2. Позволит упростить текущий код, например, хочу избавиться от всех *criticalsection и аналогичного мусора. 3. Позволит легко вставлять "отладочные" конструкции, например, вывод сообщения, протоколирование данных по какому-нибудь адресу. То есть можно будет запустить "исходную" программу и получить журнал, из которого будет понятно, что в ходе работы были сделаны следующие вызовы и после данного произошла ошибка. Или просто видеть как меняется строка в ходе преобразований. Подскажите, пожалуйста, есть ли уже готовые инструменты с перечисленными возможностями? Или каким образом можно себе упростить жизнь с помощью существующих инструментов? Заранее спасибо! ![]() |
|
Создано: 13 января 2011 18:28 · Личное сообщение · #2 |
|
Создано: 14 января 2011 14:02 · Личное сообщение · #3 Попробовал натравить TMG Ripper Studio, но он вылетает, хотя по описанию интересный инструмент. Из-за отсутствия инструментария несколько часов потерял на тестировании, поскольку очень неудобно следить за регистрами и памятью, хотя и знаю по каким адресам смотреть. Раньше использовал, но сейчас не могу найти утилиту (кажется, всего буквы 3 в названии было), которая открывала любой файл и показывала код ассемблера с любого места, причём можно было напрямую вводить свой и она корректно интерпретировала непосредственно команды asm, а не коды. Чем проще всего воспользоваться для подобной "быстрой правки" exe-файла? Clerk Что-то дальше краткого определения "пермутации" ничего не нашёл. Можете подсказать, что почитать по теме? Может быть есть примеры инструментов? ![]() |
|
Создано: 14 января 2011 14:06 · Личное сообщение · #4 |
|
Создано: 14 января 2011 14:24 · Личное сообщение · #5 KingSise А IDA умеет? Я в ней ограничиваюсь нажиманием N, Y, F8, F9 и выбором представления типа для участков памяти (Array, Byte, [D]Word). Там название было как-то RTA или RPA; причём были две версии и пользовался обеими, так как что-то из удобства подпортили в новой. Только встречал её лет пять назад. ![]() |
|
Создано: 14 января 2011 14:57 · Личное сообщение · #6 |
|
Создано: 14 января 2011 15:18 · Личное сообщение · #7 Пишу здесь, чтобы не создавать отдельной темы. Опишу здесь основные принципы работы утилиты JumpMon, которая может стать удобным инструментом при анализе программ. а) JumpMon позволяет подключиться уже к запущенному процессу или стартовать новый процесс. б) С помощью WriteProcessMemory в коде "жертвы" проставляются JMP инструкции на заглушки, которые включают в себя вызов пользовательских функций и повтор действий жертвы (за счёт минимального дизассемблера). в) Обёртка около заглушек позволяет сохранить все флаги и регистры, чтобы не вносить корректив в работу исходного кода "жертвы". г) В рамках обёртки может быть вызван скрипт пользователя с передачей ему блоков памяти по определённым адресам, регистров и т.п. Возможно обратное изменение памяти или регистров/флагов в исходной программе. Скрипт пользователя может представлять собой C++ программу, специальный язык JumpMon, сохранение протокола в файл. JumpMon удобен при анализе алгоритмов и преобразований, поскольку позволяет легко собирать результаты работы алгоритма пошагово. Можно многократно инициализировать данные для программы, чтобы прогонять лишь необходимый код. По мере реализации функциональности есть возможность замены исходных функций программы на исследованные и переработанные. Самого инструмента пока нет (в первом посте спрашивал и о чём-нибудь подобном), но его относительно просто реализовать, например, на основе Microsoft Detours. Если кому-нибудь интересно это реализовать, то пишите. Сам напишу, когда смогу освободить выходные и будет настроение. Как сейчас вообще решаете подобные задачи? Можно ли на скриптах OllyDbg или в IDA при вызовах легко дампить регистры/переменные? ![]() |
|
Создано: 14 января 2011 22:58 · Личное сообщение · #8 Посмотрел на hiew. Действительно, код позволяет править, но удовольствия от использования этого инструмента совсем не прибавляется. Не поленился и достал старый диск, на котором успешно нашёл программу, причём угадал её название - RTA. Автор прекратил проект ещё в 2003 году, поскольку посчитал, что всем хватит OllyDbg и IDA (пропатченная), но инструмент просто замечательный. Оказалось, что там даже был скриптовый язык для написания патчей. Странно, что почти нигде этот инструмент не упоминается. Автор Squidge публиковал свои версии тут hxxp://forum.exetools.com/showthread.php?t=2550 Если будете смотреть, то обязательно скачайте как версию 2.00, так и версию 1.20. P.S. Продолжаю поиски других удобных инструментов, сделанных для людей, а не "для галочки". ![]() |
|
Создано: 15 января 2011 11:21 · Личное сообщение · #9 valot ты ссылки проверял, там уже давно ничего нет (hxxp://ibiblio.org/paulc/rta). Даже в нете Google находит RTA на WASMe (http://www.wasm.ru/tools/13/rta.zip), которого тоже там нет. ![]() Я так понял размер RTA 2.00 beta 2.5 где-то 492.58 kb, приаттач здесь на сайте (со своего старого диска), интересно посмотреть программу. ![]() ![]() |
|
Создано: 15 января 2011 16:24 · Личное сообщение · #10 |
|
Создано: 15 января 2011 16:26 · Личное сообщение · #11 Интерфейс кардинально отличается у версий, поэтому добавлю и первую. ![]() ![]() |
![]() |
eXeL@B —› Вопросы новичков —› Инструментарий для комфортного анализа и очистки от "шелухи" |