大神论坛

找回密码
快速注册
查看: 409 | 回复: 0

[Android Tools] masxinlingvonta —— Java so加固混淆保护器

主题

帖子

8

积分

初入江湖

UID
224
积分
8
精华
威望
16 点
违规
大神币
68 枚
注册时间
2021-09-21 08:30
发表于 2021-10-05 22:06
本帖最后由 REXCOOL 于 2021-10-05 22:06 编辑

masxinlingvonta

主要用来将Java字节码编译为LLVM-IR或者是底层代码

如今对Java桌面端程序的保护主要为基于字节码的代码混淆和今天我们要介绍的这种保护方案,masxinlingvonta (下称MLV)正实现了这种方案。
通过这种保护方案,可以将Java字节码编译为二进制文件,而使用各种对程序进行强力保护。

但这种方案在带来极大的代码保护强度下,也会带来十分严重的性能问题,因为这种方案主要是使用JNI实现的。
其中,大部分对JVM指令的实现都是通过了JNI,只有少数算术运算是独立实现的。
所以,这种方案将只会针对某些特殊的方法进行保护。

请注意:本项目仍不成熟,不适合用于生产环境,请自行测试。

特性

  1. 自动生成LinuxWindows二进制文件。
  2. 大多数最新的 JVM虚拟机指令集
  3. Java 异常处理。
  4. Kotlin.

还有部分未支持或未完全支持的内容,请前往Github项目页查看。

使用

环境

  1. LLVM: 将生成的LLVM-IR编译成二进制文件。
  2. Maven: 用于构建本项目。
  3. Java 11
  4. Windows SDKVS C++ Support

准备

要调用native修饰的方法,需要先加载二进制文件。所以,我们要在程序入口处使用已经提前写好了的NativeLoader

public void main(String... args) {
NativeLoader.loadNatives();
}

在我的分支中,我对这一过程实现了自动化。所以,如果您使用本文章提供的成品,则不需要这一步。

指定函数 (Include)

1. 声明

通过声明,我们可以简单的对函数进行指定。

@Outsource
public static void helloNative() {
System.out.println("This method is heavily protected!");
}

2. 配置文件

项目同样提供了另一个方案,我们可以通过配置文件对函数进行指定。

{
"additionalMethodsToCompile": [
{
"owner": "me/ultrapanda/Main",
"name": "helloNative",
"desc": "()V"
}
]
}

CLI 选项

运行

编译到特定平台:
java -jar masxinlingvonta-cli.jar -i input.jar -o obfuscated.jar -compileFor windows,linux -llvmDir "C:\Program Files\LLVM\bin"
编译到LLVM-IR:
java -jar masxinlingvonta-cli.jar -i input.jar -o obfuscated.jar -ll output.ll

打包

若您使用了NativeLoader, 您需要将编译出的文件添加到输出JAR文件中的META-INF/natives目录下。

生成样本

值得注意的

垃圾回收

本地引用只有在方法返回之后才会被回收,下面的例子会导致潜在的内存泄露。

@Outsource
private void foo(SocketServer server)throws Exception{
while (true) {
Socket sock = server.accept();
// ...

// 正常情况下,JVM虚拟机会在此时进行垃圾回收。
}
} // 但现在,只有在方法返回后,masxinlingvonta 将会进行垃圾回收。

所以,要排除这种潜在的内存泄露问题,你需要将内部循环展开到一个函数中。

@Outsource
private void foo(SocketServer server)throws Exception{
while (true) {
bar(server);
}
}

@Outsource
private void foo(SocketServer server)throws Exception{
Socket sock = server.accept();
// ...
// 将会在这里进行垃圾回收
}


下方隐藏内容为本帖所有文件或源码下载链接:

游客你好,如果您要查看本帖隐藏链接需要登录才能查看, 请先登录

返回顶部