# Home

### Table of contents

| Page                 | Estimated reading time | Description                      |
| -------------------- | ---------------------- | -------------------------------- |
| JVM/Descriptors      | \~5 minutes            | JVM descriptors                  |
| JVM/The class file   | \~6 1/2 minutes        | JVM `.class` file format         |
| JVM/Stack            | \~5 minutes            | The JVM stack                    |
| Generic/Bytecode VMs | \~5 minutes            | Custom bytecode virtual machines |
| JVM/Obfuscation      | \~5 minutes            | JVM bytecode obfuscation         |
| JVM/Optimization     | \~5 minutes            | JVM bytecode optimization        |

### Information

Welcome to the second iteration of the previous "jvm-manual".

I have decided to rewrite it due to it's previous format being very glued together and in general it not going very in-depth into certain concepts.

The entire point of the manual has always been to explain these concepts in a way where they are very simple to understand, because in my opinion learning from things like academic papers is hard and the layout of the information is always weird as well as the language used is often over-complicated for no reason.

I believe a lot of the concepts can be explained in a more simple fashion or in other words where even the most high-grade dummy can understand.

I have always been bad at taking information in and the way academic papers are usually constructed never helped with that, so this is for the people that have a similar problem.

This time I want to expand on the previously explained concepts as well as explore some non-JVM reverse engineering.

That means this will also include native RE (x86\_64 mainly).

I will try to go more in-depth with the concepts I have previously documented but as always I am just one person and updates might take a long time so contributions are always welcome and would help a lot.

The original iteration of the manual saw a decent amount of attention from people and was pretty successful which is why I am continuing it. My main goal which I said before is ease of understanding has also been mostly achieved as I've seen a lot of readers say it is easy to understand and very straight-forward.

Now that I'm done yapping away you may continue reading. I hope you enjoy it and I hope it helps on your journey.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://trillium-2.gitbook.io/re-manual/home.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
