All Projects → ViRb3 → jvm-dump-proxy

ViRb3 / jvm-dump-proxy

Licence: other
A proxy DLL for Windows to dump JVM classes at JNI level

Programming Languages

c
50402 projects - #5 most used programming language
C++
36643 projects - #6 most used programming language
CMake
9771 projects

Projects that are alternatives of or similar to jvm-dump-proxy

jni-bind
JNI Bind is a set of advanced syntactic sugar for writing efficient correct JNI Code in C++17 (and up).
Stars: ✭ 42 (-20.75%)
Mutual labels:  jvm, jni
sbt-jni
SBT Plugin to ease working with JNI
Stars: ✭ 110 (+107.55%)
Mutual labels:  jvm, jni
imgui-java
JNI based binding for Dear ImGui
Stars: ✭ 270 (+409.43%)
Mutual labels:  jvm, jni
Fake Jni
An implementation of the JNI and JVMTI with support for direct interaction between natively registered classes and JVM objects.
Stars: ✭ 20 (-62.26%)
Mutual labels:  jvm, jni
Dumpclass
Dump classes from running JVM process.
Stars: ✭ 156 (+194.34%)
Mutual labels:  jvm, dump
Android Disassembler
Disassemble ANY files including .so (NDK, JNI), Windows PE(EXE, DLL, SYS, etc), linux binaries, libraries, and any other files such as pictures, audios, etc(for fun)files on Android. Capstone-based disassembler application on android. 안드로이드 NDK 공유 라이브러리, Windows 바이너리, etc,... 리버싱 앱
Stars: ✭ 250 (+371.7%)
Mutual labels:  dll, jni
jni-bindgen
Generate Rust JVM FFI wrappers around APIs defined by .jar or .class files, because maintaining your own hand-written bindings is an exercise in boredom, soundness bugs, and pain.
Stars: ✭ 55 (+3.77%)
Mutual labels:  jvm, jni
Stackparam
JVM agent to add method parameters to Java stack traces
Stars: ✭ 90 (+69.81%)
Mutual labels:  jvm, jni
Jni By Examples
🎇Fun Java JNI By Examples - with CMake and C++ (or C, of course!) ‼️ Accepting PRs
Stars: ✭ 99 (+86.79%)
Mutual labels:  jvm, jni
Inline Java
Haskell/Java interop via inline Java code in Haskell modules.
Stars: ✭ 197 (+271.7%)
Mutual labels:  jvm, jni
Android
Swift library for Android
Stars: ✭ 48 (-9.43%)
Mutual labels:  jvm, jni
rake
A Java library for Rapid Automatic Keyword Extraction (RAKE) 🍂
Stars: ✭ 23 (-56.6%)
Mutual labels:  jvm
hello-kotlin-multiplatform
Multiplatform Kotlin Hello World (Android/Java/JavaScript)
Stars: ✭ 64 (+20.75%)
Mutual labels:  jvm
Godot3-Win64-LSW-Build
Modularized build of Godot 3 ( Win x64 ) with MSVC without SCons will be updated after Godot 4 is published
Stars: ✭ 18 (-66.04%)
Mutual labels:  dll
pikt
🎨 Image-based poetic programming language.
Stars: ✭ 72 (+35.85%)
Mutual labels:  jvm
singlefile
featured cs:go internal hack, one file and less than 1000 lines.
Stars: ✭ 47 (-11.32%)
Mutual labels:  dll
backlog-board
This is Kanban Board connected to Backlog
Stars: ✭ 18 (-66.04%)
Mutual labels:  jvm
NativeGL demo
此程序使用android native代码实现EGL,并使用SurfaceView作为OpenGL绘图窗口。即可提高图形渲染性能,又可使用java层定义的图形界面
Stars: ✭ 43 (-18.87%)
Mutual labels:  jni
SharpUnhooker
C# Based Universal API Unhooker
Stars: ✭ 255 (+381.13%)
Mutual labels:  dll
Latte-lang
100% Java compatibility and Functional Programming.
Stars: ✭ 128 (+141.51%)
Mutual labels:  jvm

JVM Dump Proxy

A proxy DLL for Windows to dump JVM classes at JNI level.

Introduction

Some Java programs use reflection to hide their code by loading and executing classes dynamically. You can dump them from memory, but what if they are unloaded right after they execute? You could edit rt.jar and place a hook on various reflection methods. But what if the program uses the native class loading methods directly, bypassing any bytecode-level hooks?

This project aims to be a universal solution to all your dumping needs. By hooking at the lowest reliably accessible JNI level, it will dump all classes as they are being loaded.

Limitations

  • x64 only
  • Only hooks DefineClass*. It is possible to bypass this method by implementing your own class loader in JNI.

Usage

Download the latest release. Place version.dll in your Java bin directory, next to java.exe. You may want to use a separate Java installation so you don't affect all processes. On your desktop, create a new directory called JVMDUMP.

When you run any program with the modified Java installation, you will see a message box with the hooking result. Once you press OK, all loaded classes will be saved under the directory on your desktop.

FAQ

  • Q: I am getting Error 2
    A: JVMDUMP is not accessible on your desktop
  • Q: But duplicate classes?
    A: They will be appended with a number, nothing will be overwritten

Technical details

proxy.h, library.def

A simple proxy DLL implementation to inject into the JVM painlessly and reliably. For more information, check the references.

hook.cpp

Installs the hooks that redirect methods to our code. Powered by mhook.

dump.h

The class dumping logic.

parser.h

A fast and simple Java class parser. It will parse the class name of each hooked byte buffer and use it to save the file under the appropriate name.

Compilation

  • mingw-w64 7.0.0+
  • CMake 3.16+

References

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].