Java .class crypted ?

Тема в разделе "WASM.RESEARCH", создана пользователем spanther, 18 дек 2005.

  1. spanther

    spanther New Member

    Публикаций:
    0
    Регистрация:
    18 дек 2005
    Сообщения:
    7
    Наткнулся на непонятные классы. Часть - обычные, декомпилятся на ура, а часть - то ли покриптована, то ли

    сжата. Сама жаба их отрабатывает... Примерное начало:

    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

    Что с этим творить, чтоб в декомпилер загнать можно было ?
     
  2. Stiver

    Stiver Партизан дзена

    Публикаций:
    0
    Регистрация:
    18 дек 2004
    Сообщения:
    812
    Адрес:
    Germany
    spanther



    Выложи пример такого класса. В принципе все что обрабатывает стандартный ClassLoader(проверь кстати, может они грузятся каким-нибудь модифицированным лоадером), должен брать и декомпилятор, по крайней мере в Яве 1.4 никаких защит и сжатий не предусмотрено.
     
  3. spanther

    spanther New Member

    Публикаций:
    0
    Регистрация:
    18 дек 2005
    Сообщения:
    7
    Залил - http://www.mytempdir.com/328184

    Модифицированых лоадеров не вижу, да и не один там такой файлик...
     
  4. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    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"

    Остались какие-либо сомнения в отношении лоадера?
     
  5. spanther

    spanther New Member

    Публикаций:
    0
    Регистрация:
    18 дек 2005
    Сообщения:
    7
    Quantum:

    > CA FE BA BE: сигнатура жабы

    > 00 00 00 00: вирсии (minor/major)

    > Версия 0.0 стандартным лоадером (JRE 1.3 - 1.5) не загружается.

    Это я уже прочел в статье на wasm.

    > Копать нужно в сторону модифицированного лоадера, как и подсказал Stiver. Остались какие-либо сомнения в отношении лоадера?

    Сомнений не осталось, но так как на жабе никогда не программил, ума не дам, как это может быть реализовано, соответственно, где пытаться раскопать. Наугад - слишком жестко, там стандартные сановские криптоалго в пэкэджах rc2,rc5,rsa,x509... еще лежат, вот и пойми, юзаются они, или что-то другое.
     
  6. Stiver

    Stiver Партизан дзена

    Публикаций:
    0
    Регистрация:
    18 дек 2004
    Сообщения:
    812
    Адрес:
    Germany
    spanther



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



    P.S. если хочешь попробовать сам, можно например подсунуть свою версию класса ClassLoader и сдампить нужные классы уже в распакованном виде. Здесь подробное описание с примером http://www.javaworld.com/javaworld/javaqa/2003-05/01-qa-0509-jcrypt.ht ml
     
  7. spanther

    spanther New Member

    Публикаций:
    0
    Регистрация:
    18 дек 2005
    Сообщения:
    7
  8. spanther

    spanther New Member

    Публикаций:
    0
    Регистрация:
    18 дек 2005
    Сообщения:
    7
    Запарился. Вызываются пачки всего, и не ясно, что творится, но на classloader не похоже. Других подобных методов точно нет ?
     
  9. Stiver

    Stiver Партизан дзена

    Публикаций:
    0
    Регистрация:
    18 дек 2004
    Сообщения:
    812
    Адрес:
    Germany
    spanther





    Я бы на твоем месте делал так: сначала запустил бы виртуальную машину с опцией -verbose:class и получил бы список и последовательность всех загружаемых классов. Определил бы какие классы из списка меня интересуют(иожет это только файл LicensePool называется, а класс вовсе по-другому). Использовал бы информацию из линка в моем последнем сообщении чтобы сдампить их(в крайнем случае сдампить вообще все, ты пробовал?) в нормальном виде и потом уже спокойно бы их ковырял. Это по-моему самый простой путь.
     
  10. spanther

    spanther New Member

    Публикаций:
    0
    Регистрация:
    18 дек 2005
    Сообщения:
    7