Наткнулся на непонятные классы. Часть - обычные, декомпилятся на ура, а часть - то ли покриптована, то ли сжата. Сама жаба их отрабатывает... Примерное начало: 00: CA FE BA BE-00 00 00 00-00 00 44 5D-9B C7 C8 B1 10: 70 46 51 36-28 54 9A E0-C2 71 7F 66-FC FE 29 CA Что с этим творить, чтоб в декомпилер загнать можно было ?
spanther Выложи пример такого класса. В принципе все что обрабатывает стандартный ClassLoader(проверь кстати, может они грузятся каким-нибудь модифицированным лоадером), должен брать и декомпилятор, по крайней мере в Яве 1.4 никаких защит и сжатий не предусмотрено.
Залил - http://www.mytempdir.com/328184 Модифицированых лоадеров не вижу, да и не один там такой файлик...
spanther Дизассемблировать надо, т.к. декомпилеры не справляются со многими классами после "косметической модификации", либо прогона через обфускатор, да и результат декомпиляции иногда не соответствует оригинальному коду (по крайней мере, справедливо для обоих декомпиляторов, что на васме лежат). Дизассемблировать лучше всего JavaBite'ом CA FE BA BE: сигнатура жабы 00 00 00 00: вирсии (minor/major) Версия 0.0 стандартным лоадером (JRE 1.3 - 1.5) не загружается. Копать нужно в сторону модифицированного лоадера, как и подсказал Stiver. 00 00: кол-во констант в constant pool'е + 1. Цитирую справочник: "A constant_pool index is considered valid if it is greater than zero and less than constant_pool_count" Остались какие-либо сомнения в отношении лоадера?
Quantum: > CA FE BA BE: сигнатура жабы > 00 00 00 00: вирсии (minor/major) > Версия 0.0 стандартным лоадером (JRE 1.3 - 1.5) не загружается. Это я уже прочел в статье на wasm. > Копать нужно в сторону модифицированного лоадера, как и подсказал Stiver. Остались какие-либо сомнения в отношении лоадера? Сомнений не осталось, но так как на жабе никогда не программил, ума не дам, как это может быть реализовано, соответственно, где пытаться раскопать. Наугад - слишком жестко, там стандартные сановские криптоалго в пэкэджах rc2,rc5,rsa,x509... еще лежат, вот и пойми, юзаются они, или что-то другое.
spanther Да, нужно смотреть что с этими файлами при загрузке происходит. Если тебе не срочно, можешь выложить или дать ссылку на саму программу, я попробую покопаться. P.S. если хочешь попробовать сам, можно например подсунуть свою версию класса ClassLoader и сдампить нужные классы уже в распакованном виде. Здесь подробное описание с примером http://www.javaworld.com/javaworld/javaqa/2003-05/01-qa-0509-jcrypt.ht ml
Программа - целый CD, там и томкэт, ... А рипать - это разбираться опять же надо http://www.re.mipt.ru/infsec/2005/essay/2005_Java_security_system__Mak simov.htm Ok, сейчас посмотрю ссылку...
Запарился. Вызываются пачки всего, и не ясно, что творится, но на classloader не похоже. Других подобных методов точно нет ?
spanther Я бы на твоем месте делал так: сначала запустил бы виртуальную машину с опцией -verbose:class и получил бы список и последовательность всех загружаемых классов. Определил бы какие классы из списка меня интересуют(иожет это только файл LicensePool называется, а класс вовсе по-другому). Использовал бы информацию из линка в моем последнем сообщении чтобы сдампить их(в крайнем случае сдампить вообще все, ты пробовал?) в нормальном виде и потом уже спокойно бы их ковырял. Это по-моему самый простой путь.