Чем
полезно иметь source
code?
Имея
source
code
его можно модифицировать,
усовершенствовать и использовать для
наследования других классов.
Имею
опыт
Reverse engineering файлов
byte-code от
Java. Декомпиляция
*.class
в
исходные файлы *.java.
Имею опыт декомпиляции
с байткодов Java(Жабы)
или Python-а
(Питона). На процесс написания исходных
текстов для создания программ Soft-ware
фирмы тратят большие инвестиции, в связи,
с чем у них естественно возникает
желание source
code
считать коммерческой тайной, но есть
другая философия называемая open-source.
Для
дизассемблирования программ обычно
применяют движки
дизассемблеров IDA,
совместно
с Python
или Perl-ом
для reverse
engeneeringа
что позволяет вскрывать и после этого
использовать чужие уникальные
алгоритмы. Успешные алгоритмы
конкурентов, можно использовать для
наследования.
Совместное
использование движка
дизассемблера c
Python-ом
или Perl-ом может быть использована для
снятия дампа памяти “архи-драгоценной”
программы и сохранения её в файл.
Для
программ, написанных на С+ Builder, Kylix
и Delphi, IDA не всегда распознает
функции, классы и т.д. особенно, если
программа была запакована. Поэтому
иногда можно и не распаковывать
программу, для ее анализа, а
использовать Memory
dumpers.
То есть дизассемблировать не сам файл, а
его образ в памяти (так называемый дамп).
Использование
UML-диаграмм
позволяет получить
более читаемый года и понятия алгоритмы
после декомпиляции (строит
UML диаграммы и прочее).
Использование
дисассемблер IDA Pro, с Python.
Бывают ситуации, когда программа
реализует что-то, и проблематично понять,
как это делается, в таких случаях весьма
помогает прикручивание
Perl к дисассемблеру,
также это помогает при reverse
engineering для
исследования web-технологий.
Из
интервью Ильфака автора известного дизассемблера
IDA Pro
- TanaT:
А может ли IDA Pro дизассемблировать
байт-код Java и управляемый код на MSIL?
- Ильфак:
Конечно же, IDA дизассемблирует
программы на Java или C#. И что
примечательно, она может
дизассемблировать классы и в очень
тяжелых случаях, когда входной файл
был испорчен, но все еще
работоспособен.
- Ильфак:
Мы сами не планируем поддержку других
языков, но любой пользователь IDA может
это сделать сам с помощью IDA SDK. Я даже
краешком уха слышал про подобные
работы для подключения Python к IDA.
Ильфак:
Ну, идея вроде лежит на поверхности? Нет
ни одной большой программы, которая бы
не позволяла запрограммировать ее тем
или иным способом. Честно говоря, мне
хотелось написать кусочек компилятора (лексический
+ синтаксический анализ, как это описано
у Ахо и Ульмана), вот скрипты и оказались
неплохим поводом. Сегодня я бы не стал
писать свой язык, а просто бы подключил
имеющиеся, например Perl или Python. Это было
бы и проще, и позволило бы большему
количеству пользователей писать
скрипты.