Сейчас на форуме: _MBK_ (+5 невидимых)

 eXeL@B —› Вопросы новичков —› Инструментарий для комфортного анализа и очистки от "шелухи"
Посл.ответ Сообщение

Ранг: 3.1 (гость)
Активность: 0.010
Статус: Участник

Создано: 13 января 2011 14:55
· Личное сообщение · #1

Добрый день!

Cлоган одного производителя IDE гласит "Develop with pleasure!". Ищу подобный инструментарий для анализа программ. Конкретно сейчас столкнулся со следующей ситуацией. Есть программа, которая преобразовывает переданную двоичную строку. В w32dsm нашёл, где начинается преобразование и где оно заканчивается. Внутри идут рекурсивные обращения к десятку различных call функций на основе очередных символов исходной строки (может быть от XOR со сдвигом, до AES или RSA).

С помощью многоэтапного запуска пошаговой отладки смогу восстановить алгоритм распаковки, но это может потребовать очень много времени. Сейчас хотел бы найти инструментарий, который позволит выполнить хотя бы некоторые из следующих функций:

1. Выделить нужные мне asm инструкции (и используемые участки памяти программы) в виде отдельной программы. То есть анализировать надо будет лишь нужную мне часть с некоторыми фиксированными блоками инициализации. Возможно, что этот процесс будет итеративным, но он должен быть проще, чем "ручной перевод" и не должен от меня требовать полностью самостоятельного преобразования адресов и т.п.

2. Позволит упростить текущий код, например, хочу избавиться от всех *criticalsection и аналогичного мусора.

3. Позволит легко вставлять "отладочные" конструкции, например, вывод сообщения, протоколирование данных по какому-нибудь адресу. То есть можно будет запустить "исходную" программу и получить журнал, из которого будет понятно, что в ходе работы были сделаны следующие вызовы и после данного произошла ошибка. Или просто видеть как меняется строка в ходе преобразований.

Подскажите, пожалуйста, есть ли уже готовые инструменты с перечисленными возможностями? Или каким образом можно себе упростить жизнь с помощью существующих инструментов?

Заранее спасибо!



Ранг: 255.8 (наставник), 19thx
Активность: 0.150.01
Статус: Участник
vx

Создано: 13 января 2011 18:28
· Личное сообщение · #2

Откройте для себя пермутацию.



Ранг: 3.1 (гость)
Активность: 0.010
Статус: Участник

Создано: 14 января 2011 14:02
· Личное сообщение · #3

Попробовал натравить TMG Ripper Studio, но он вылетает, хотя по описанию интересный инструмент.
Из-за отсутствия инструментария несколько часов потерял на тестировании, поскольку очень неудобно следить за регистрами и памятью, хотя и знаю по каким адресам смотреть.

Раньше использовал, но сейчас не могу найти утилиту (кажется, всего буквы 3 в названии было), которая открывала любой файл и показывала код ассемблера с любого места, причём можно было напрямую вводить свой и она корректно интерпретировала непосредственно команды asm, а не коды. Чем проще всего воспользоваться для подобной "быстрой правки" exe-файла?


Clerk
Что-то дальше краткого определения "пермутации" ничего не нашёл. Можете подсказать, что почитать по теме? Может быть есть примеры инструментов?




Ранг: 469.0 (мудрец), 100thx
Активность: 0.250
Статус: Участник
[www.AHTeam.org]

Создано: 14 января 2011 14:06
· Личное сообщение · #4

Clerk пишет:
найти утилиту (кажется, всего буквы 3 в названии было)


IDA?

-----
-=истина где-то рядом=-




Ранг: 3.1 (гость)
Активность: 0.010
Статус: Участник

Создано: 14 января 2011 14:24
· Личное сообщение · #5

KingSise
А IDA умеет? Я в ней ограничиваюсь нажиманием N, Y, F8, F9 и выбором представления типа для участков памяти (Array, Byte, [D]Word).

Там название было как-то RTA или RPA; причём были две версии и пользовался обеими, так как что-то из удобства подпортили в новой. Только встречал её лет пять назад.




Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 14 января 2011 14:57
· Личное сообщение · #6

HIEW асм показывает и править позволяет.

| Сообщение посчитали полезным: valot

Ранг: 3.1 (гость)
Активность: 0.010
Статус: Участник

Создано: 14 января 2011 15:18
· Личное сообщение · #7

Пишу здесь, чтобы не создавать отдельной темы.

Опишу здесь основные принципы работы утилиты JumpMon, которая может стать удобным инструментом при анализе программ.
а) JumpMon позволяет подключиться уже к запущенному процессу или стартовать новый процесс.
б) С помощью WriteProcessMemory в коде "жертвы" проставляются JMP инструкции на заглушки, которые включают в себя вызов пользовательских функций и повтор действий жертвы (за счёт минимального дизассемблера).
в) Обёртка около заглушек позволяет сохранить все флаги и регистры, чтобы не вносить корректив в работу исходного кода "жертвы".
г) В рамках обёртки может быть вызван скрипт пользователя с передачей ему блоков памяти по определённым адресам, регистров и т.п. Возможно обратное изменение памяти или регистров/флагов в исходной программе. Скрипт пользователя может представлять собой C++ программу, специальный язык JumpMon, сохранение протокола в файл.


JumpMon удобен при анализе алгоритмов и преобразований, поскольку позволяет легко собирать результаты работы алгоритма пошагово. Можно многократно инициализировать данные для программы, чтобы прогонять лишь необходимый код. По мере реализации функциональности есть возможность замены исходных функций программы на исследованные и переработанные.



Самого инструмента пока нет (в первом посте спрашивал и о чём-нибудь подобном), но его относительно просто реализовать, например, на основе Microsoft Detours. Если кому-нибудь интересно это реализовать, то пишите. Сам напишу, когда смогу освободить выходные и будет настроение.



Как сейчас вообще решаете подобные задачи? Можно ли на скриптах OllyDbg или в IDA при вызовах легко дампить регистры/переменные?



Ранг: 3.1 (гость)
Активность: 0.010
Статус: Участник

Создано: 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. Продолжаю поиски других удобных инструментов, сделанных для людей, а не "для галочки".




Ранг: 57.7 (постоянный), 49thx
Активность: 0.070
Статус: Участник

Создано: 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, приаттач здесь на сайте (со своего старого диска), интересно посмотреть программу.



Ранг: 3.1 (гость)
Активность: 0.010
Статус: Участник

Создано: 15 января 2011 16:24
· Личное сообщение · #10

inffo
Возможно, что на wasm я первый раз и нашёл её.

bab4_15.01.2011_CRACKLAB.rU.tgz - rta2.zip



Ранг: 3.1 (гость)
Активность: 0.010
Статус: Участник

Создано: 15 января 2011 16:26
· Личное сообщение · #11

Интерфейс кардинально отличается у версий, поэтому добавлю и первую.

b59d_15.01.2011_CRACKLAB.rU.tgz - rta.zip


 eXeL@B —› Вопросы новичков —› Инструментарий для комфортного анализа и очистки от "шелухи"
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати