Можно ли сериализовать объект класса Java в файл класса? - PullRequest
1 голос
/ 05 августа 2011

Я пытаюсь выполнить обратный инжиниринг Java-класса, который загружается загрузчиком пользовательских классов.

Я пытался сохранить двоичный контент, а затем попытался декомпилировать, но декомпилятор пожаловался на это как на не типичный класс Java, я понял, что класс загружается динамически.

Теперь во время выполнения у меня есть объект класса. Можно ли сериализовать в файл класса, который следует тому же соглашению, что и класс Sun Java.

Добавлено: альтернативно, есть ли доступный API декомпилятора, который может работать с объектом класса java?

Ответы [ 2 ]

2 голосов
/ 05 августа 2011

Самый простой способ (imo) обойти это дело - напрямую взломать java.lang.ClassLoader и заменить его, чтобы отследить любой загруженный класс, поискать protected final Class<?> defineClass(String name, byte[] b, int off, int len, ProtectionDomain protectionDomain) и заменить его собственной версией и ловушкой.Когда вы компилируете свою собственную версию java.lang.ClassLoader, просто используйте java - -Xbootclasspath/p

В качестве альтернативы установка некоторых инструментов может дать аналогичные эффекты.

0 голосов
/ 05 августа 2011

эхххй.Почему именно декомпилятор жалуется?Некоторый код просто не может быть декомпилирован.Например, если байт-код выдвигается, но затем не всплывает, Java-эквивалента просто нет.

Попробуйте проверить байт-код.Быстрый взгляд с помощью javap уже может показаться весьма убедительным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...