{"id":26896669,"url":"https://github.com/roger1337/JDBG","last_synced_at":"2025-04-01T04:01:23.731Z","repository":{"id":278328197,"uuid":"921949141","full_name":"roger1337/JDBG","owner":"roger1337","description":"Java Runtime Reverse Engineering and Debugging Tool","archived":false,"fork":false,"pushed_at":"2025-02-19T06:50:18.000Z","size":35467,"stargazers_count":76,"open_issues_count":1,"forks_count":7,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-02-19T07:31:15.441Z","etag":null,"topics":["dynamic-analysis","java","jni","jvmti","reverse-engineering","reverse-engineering-tools"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/roger1337.png","metadata":{"files":{"readme":"README.MD","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-01-24T23:41:13.000Z","updated_at":"2025-02-19T07:00:42.000Z","dependencies_parsed_at":"2025-02-19T07:41:26.778Z","dependency_job_id":null,"html_url":"https://github.com/roger1337/JDBG","commit_stats":null,"previous_names":["roger1337/jdbg"],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/roger1337%2FJDBG","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/roger1337%2FJDBG/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/roger1337%2FJDBG/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/roger1337%2FJDBG/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/roger1337","download_url":"https://codeload.github.com/roger1337/JDBG/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246580463,"owners_count":20800110,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dynamic-analysis","java","jni","jvmti","reverse-engineering","reverse-engineering-tools"],"created_at":"2025-04-01T04:01:22.241Z","updated_at":"2025-04-01T04:01:23.712Z","avatar_url":"https://github.com/roger1337.png","language":"C++","funding_links":[],"categories":["C++"],"sub_categories":[],"readme":"# JDBG\n\n![](https://img.shields.io/github/stars/roger1337/JDBG.svg) ![](https://img.shields.io/github/forks/roger1337/JDBG.svg) ![](https://img.shields.io/github/release/roger1337/JDBG.svg) ![](https://img.shields.io/github/issues/roger1337/JDBG.svg) \n\nJDBG is a powerful Java debugger and reverse engineering tool that operates at runtime. It is attachable and is not limited by agent restrictions.\n\n[![Join Our Discord](https://discord.com/api/guilds/1343030315194519685/widget.png?style=banner2)](https://discord.gg/ezKPhhtdX8)\n\n![Bytecode Analysis](images/breakpoint.png)\n![Heap Analysis](images/graph.png)\n\nJDBG leverages an injected DLL along with JNI and JVMTI to provide deep insight into Java applications.\n\n## Features\n- Class Analysis\n  - Analyse decompiled classes at runtime\n  - Analyse method bytecode and field definitions at runtime\n  - Add classes to object analysis\n  - Dynamically set breakpoints in bytecode\n     - Inspect the stack trace\n     - Inspect local variable values\n  - Planned Features\n     - bytecode instrumentation and class redefinitions\n     - static variable modification\n     - Static field watching\n     - Local variable modification for breakpoints\n     - Add object from stack in breakpoint to object analysis\n- Object Analysis\n  - Add classes to object workspace\n  - View all instances of a class\n  - Apply filters using the Exprtk C++ library to obtain relevant objects\n     - Filters support recursive searches, e.g. obj.field1.field2 \u003e 3 or 'hello' in obj.field1\n     - Planned support for arrays\n  - Observe object values (such as strings) and fields\n  - Generate graphs based on the heap relationships of objects\n     - Obtain pointer paths to specific objects, useful in determining classes from which they originate (especially for strings)\n  - Planned features\n     - Set field values\n\n\n## How to use\n\nTo use JDBG, you must have a JVM running Java 17 or higher.\n\n### Releases\n\nYou can download and run it in the releases tab of this project.\n\n### Building it yourself\n\nThe java client is built in Intellij while the dll is built in Visual Studio\n\nTo build the dll, you must add the /includes of your jdk to the include path (For things like jni.h and jvmti.h)\nYou must also have the boost library for C++ installed.\n\nYou must add the dll to the /assets folder of the client\nFurthermore, you must build the JDBG 32bit Helper executable and add it to the assets folder of the client.\n- The reason for this is to get the proper base address of kernel32.dll and LoadLibrary for 32 bit applicatons.\n\n\n\n## Contributing\n\nany and all contributions to this project would be greatly appreciated.\nSome examples of possible contributions include:\n   - Cleaning up messy code\n   - Adding comments\n   - Implementing design patterns for cleaner code\n   - Feature implementations (Such as the planned ones above)\n\nThank you\n\n## Licensing\n\nThis project is licensed under the Apache-2.0 License. Furthermore, JDBG is intended only for educational and legal research purposes. It must not be used to circumvent copy protection, license verification, or other security mechanisms. The author is not responsible for any misuse of this tool. Users must comply with all applicable laws.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Froger1337%2FJDBG","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Froger1337%2FJDBG","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Froger1337%2FJDBG/lists"}