# 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`).
