Проверить содержимое в файлах .class
Предположим, что кто-то узнал, что определенный разработчик жестко закодировал кучу имен пользователей и паролей в приложение, которое превратило его в Production. О-о...!
Вы знаете как имя пользователя, так и пароль - есть ли способ проверить байт-код и определить, было ли на самом деле имя пользователя, пароль жестко запрограммирован?
Ответы
Ответ 1
Простым способом увидеть, какие литералы String используются в файле .class, является использование утилиты javap
в вашем Установка JDK для сброса файла с помощью опции "-v". Затем grep
для текста, который выглядит как <String "...">
, где ...
- это строка, которую вы ищете.
UPDATE
Последняя документация для javap
здесь, но старая версия выглядит более приятной IMO.
Ответ 2
Вы можете использовать декомпиляторы java для декомпиляции вашего класса (и проверить, содержит ли класс жестко заданные имя пользователя/пароли)
Посмотрите:
Ответ 3
Вы заглянули в JD-GUI? Вы можете увидеть, если это было жестко закодировано в любой из файлов классов.
Ответ 4
Может быть полезным для других в будущем. (From Как я могу открыть Java.class файлы по-человечески?
Usage: javap <options> <classes>...
where options include:
-c Disassemble the code
-classpath <pathlist> Specify where to find user class files
-extdirs <dirs> Override location of installed extensions
-help Print this usage message
-J<flag> Pass <flag> directly to the runtime system
-l Print line number and local variable tables
-public Show only public classes and members
-protected Show protected/public classes and members
-package Show package/protected/public classes
and members (default)
-private Show all classes and members
-s Print internal type signatures
-bootclasspath <pathlist> Override location of class files loaded
by the bootstrap class loader
-verbose Print stack size, number of locals and args for methods
If verifying, print reasons for failure