проверить содержимое в файлах .class - PullRequest
14 голосов
/ 23 мая 2011

Предположим, кто-то узнал, что какой-то разработчик жестко запрограммировал кучу имен пользователей и паролей в приложение, которое превратило его в Production. О-о ..!

Вы знаете имя пользователя и пароль - есть ли способ отсканировать байт-код и определить, действительно ли имя пользователя и пароль были жестко закодированы?

Ответы [ 4 ]

21 голосов
/ 23 мая 2011

Простой способ узнать, какие литералы String используются в файле ".class", - это использовать утилиту javap в вашей установке JDK, чтобы выгрузить файл с помощью опции "-v". Затем grep для текста, который выглядит как <String "...">, где ... - это строка, которую вы ищете.

UPDATE

Последняя документация для javap здесь здесь , но старая версия выглядит лучше IMO.

7 голосов
/ 23 мая 2011

Вы смотрели в JD-GUI ?Вы можете увидеть, было ли это жестко закодировано в каком-либо из файлов класса.

7 голосов
/ 23 мая 2011

Вы можете использовать декомпиляторы Java для декомпиляции вашего класса (и для проверки, содержит ли класс жестко закодированные имя пользователя / пароли) Посмотрите на:

5 голосов
/ 30 декабря 2014

Может быть полезным для других в будущем. (Из Как я могу открыть файлы 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
...