Я был просто поражен вымогателем, который записал большинство моих данных.Это одна из программ-вымогателей, расшифровка которых в настоящее время неизвестна, и у меня нет резервной копии.
Дело в том, что я запускал приложение Java с использованием Eclipse, которое занимает несколько вычислительных дней.Программа-вымогатель зашифровывала как файлы .java, так и файлы .class в папках «src» и «bin», но приложение Java по-прежнему работает нормально, поэтому кажется, что виртуальная машина Java может иметь локальную копию двоичных файлов.Знаете ли вы, есть ли какой-нибудь способ получить файлы .class из работающей JVM?Затем я декомпилирую его, чтобы получить мои исходные файлы.
Большое спасибо заранее и с наилучшими пожеланиями!
Редактировать : Большое спасибо всем.Я извлек файлы .class и затем смог декомпилировать в очень разумные файлы .java. Решение
@ valiano сработало.Обратите внимание, что jvminspector предполагает, что ваши классы не находятся в пакете по умолчанию, в противном случае строка 67 DumpAgent.java выдает исключение (небольшое восстановление в коде необходимо для восстановления, когда lastIndexOf возвращает -1).
@ Решение StephaneM иногда работало, но в некоторых случаях запуск classdumper.jar заставляет Eclipse завершить процесс из-за EXCEPTION_ACCESS_VIOLATION.
Я также нашел еще два решения:
a) похожий проект с именем dumpclass (https://github.com/hengyunabc/dumpclass)
b) класс sun.jvm.hotspot.tools.jcore.ClassDump,Пример использования: java -cp "C: \ Program Files \ Java \ jdk1.8.0_131 \ lib \ sa-jdi.jar" -Dsun.jvm.hotspot.tools.jcore.filter = sun.jvm.hotspot.tools.jcore.PackageNameFilter -Dsun.jvm.hotspot.tools.jcore.PackageNameFilter.pkgList = sun.jvm.hotspot.tools.jcore.ClassDump