[发明专利]一种防止Java程序被反编译的方法有效
申请号: | 202010424628.X | 申请日: | 2020-05-19 |
公开(公告)号: | CN112131536B | 公开(公告)日: | 2021-07-20 |
发明(设计)人: | 蔡维德 | 申请(专利权)人: | 北京天德科技有限公司;天民(青岛)国际沙盒研究院有限公司 |
主分类号: | G06F21/14 | 分类号: | G06F21/14 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 102488 北京市房山区阎富*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 防止 java 程序 反编译 方法 | ||
1.一种防止Java程序被反编译的方法,其步骤为:
(1)需要运行软件一方作为客户端,软件的可执行文件保存在服务端,其中所述可执行文件为JAR包和/或class文件;
(2)所述客户端启动后向所述服务端发送启动请求程序,所述服务端生成类加载器实例并返回给所述客户端;
(3)所述客户端启动所述类加载器实例,并激活所述类加载器实例中的反反编译程序,进行反编译工具检查与禁用,其中所述步骤(3)包括:
(3a)禁用Java虚拟机的内存监控,防止通过恶意拷贝内存文件方式获取可执行文件进行反编译;
(3b)禁止所述反编译工具的运行;
(3c)解析所述客户端的程序是否被恶意改写或存在恶意代码,若有则中断所述客户端的启动;
(4)所述客户端向所述服务端发送获取密码请求,所述密码用于解密所述可执行文件,为一次性临时密码,由所述服务端生成,每次所述客户端启动后,所述服务端都将生成新的所述一次性临时密码,所述一次性临时密码只可被一个所述客户端使用一次,一旦被使用,立即失效,不同的所述客户端之间不可进行密码共享;
(5)所述服务端向所述客户端发送随机的跳转类,所述跳转类可能指向下一个所述跳转类,形成跳转链,也可能包含用于解密所述可执行文件的密码;
(6)所述客户端接收所述跳转类,若所述跳转类指向下一个所述跳转类,则继续向所述客户端发送跳转请求并重复步骤(5),若所述跳转类包含所述密码,则进入下一步;
(7)所述客户端获取到所述密码后,向所述服务端发送所述可执行文件的获取请求,所述服务端返回使用所述密码加密后的所述可执行文件;
(8)所述客户端将获取到的所述可执行文件解密,并通过所述类加载器加载到Java虚拟机运行,所述Java程序启动完毕;
其中,每次所述客户端启动后,所述服务端都将生成新的密码,所述服务端在发送完毕所述可执行文件后或所述客户端启动成功后销毁临时密码,保证所述密码仅会被使用一次;所述服务端为每个所述客户端每次所述启动请求程序生成的所述跳转链的长度和顺序都是不固定的,即所述服务端向所述客户端发送跳转类的次数不定,每个所述跳转类指向新的跳转类或直接返回所述密码,若指向新的所述跳转类,则每个所述跳转类具体的指向对象不固定。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京天德科技有限公司;天民(青岛)国际沙盒研究院有限公司,未经北京天德科技有限公司;天民(青岛)国际沙盒研究院有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010424628.X/1.html,转载请声明来源钻瓜专利网。