# Modify a Class File Inside a WAR File

If you only have a WAR (Web Application Archive) file and need to modify a URL in a class file inside the WAR, here are the detailed steps to achieve that:

#### Steps to Modify a Class File Inside a WAR File

1. **Extract the WAR File:**
   *   A WAR file is essentially a ZIP file. You can use any archive tool (such as WinRAR, 7-Zip, or the `unzip` command) to extract its contents.

       ```bash
       mkdir extracted_war
       unzip yourfile.war -d extracted_war
       ```
2. **Locate the Class File:**
   * Navigate through the extracted directories to find the class file you need to modify. Typically, class files are located in the `WEB-INF/classes` directory or in a JAR file within the `WEB-INF/lib` directory.
3. **Decompile the Class File:**
   *   Use a Java decompiler (such as JD-GUI, CFR, or FernFlower) to decompile the class file into readable Java source code.

       * **JD-GUI**: [JD-GUI](http://java-decompiler.github.io/)
       * **CFR**: [CFR](http://www.benf.org/other/cfr/)
       * **FernFlower**: [FernFlower](https://github.com/fesh0r/fernflower)

       Example using CFR:

       ```bash
       java -jar cfr-0.152.jar path/to/your/ClassFile.class > DecompiledClass.java
       ```
4.  **Modify the Source Code:**

    * Open the decompiled Java file in a text editor or IDE.
    * Locate the URL you need to modify and make the necessary changes.

    ```java
    // Original code
    String url = "http://original-url.com";

    // Modified code
    String url = "https://new-url.com";
    ```
5. **Recompile the Modified Class File:**
   *   Use the Java Compiler (`javac`) to recompile the modified Java file back into a class file.

       ```bash
       javac -cp .:path/to/dependencies/* DecompiledClass.java
       ```
   * Ensure you include any dependencies the class file might have in the classpath.
6. **Replace the Class File:**
   * Replace the original class file in the extracted WAR directory with the newly compiled class file.
7. **Repack the WAR File:**
   *   Use a tool like `jar` to repackage the extracted contents back into a WAR file.

       ```bash
       cd extracted_war
       jar -cvf ../modified.war *
       ```
8. **Deploy the Modified WAR File:**
   * Deploy the modified WAR file to your application server as you would normally deploy a WAR file.

#### Tools Needed

* **Archive Tool:** For extracting and repacking the WAR file (e.g., 7-Zip, WinRAR, `unzip`, `jar`).
* **Java Decompiler:** For decompiling the class file (e.g., JD-GUI, CFR, FernFlower).
* **Text Editor/IDE:** For modifying the source code (e.g., VS Code, IntelliJ IDEA, Eclipse).
* **Java Development Kit (JDK):** For recompiling the Java file (`javac`).

