Те кто работают с Java наверное знают дизассемблер байт-кода JavaBite, который лежит в инструментах. Как в свое время правильно заметил Quantum (и как я в последнее время понял на собственном опыте), в нем не хватает нескольких функций, особенно нужных при разборе обработанных обфускатором class-файлов. В результате я предпринял попытку приделать к нему эти недостающие функции. В аттаче два файла(с исходниками): jbloader.exe и jbhook.dll. Их нужно скопировать в ту же директорию что и javabyte.exe и запустить jbloader.exe. Тогда стартуется JavaBite с дополнительными функциями: 1) в главном меню пункт Functions с двумя подпунктами: Unique names for overloaded functions - переименовывает функции с одинаковыми именами так, что их можно редактировать Restore overloaded function names - восстанавливает изначальные имена функций 2) в контекстном меню в Сonstant Pool два подпункта: References - показывает где используется константа(в константах и в коде) Delete - удаляет константу если она нигде не используется(или показывает где используется) Кроме того поменял пару мелочей типа стилей контролов. Просьба потестить jbloader и сообщить о проблемах, любая конструктивная критика приветствуется. Также принимаются запросы на другие усовершенствования JavaBite. 1079542705__jbloader.zip
Вот это да! Не терпится поиграться с этим апдейтом, хотя времени сегодня совершенно нет Завтра-послезавтра непременно потестирую.
Stiver Те кто работают с Java наверное знают дизассемблер байт-кода JavaBite, который лежит в инструментах. А ГДЕ он там лежит? Ссылка на файл не работает, ссылка на офсайт - кривая, на самом офсайте про JavaBite ни слова. И даже гугль как-то совсем немногословен на эту тему. Прямо заговор какой-то. Неужто жабокряк стал репрессированной практикой? Или просто у Володи при очередном апдейте рука дрогнула
CyberManiac Это потому, что Володя ссылку переименовал(JavaByte->JavaBite), а сам файл переименовать забыл Он лежит все еще под именем http://www.wasm.ru/tools/19/JavaByte.zip
Так! Харе балдеть! http://wasm.ru/baixado.php?mode=tool&id=284 - линк переименовал, все работает. Quantum, гони отзыв о тулзах. Чтобы я и их на сайт добавил!
Stiver Багов не вижу. Новые фичи полностью одобряются Желательно добавить описание (вроде readme.txt) с содержанием по типу первого поста. Эта утилита и справочник по JVM - всё, что нужно для взлома любой жабьей защиты. volodya Конечно выкладывай! Делу Дзена нужны такие тулзы.
Исправил несколько мелких ошибок, приводящих к обвалу в некоторых случаях. Просьба к администрации обновить версию на сайте.
Спасибо! Ещё бы убрать писк при перемещении курсора в листинге дизассемблера (правда, пищит почему-то только на Висте).
Вот если бы этот Ява-байт,могбы еще распаковывать jаr.то былобы намного удобнее.Ну допустим распаковал я его выбрал класс.Вылезла какая то таблица.И как его Дизасемблировать?
Вопрос к гуру Java-декомпиляции... Многие обфускаторы используют неприятную технику - называют классы и пакеты однобуквенными сочетаниями. Причем иногда оказывается, что в одном пакете есть два класса: один с именем a.class, другой - A.class. Пока эти классы лежат в жарнике - все нормально, но попробуйте разархивировать их в папку под виндоус... NTFS считает имена папок и файлов нечувствительными к регистру, и второй класс перепишет первый. Как быть? JavaBite позволяет работать только с *.class-файлами. Может быть, кому-то известны сносные деобфускаторы или хотя бы декомпиляторы с функцией переименования методов и пакетов под Linux?
IAmSorry Боюсь, не совсем понял вопрос. Если речь идет именно о распаковке jar'a, чтобы файлы при этом не переписали друг друга, то можно использовать например программку отсюда http://www.wasm.ru/forum/viewtopic.php?pid=83022#p83022. Но она переименует только файлы, имена классов внутри останутся прежними. Если нужен способ переименовать сами классы с целью избавиться от однобуквенных названий, то это сложнее. Честно говоря не знаю, чем народ пользуется, у меня большинство инструментов самописные. Fernflower переименовывать тоже умеет, но пока еще не в том состоянии, чтобы отдавать его общественности на растерзание. Дополнительно можно посмотреть: 1) http://multimedia.cx/pre/re-retroguard.html Тут кто-то пытался приспособить RetroGuard для переименования. Не знаю, работает ли. 2) java decompiler авторства [wl]. Это надстройка над jad'ом, вроде бы включающая в себя и присвоение однозначных имен. Но не уверен, лучше спросить самого автора 3) Взять JDO (http://www.fileoffset.com/jd.php) и прикрутить туда функцию работы с jar'ами
Да, опенсоурсная библиотека RetroGuard может быть приспособлена для переименования. Правда вариант, предложенный в http://multimedia.cx/pre/re-retroguard.html, работает только частично, но зато направление для поисков понятно, спасибо.
сделайте пожалуйста изменение версии javabite при загрузке через loader, а то он так и остаётся v1, а это неправильно! )
и ПОИСК!!! простой поиск по графе disassembled! Без него убиться можно! никогда раньше не думал, что это такая важная функция...
не работает обратное переименование вызова функции, оно так и остаётся с $$ ! зачем вообще эту строку менять??
в случае глюков советую использовать http://sourceforge.net/projects/jdo/ и подобные ему перед javabite.