Lacuna is Java a process memory manipulation library and UI for Windows and Linux.
This project was started as a course project. It is feature complete, but it is not very efficient. The main point of interest for you may be that the library contains good examples for using JNA to enumerate processes and manipulating process memory on both Windows and Linux. Be wary of lots of premature abstraction. Notice also that the library makes assumptions about the sizes of the primitives.
The Lacuna library (lacuna-core
) contains classes for enumerating processes, and reading and writing a process's memory on both Windows and Linux. Common primitive datatypes are supported in addition to raw bytes. The library is quite inefficient currently, as it opens and closes a process handle on each read or write (#14), and throws exceptions to signify failed reads (#12).
The GUI (lacuna-ui
) can currently enumerate the processes, and read and write raw bytes with a hex editor component. Common data types can be written with a data inspector gadget.
Tested platforms:
- Windows:
- Microsoft Windows 8.1 Pro (Build 9600)
- Microsoft Windows 10 Pro N (Build 14393)
- Linux:
- Ubuntu 16.04.1 LTS (Kernel 4.4.0-59-generic x86_64 GNU/Linux)
- Javadoc
- Documentation (spec, diagrams, reports)
- Trello
See Releases for ready jars. Run with java -jar lacuna-ui-<VERSION>.jar
For compilation instructions, see below.
- Install Apache Maven. Lacuna uses Maven to manage dependencies and lifecycle scripts.
- Clone or download this repository.
- Go to the project folder:
cd lacuna/lacuna
- Compile and package the project:
mvn clean install package
. This step generates the .jar files in each of the modules' target/ directories.- You may optionally choose to skip running unit tests:
mvn clean install package -DskipTests
- Note: the
install
phase is needed so thatlacuna-ui
findslacuna-core
.
- You may optionally choose to skip running unit tests:
- Run the Lacuna UI:
java -jar lacuna-ui/target/lacuna-ui-<VERSION>.jar
Lacuna is licensed under the MIT License (Expat). See LICENSE. Lacuna uses third party libraries that are distributed under their own terms (see LICENSE-3RD-PARTY).