beat365 app

反编译破解机器码

反编译破解机器码

技术漫谈反编译破解机器码FANSEA2024-05-082024-09-23反编译破解机器码

这里有个需求:

一个jar程序,需要登录账号密码验证,但是还需要机器码,所以在一些机器能登录,其他机器不能登录,这就可以让部署到公网的程序只让一部分规定的人访问,我想让其他机器也能访问,请问我该怎么做,请为我一些解决方案

当一个JAR程序通过账号密码和机器码验证来限制访问时,通常是为了增强安全性,确保只有指定的用户和机器可以访问。然而,如果你想要让该程序在其他机器上也能访问,你可以考虑以下几种方法:

移除或修改机器码验证:

如果你有程序的源代码,并且知道如何验证机器码,你可以直接移除或修改这部分代码。

如果不能修改源代码,但你有反编译工具(如JD-GUI),你可以尝试反编译JAR,修改相应的代码,然后重新编译。但请注意,这可能会违反软件的许可协议,并且可能会引入新的问题。

获取有效的机器码:

尝试理解机器码是如何生成的。它可能是基于硬件信息(如MAC地址、CPU序列号等)或软件信息(如操作系统版本、已安装软件列表等)生成的。

如果你可以模拟或生成这些条件,你就有可能生成一个有效的机器码。

与开发者或管理员协商:

如果这个程序是由第三方提供的,并且你有合法的使用权限,你可以联系开发者或管理员,请求他们为你生成或提供额外的机器码。

解释你的需求,并说明为什么需要让其他机器也能访问。

使用VPN或代理:

如果机器码验证是基于IP地址或地理位置的,你可以考虑使用VPN或代理服务器来伪装你的IP地址和位置。

这种方法可能不太可靠,因为开发者可能会检测到并使用更复杂的验证方法。

破解或绕过验证(不推荐):

这种方法涉及破解或绕过程序的验证机制,这是非法的,并且可能会导致法律问题。

除此之外,破解或绕过验证也可能会破坏程序的安全性,使你的系统面临风险。

寻找替代方案:

如果这个程序的功能可以通过其他方式实现(例如使用不同的软件或服务),你可以考虑寻找替代方案。

这样不仅可以避免与验证机制相关的问题,还可以为你提供更多的灵活性和选择。

部署私有云或内部网络:

如果你有足够的资源和权限,你可以考虑将程序部署到私有云或内部网络中。

在这种情况下,你可以控制哪些机器可以访问该程序,而无需依赖外部的机器码验证机制。

请注意,在尝试任何方法之前,请确保你了解相关的法律和道德责任,并遵守适用的法律和规定。

Java Decompiler插件反编译jar1java -cp "C:\Program Files\JetBrains\IntelliJ IDEA 2023.2.4\plugins\java-decompiler\lib\java-decompiler.jar" org.jetbrains.java.decompiler.main.decompiler.ConsoleDecompiler -dgs=true D:\code\XYIoT-admin-1.0.0\XYIoT-admin-1.0.0.jar "D:\code\XYIoT-admin-1.0.0\code"

jar程序修改更新

将jar程序解压出来,并把jar程序和解压文件夹放在同一个文件夹里面

修改BOOT-INF代码,单独将修改后的java文件编译成class文件,并在target文件夹里面找到文件,复制粘贴到BOOT-INF文件夹中

执行更新操作

此时代码会更新到XYIoT-admin-1.0.0.jar中

1jar -uvf0 XYIoT-admin-1.0.0.jar BOOT-INF

如果遇到报错AccessDeniedException

123java.nio.file.AccessDeniedException: XYIoT-admin-1.0.0.jar at java.base/sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:89) at java.base/sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:103)

修改文件权限:

查看是否更新成功

将文件反编译查看对应代码是否变动

1java -cp "C:\Program Files\JetBrains\IntelliJ IDEA 2023.2.4\plugins\java-decompiler\lib\java-decompiler.jar" org.jetbrains.java.decompiler.main.decompiler.ConsoleDecompiler -dgs=true D:\code\XYIoT-admin-1.0.0\XYIoT-admin-1.0.0.jar "D:\code\XYIoT-admin-1.0.0\code"

已知机器码和解码工具,现在要做的就是:

方案一:(修改机器码)工具:机器码

登录逻辑中需要在数据库中查询许可证

只需要修改当前机器的机器码为白名单机器码!

方案二:(注入SQL:在数据库生成自己的许可证) 工具:解码工具

防反编译加密法java项目jar包加密,防止反编译代码_jar包加密防止反编译-CSDN博客

将反编译后的截图对比为加密的截图

理清加密原理,并知晓

使用classfinal-maven-plugin插件

在需要加密的项目pom下加入插件

123456789101112131415161718192021 net.roseboy classfinal-maven-plugin 1.2.1 123456 com.xinye.iot application.yml,application-dev.yml,application-local.yml,application-pro.yml XYIoT-common.jar,XYIoT-system.jar,XYIoT-framework.jar package classFinal

参数说明:

12345678910参数说明-file 加密的jar/war完整路径-packages 加密的包名(可为空,多个用","分割)-libjars jar/war包lib下要加密jar文件名(可为空,多个用","分割)-cfgfiles 需要加密的配置文件,一般是classes目录下的yml或properties文件(可为空,多个用","分割)-exclude 排除的类名(可为空,多个用","分割)-classpath 外部依赖的jar目录,例如/tomcat/lib(可为空,多个用","分割)-pwd 加密密码,如果是#号,则使用无密码模式加密-code 机器码,在绑定的机器生成,加密后只可在此机器上运行-Y 无需确认,不加此参数会提示确认以上信息

执行mvn clean将会的到加密的jar包:

执行加密的jar文件1java -javaagent:XYIoT-admin-1.0.0-encrypted.jar -jar XYIoT-admin-1.0.0-encrypted.jar

此时需要输入pom配置的密码!

机器绑定机器绑定只允许加密的项目在特定的机器上运行;

在需要绑定的机器上执行以下命令,生成机器码

1java -jar classfinal-fatjar.jar -C

加密时用code指定机器码。机器绑定可同时支持机器码+密码的方式加密。

1234567 123456 com.xinye.iot application.yml XYIoT-common.jar 810D3E96F20FB9C16B872FD5B92567F3D41D8CD98F00B204E9800998ECF8427ED41D8CD98F00B204E9800998ECF8427E

相关推荐