Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

feifa168/ModifyJar

Open more actions menu

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 

Repository files navigation

简介

ModifyJar包含两个模块Encrypt和Decrypt。需要配合NativeEncrypt工程和NativeDecrypt工程使用。

  • Encrypt模块使用NativeEncrypt库加密jar包中指定的class文件。使用dom4j解析xml。
  • Decrypt模块使用NativeDecrypt库加载class时解密java字节码文件。,该功能用c++实现,请参见NativeDecrypt
  • Encrypt可以对自身进行加密,请使用加密后的jar包,具体使用参考用法。

依赖

  • 加密动态库libNativeEncrypt工程和NativeDecrypt
  • enc_config.xml,用于配置加密哪些字节码文件。
  • Dom4j+jaxen,用于解析xml。

用法

  • 加密

java -jar NativeEncrypt.jar [-xml config.xml -src xxx.jar -dst xxx_encrypt.jar] 参数可有可无,如果没有-xml字段则默认为enc_config.xml,不设置参数-src和-dst则使用xml中的src和dst字段,配合enc_config.xml使用。 enc_config.xml格式如下

<?xml version="1.0" encoding="utf-8"?>

<encrypt>
    <src>src.jar</src>
    <dst>src_encrypt.jar</dst>
    <files>
        <file type="package">com.shell.run</file>
        <file type="package">com.ft.config</file>
    </files>
</encrypt>
  • 解密

java -agentlib:libNativeDecrypt[=config.xml] xxx_encrypt.jar paramers... 中括号若无内容则使用enc_config.xml。

原理

java agent 有三种方法加载动态库

  • agentlib

    使用java参数 java -agentlib:libxxx,实现jvmti.h文件中Agent_OnLoad函数,在jvm启动时加载; Agent_OnAttach在附加到java进程时加载。设置回调函数解密class文件。

  • agentpath

    等同于agentlib,agentpath是文件全名,带扩展名,agentlib不带扩展名。

  • javaagent java实现

    javaagent 是java的一种实现方式,agentlib和agentpath是native实现方式。功能类似于Agent_OnLoad和Agent_OnAttach。

About

加密字节码文件

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •  
Morty Proxy This is a proxified and sanitized view of the page, visit original site.