A project to cause (controlled) destruction on your jvm application

Overview

Perses

Build Status License Gitter

Cause (controlled) destruction to your jvm application

Perses (Ancient Greek: Πέρσης) was the Titan god of destruction. His name is derived from the Ancient Greek word perthō ("to destroy")

What is the goal.

Perses allows you to dynamically inject failure/latency at the bytecode level, without the need to add any dependency or restart/deploy the target app. Just load 2 jars at the same enviroment the target JVM is running and execute java -jar perses-injector.jar <Target Application name>.

Perses is designed to enable developpers and QAs to easily reproduce & debug tricky production issues.

For more information about how Perses works under the hood, how to set everything up & how to use it please visit the wiki.

How to install

All jars are available here. Select the version that matches the target application.

  1. Add perses-agent.jar & perses-injector-jar-with-dependencies.jar in the same environment as the target application.
  2. Execute java -jar perses-injector.jar <TARGET APPLICATION NAME>.
  3. Execute java -jar perses.jar
  4. Visit localhost:8777

For more information about how Perses works under the hood, how to set everything up & how to use it please visit the wiki.

You might also like...

Bank Statement Analyzer Application that currently runs in terminal with the commands: javac Application.java java Application [file-name].csv GUI coming soon...

Bank Statement Analyzer Application that currently runs in terminal with the commands: javac Application.java java Application [file-name].csv GUI coming soon...

May 21, 2022

This open source project allows you to easily integrate Camunda's External Task Clients into Micronaut projects: simply add a dependency in your Micronaut project

micronaut-camunda-external-client This open source project allows you to easily integrate Camunda 's External Task Clients into Micronaut projects. Mi

Dec 18, 2022

Packages your JAR, assets and a JVM for distribution on Windows, Linux and Mac OS X

About Packages your JAR, assets and a JVM for distribution on Windows, Linux and macOS, adding a native executable file to make it appear like a nativ

Dec 24, 2022

Get inside your JVM

Get inside your JVM

nudge4j · nudge4j is a tiny piece of code to help great developers understand code better, debug less, have more fun. Overview With nudge4j you can: c

Nov 4, 2022

Packages your JAR, assets and a JVM for distribution on Windows, Linux and Mac OS X

About Packages your JAR, assets and a JVM for distribution on Windows, Linux and macOS, adding a native executable file to make it appear like a nativ

Jan 5, 2023

:chart_with_upwards_trend: Capturing JVM- and application-level metrics. So you know what's going on.

Metrics 📈 Capturing JVM- and application-level metrics. So you know what's going on. For more information, please see the documentation Versions Vers

Jan 1, 2023

:chart_with_upwards_trend: Capturing JVM- and application-level metrics. So you know what's going on.

Metrics 📈 Capturing JVM- and application-level metrics. So you know what's going on. For more information, please see the documentation Versions Vers

Dec 30, 2022

Distributed Tracing, Metrics and Context Propagation for application running on the JVM

Kamon Kamon is a set of tools for instrumenting applications running on the JVM. The best way to get started is to go to our official Get Started Page

Dec 25, 2022

Spring-boot application to demo JVM HEAP and Native memory leak

Description This repo can be used as demo repo for finding memory leaks. Example spring-boot project to show how to find and fix JVM HEAP memory leak

Jul 22, 2022

Simple terminal based JVM application that gives the status of a Minecraft server

MCStatus This is an incredibly simple terminal-based Minecraft server status checker

Feb 24, 2022

JVM Explorer is a Java desktop application for browsing loaded class files inside locally running Java Virtual Machines.

JVM Explorer is a Java desktop application for browsing loaded class files inside locally running Java Virtual Machines.

JVM Explorer JVM Explorer is a Java desktop application for browsing loaded class files inside locally running Java Virtual Machines. Features Browse

Nov 30, 2022

Dynamic loading and compiling project based on JVM

camphor 基于jvm的弹性加载及编译中间件(Elastic loading and compiling middleware based on JVM) camphor_0.0.1 项目简介 该项目定位为弹性中间件,能够使系统在不重启的情况下完成增量代码文件的动态编译和加载 模块介绍 camp

Jan 22, 2022

Replicate your Key Value Store across your network, with consistency, persistance and performance.

Chronicle Map Version Overview Chronicle Map is a super-fast, in-memory, non-blocking, key-value store, designed for low-latency, and/or multi-process

Dec 29, 2022

Replicate your Key Value Store across your network, with consistency, persistance and performance.

Chronicle Map Version Overview Chronicle Map is a super-fast, in-memory, non-blocking, key-value store, designed for low-latency, and/or multi-process

Dec 29, 2022

Aesthetirat, your neighborhood pet rat that is inside your PC!

Aesthetirat, your neighborhood pet rat that is inside your PC!

aesthetirat Aesthetirat, your neighborhood pet rat that is inside your PC! Disclaimer: This is for educational purposes, and I do not take responsibil

Dec 2, 2022

Generate a dynamic PAC script that will route traffic to your Burp proxy only if it matches the scope defined in your Burp target.

Generate a dynamic PAC script that will route traffic to your Burp proxy only if it matches the scope defined in your Burp target.

Burp PAC Server This Burp Extension generates a dynamic Proxy Auto-Configuration (PAC) script that will route traffic to your Burp proxy only if it ma

Jun 13, 2022
Comments
  • Prevent instrumentation at methods without body.

    Prevent instrumentation at methods without body.

    Perses will handle gracefully instrumention of methods without body, it will also not include such method when navigating invoked mehtods or methods of class.

    opened by nicolasmanic 0
  • Creating perses-lib

    Creating perses-lib

    Perses Library

    Now the Parses can be used as a dependency.

    Perses can't be compared with a mock because with Perses you change the bytecode. The main goal for this lib was motivated to many questions asking it is possible to use Perses in the integration tests.

    Usage

    PersesAttacker.loadAgent()
                    .classPath("com.tradeshift.perses.utils.FactoryUtils")
                    .method("calculateCode")
                    .injectException("Exception")
                    .attack();
    

    Target App POM

    After the JDK9, the self-attachment (agent) is forbidden (https://github.com/raphw/byte-buddy/issues/295), so, we need to pass the argument -Djdk.attach.allowAttachSelf for the VM.

    <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>2.22.1</version>
                    <configuration>
                        <argLine>
                            -Djdk.attach.allowAttachSelf
                        </argLine>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    
    needs_analysis 
    opened by juliofalbo 0
Releases(0.9.2-jdk9)
Owner
Nikolaos Kanakis
Nikolaos Kanakis
Highly-available version-controlled service configuration repository based on Git, ZooKeeper and HTTP/2

Visit the official web site for more information. Central Dogma Central Dogma is an open-source, highly-available and version-controlled service confi

LINE 503 Dec 20, 2022
Java controlled pub command execution

OPIUM - Operate pub interface under machine. This package allows operating pub command with Java object only and return console context. Perquisites C

Project Will Pub 1 Jan 23, 2022
ThirdEye is an integrated tool for realtime monitoring of time series and interactive root-cause analysis.

ThirdEye is an integrated tool for realtime monitoring of time series and interactive root-cause analysis. It enables anyone inside an organization to collaborate on effective identification and analysis of deviations in business and system metrics. ThirdEye supports the entire workflow from anomaly detection, over root-cause analysis, to issue resolution and post-mortem reporting.

null 87 Oct 17, 2022
This is a Bukkit-Event based AntiCheat created cause of a challenge.

XAC - XAntiCheat This is a Bukkit-Event based AntiCheat made out of a challenge with a friend of mine. Its not recommandable to use and also a bit exp

ytendx 3 Apr 6, 2022
An assistance platform made using Spring framework that analyses your code, and helps you either to start a devops project, or to turn an existing project into a devops project using open source software (Git, Docker, Jenkins..)

DevOpsify Description An assistance platform made using Spring framework that analyses your code, and helps you either to start a devops project, or t

obaydah bouifadene 14 Nov 8, 2022
JVM version of Pact. Enables consumer driven contract testing, providing a mock service and DSL for the consumer project, and interaction playback and verification for the service provider project.

pact-jvm JVM implementation of the consumer driven contract library pact. From the Ruby Pact website: Define a pact between service consumers and prov

Pact Foundation 962 Dec 31, 2022
Your Software. Your Structures. Your Rules.

jQAssistant Master Repository We splitted jQAssistant in multiple single repositories to be able to build a better and more flexible build an release

null 179 Dec 19, 2022
archifacts is a library to extract your architectural concepts out of your application's code

archifacts is a free (Apache 2.0 license) library for describing and detecting architectural building blocks and their relationships in your Java appl

null 45 Nov 29, 2022
Lib-Tile is a multi Maven project written in JavaFX and NetBeans IDE 8 and provides the functionalities to use and handle easily Tiles in your JavaFX application.

Lib-Tile Intention Lib-Tile is a multi Maven project written in JavaFX and NetBeans IDE and provides the functionalities to use and handle easily Tile

Peter Rogge 13 Apr 13, 2022