- Editing class files java
- Class File Editor in Java
- Features of Java Class File Editor
- Using Java Class File Editor to Edit a Compiled Java Class
- Как редактировать файл класса из файла JAR?
- Методы (метод 1 игнорируется для объяснения в этой статье, поскольку он является обычным)
- Метод 2 (извлечение классов Java из исполняемого файла> Изменение байт-кода Java> Обновление исполняемого файла с помощью измененных классов/файлов с помощью команды подсказка)
- Шаги высокого уровня:
- 1. Настройте среду
- 2. Используйте JD-GUI для просмотра файла JAR
- 3. Распакуйте файл JAR
- 4. Измените. class с помощью редактора байт-кода Java
- 5. Повторно упакуйте измененные классы в новый архивный файл
- 6. Проверьте это с помощью JD-GUI
- Метод 3 (Извлечь классы Java из исполняемого файла> Изменить байт-код Java> Обновить исполняемый файл с помощью измененных классов/файлов с помощью командной строки)
- Шаги высокого уровня:
- 5. Обновите измененные классы в существующем файле JAR
- Заключение
Editing class files java
Open a Java class file binary to view or edit strings, attributes, methods and generate readable reports similar to the javap utility. In built verifier checks changes before saving the file. Easy to use Java Swing GUI.
This is a tool to open Java class file binaries, view their internal structure, modify portions of it if required and save the class file back. It also generates readable reports similar to the javap utility. Easy to use Java Swing GUI. The user interface tries to display as much detail as possible and tries to present a structure as close as the actual Java class file structure. At the same time ease of use and class file consistency while doing modifications is also stressed. For example, when a method is deleted, the associated constant pool entry will also be deleted if it is no longer referenced. In built verifier checks changes before saving the file. This tool has been used by people learning Java class file internals. This tool has also been used to do quick modifications in class files when the source code is not available.
- Intuitive Graphical User Interface: The user interface should be clean and intuitive. Screens should not be crowded. Components like tab panels should be used wherever appropriate to reduce screen clutter.
- Clear separation for the Novice and Power User: The features should be so arranged that the novice user can reach the required option easily, while all features are available for the power user deeper down the screen hierarchy.
- Cascading changes: The core engine should be able to detect cascading changes if any and confirm all changes before proceeding.
- Consistency check: Consistency check should be provided. Providing this check at all stages might not be feasible. To handle such cases the user should be given control to do this check optionally.
- Facility to switch off consistency check: Why on earth would somebody want this? Well, to test the Java Virtual Machine itself, to see how well it stands up to errors in the class file. The Java compiler would never produce an invalid class file. This is probably the only way to do it.
- Creating fresh classes: It should be possible to create classes out of scratch using this tool. This will serve as a useful tool for learning the Java Virtual Machine instructions.
- Facility to examine compiler specific attributes: Some compilers put attributes specific to their product to facilitate debugging and other product specific features. For example, the compiler might embed an entry to the source file browser file or may be a line number attribute in the class method descriptions. This utility should be able to detect, display and manipulate such features wherever possible.
Class File Editor in Java
- Features of Java Class File Editor
- Using Java Class File Editor to Edit a Compiled Java Class
In this article, we will discuss the Java Class File Editor, a tool created in Java used to edit Java compiled classes. We can decompile and see the Java classes once they are created, but we need tools like the Java Class File Editor to modify them.
Features of Java Class File Editor
- Easy to use Interface built using Java Swing
- Allows modifications of various parts of a class file, like methods, strings, constants, etc.
- Consistency Checks
Using Java Class File Editor to Edit a Compiled Java Class
Download Java Class File Editor from https://sourceforge.net/projects/classeditor/files/
Extract the compressed file, and open the JAR file name ce.jar shown below.
If we are unable to open the file, we can open the command line/terminal and use the following command:
Once the editor is opened, we open a Java class file using the File > Open menu item and choose the explorer class file.
We will use the following code in the class file.
public class ExampleClass1 private static final String METHOD_NAME1 = "exampleMethod1"; private static final String METHOD_NAME2 = "exampleMethod2"; public static void main(String[] args) int abc = 200; System.out.println(abc); exampleMethod2(); > static void exampleMethod2() System.out.println("This is just a method"); > >
After the editor opens the file, we turn on the Modify Mode in the top-right corner; this mode is off by default, as shown in the image below. The button will turn blue if it is on and green if it is off.
After the modification is on, we can modify certain aspects of the class by going to different editor sections.
The General section of the editor shows the class name and its parent class. We can see and edit the interfaces if any are in the class. Class Access Modifiers are also there, which we can change if we want to.
The next section is the Constant Pool section, which displays all the editor’s constants in the class. Here we can change the type of the constant and its value. We can add new constants or delete an existing one.
The Fields section of the editor shows the fields with their access modifiers which we can modify.
The last section of the editor part is the Methods section, where all the class methods are listed with their name, access modifiers, and return types that are all editable, and we can change them.
After all the modifications, we save the class file using the File > Save menu item. We can also export all the items like the name of fields, constants, methods, and their values as an XML file using the File > Export to XML menu item.
Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.
Как редактировать файл класса из файла JAR?
Редактирование файла класса из файла JAR также может быть вызвано исправлением исполняемого файла Java (файлов Jar) без знания исходного кода. Давайте посмотрим, как отредактировать файл класса из файла JAR, используя простой способ исправления исполняемого файла Java.
Методы (метод 1 игнорируется для объяснения в этой статье, поскольку он является обычным)
- Декомпилируйте файл JAR> Импортируйте декомпилированные классы в IDE (Eclipse, NetBeans и т. д.)> Измените исходный код> Перекомпилировать> Перестроить/перепаковать как JAR
- Извлечь классы Java из JAR> Изменить байт-код Java> Проверить> Повторно упаковать файл JAR
- Извлечь Java классы из исполняемого файла> Изменить байт-код Java> Обновить исполняемый файл с помощью измененных классов/файлов с помощью командной строки
Первый метод, упомянутый выше, является хорошим вариантом, если у вас есть исходный код кода и знаком с компиляцией Java, концепциями объектно-ориентированного программирования, но имеет несколько упомянутых ниже сложностей
- Целевой файл JAR имеет зависимости от других библиотек. Вы должны быть знакомы с этими зависимостями в своем проекте.
- Процесс декомпиляции не является точной наукой, поэтому ожидайте исправления ошибок, прежде чем заставлять его перекомпилировать
Когда мы просто хотим отредактировать несколько строк, перекомпиляция всего проекта без ошибок компиляции – болезненная работа.
Таким образом, метод (1) не является обязательным для использования, давайте также рассмотрим метод (2). Метод (2) быстрее, менее подвержен ошибкам и довольно прост в исполнении.
Метод 2 (извлечение классов Java из исполняемого файла> Изменение байт-кода Java> Обновление исполняемого файла с помощью измененных классов/файлов с помощью команды подсказка)
Шаги высокого уровня:
- Настройка среды
- Используйте JD-GUI, чтобы заглянуть в Файл JAR
- Распакуйте файл JAR
- Измените файл .class с помощью редактора байт-кода Java.
- Повторно упакуйте измененные классы в новый архив файл
- Проверьте его с помощью JD-GUI
1. Настройте среду
Убедитесь, что у вас установлен JDK и путь к классам настроен правильно, для проверки -> Открыть командную строку
На моем компьютере результат выглядит примерно так:
версия java "1.8.0_171" Java ( TM) Среда выполнения SE (сборка 1.8.0_171-b11) 64-разрядная серверная виртуальная машина Java HotSpot (TM) (сборка 25.171-b11, смешанный режим)
2. Используйте JD-GUI для просмотра файла JAR
Я предпочитаю JD-GUI для просмотра файла JAR, вы можете установить JD-GUI по ссылке ниже,
Просматривая файл JAR в нашем примере, мы могли видеть ниже класс в JD-GUI,
3. Распакуйте файл JAR
Создайте новую папку и скопируйте файл JAR в папку. Использование приведенной ниже команды распакует файл jar в папке.
4. Измените. class с помощью редактора байт-кода Java
Я предпочитаю редактор байт-кода Java редактировать файл .class. Редактор байт-кода Java можно загрузить по ссылке ниже,
В этом примере я собираюсь изменить строку « Привет »на« Добро пожаловать »из файла HelloWorld.class в редакторе байт-кода. Для редактирования перейдите к уважаемому пакету, файлу в JBE.
5. Повторно упакуйте измененные классы в новый архивный файл
Перейдите в папку HelloWorld и введите следующую команду в командной строке CMD, чтобы перепаковать файл JAR.
jar -cvf HelloWorld-Custom. jar *. *
6. Проверьте это с помощью JD-GUI
Теперь вы знаете, как просматривать JAR-файл с помощью JD-GUI. Откройте только что созданный файл HelloWorld-Custom.jar и проверьте файл класса на предмет модификации.
Теперь давайте посмотрим на метод (3), который я предпочитаю,
Метод 3 (Извлечь классы Java из исполняемого файла> Изменить байт-код Java> Обновить исполняемый файл с помощью измененных классов/файлов с помощью командной строки)
В этом методе только шаг 5 зависит от метода (2).
Шаги высокого уровня:
- Настройка среды
- Используйте JD-GUI, чтобы заглянуть в файл JAR
- Распакуйте файл JAR.
- Измените файл .class с помощью редактора байт-кода Java.
- Обновите измененные классы в существующем файле JAR
- Проверьте это с помощью JD-GUI
Выполните все, как в методе (2), за исключением шага 5. После завершения шага 4
5. Обновите измененные классы в существующем файле JAR
Используя следующую команду в командной строке, обновленный файл .class можно заменить существующим файлом JAR. Теперь перейдите в папку, в которой доступен JAR-файл в командной строке, и введите следующую команду.
jar uf jar-file input-file (s)
- Параметр u указывает, что вы хотите обновить существующий файл JAR.
- Параметр f указывает, что файл JAR для обновления указан в командной строке.
- jar-file – это существующий файл JAR, который необходимо обновить.
- input-file (s) – это разделенный пробелами список из одного или нескольких файлов, которые вы хотите добавить в файл JAR.
Любые файлы, уже находящиеся в архиве, имеющие то же имя пути, что и добавляемый файл, будут перезаписаны.
Итак, в нашем примере – я собираюсь предоставить команду ниже.
jar uf -HelloWorld.jar com/talkinfo/HelloWorld.class
Теперь файл Jar будет обновлен новым файлом класса. Для получения подробной информации об обновлении файла jar вы можете обратиться к ссылке ниже:
Заключение
Итак, мы увидели, как редактировать файл класса из файла JAR. Мы обсудили 3 метода, и метод (3) – это простой способ исправления файла Jar.