myj2c一款支持springboot的混淆工具

MYJ2C是一款Java混淆工具,将编译好的Class文件转换为C语言代码,然后交叉编译(您不用自己配置编译环境,MYJ2C自动完成)可以生成Windows,Linux,Mac系统X86,ARM平台的动态链接库文件后,通过Java Native Interface 重新链接到原始程序。在此过程结束时,包含原始方法的.class文件的字节码中不会保留原始方法的信息。编译后的class文件对Java逆向工程工具完全隐藏。使用MYJ2C不需要任何Java JNI或C代码的知识。MYJ2C支持所有Java语言特性,可以在现有的代码库中使用。

MYJ2C是一个强大的混淆器,但其有效性可能会受到其翻译的代码的限制。考虑以下几点:

不安全的写法

public class App {
public static void main(String[] args) {
if(!checkLicence()) {
System.err.println(“Invalid licence”);
return;
}
initApp();
runApp();
}

private static native boolean checkLicence(); // Protected by MYJ2C

private static native void initApp(); // Protected by MYJ2C

private static native void runApp(); // Protected by MYJ2C

}

在此示例中,即使checkLicence代码受MYJ2C保护,攻击者也很容易修改主方法,直接返回 true 达到破解目的。

public class App {
public static void main(String[] args) {
if(!checkLicence()) {
System.err.println(“Invalid licence”);
return;
}
initApp();
runApp();
}

private static boolean checkLicence() {
    return true; //这样就可以达到破解目的,绕过正常授权验证方法
}

private static native void initApp(); // Protected by MYJ2C

private static native void runApp(); // Protected by MYJ2C

}

比较好的写法

public class App {
public static void main(String[] args) {
checkLicenceAndInitApp();
runApp();
}

private static native void checkLicenceAndInitApp(); // Protected by MYJ2C

}

在这里,攻击者即使修改CheckLicensandInApp的方法,跳过授权部分但是也不知道里面要执行哪些初始化功能,修改之后应用程序将无法正常运行(因为它将无法初始化)。

推荐使用MYJ2C保护应用程序的初始化代码,因为它只在运行的时候执行一次,初始化方法不会反复被执行不用担心有性能问题。

常见问题

无法编译动态链接库

答:可能是路径中有中文或特殊字符,导致zig无法编译,修改路径放到非中文或特殊字符的路径下执行编译

需要编译全平台吗

答:默认配置是编译windows,linux,mac系统支持64位和arm平台,您可以根据自己的需求配置编译的平台

是否开启字符串混淆,流程混淆

答:开启混淆字符串、流程混淆功能,编译时间会延长,编译的动态链接库文件体积会增加,但是安全性也会提升,请根据实际情况选择是否开启

MYJ2C会对我的应用程序的性能产生重大影响吗?

答:许多代码保护工具必须在性能和安全性之间进行权衡。我们建议您仅在敏感代码或性能不重要的代码上使用它。

MYJ2C是否支持lambdas/streams/exceptions/threads/locks/。。。?

答:MYJ2C对编译的Java字节码进行操作,支持Java 8或更高版本的JVM编译的任何字节码。MYJ2C支持Java中的所有语言特性,并且还支持在JVM上运行的其他编程语言,如 kotlin。

与自己编写JNI方法相比,MYJ2C有哪些优势?

答:编写使用Java本机接口的代码非常困难,而且这种代码通常更难调试。MYJ2C允许您编写(和测试!)Java代码,请使用Java中的所有代码。此外: MYJ2C可以翻译Java混淆器的输出,如Zelix Klassmaster或Stringer。 MYJ2C可以在Java API中转换在C中没有直接等价的东西,如lambdas、方法引用和流。 使用MYJ2C,您不需要知道如何使用JNI或C,也不需要编写在运行时将本机库链接到应用程序的代码(MYJ2C自动注入)。 MYJ2C可以翻译现有的Java代码——您不需要浪费时间重写已经完成的应用程序部分。

在使用MYJ2C混淆之前,我可以对它们应用额外的混淆处理吗?

答:当然,这是可能的,尽管我们不能保证任何代码混淆工具的兼容性。此外,如果在运行MYJ2C之前已经使用了Java混淆工具,则进一步混淆文件可能是不必要的。

在运行MYJ2C之后,我可以对输出JAR文件应用额外的混淆处理吗?

答:对已用MYJ2C混淆的任何方法/字段/类使用名称混淆将导致运行时由于链接不满足而崩溃。您可以自由使用字符串混淆、引用混淆、资源加密等。

运行报LOAD ERROR:Illegal key size异常

答:替换jdk/jre/lib/security目录中的local_policy.jar和US_export_policy.jar文件,文件在jce_policy-8.zip 右键另存为中,下载解压即可获取到以上文件
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值