[发明专利]一种JAVA程序反混淆方法及终端有效
申请号: | 201711418874.9 | 申请日: | 2017-12-25 |
公开(公告)号: | CN108153518B | 公开(公告)日: | 2021-02-26 |
发明(设计)人: | 张涛;苏再添;吴少华 | 申请(专利权)人: | 厦门市美亚柏科信息股份有限公司 |
主分类号: | G06F8/20 | 分类号: | G06F8/20;G06F8/53 |
代理公司: | 深圳市博锐专利事务所 44275 | 代理人: | 张明 |
地址: | 361000 福建省厦门*** | 国省代码: | 福建;35 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 java 程序 混淆 方法 终端 | ||
1.一种JAVA程序反混淆方法,其特征在于,包括以下步骤:
S1:检测JAVA程序中存在的混淆规则,根据所述规则建立重命名方案;
根据JAVA程序对应的字节码中的调用指令,得到与调用指令对应的第一索引;根据所述第一索引及预设的第二索引集合,重命名所述JAVA程序中的包名、类名、接口名及成员变量,得到第一JAVA程序;所述第二索引集合包括JAVA程序中的包名、类名、接口名及成员变量分别对应的索引;
所述S1即静态重命名:在未运行的情况下通过分析指令中使用的类名、接口、方法,对每个类初步建立一个调用索引,重命名时候根据所述调用索引的记录将全部应用到该包名/类名/接口名/成员变量的对象全部替换;
S2:通过OpenJDK记录Java虚拟机执行所述字节码时的执行信息,所述执行信息包括执行字节码时的调用堆栈、调用函数的类型以及语句执行流程;
S3:根据所述调用堆栈和调用函数的类型,创建与所述调用堆栈对应的第三索引,以及与所述调用函数的类型对应的第四索引;根据所述第三索引及第四索引,删除所述第一JAVA程序中未调用的成员变量及函数,得到第二JAVA程序;
S4:根据所述语句执行流程,删除所述第二JAVA程序中未执行的语句,得到优化JAVA程序;根据所述优化JAVA程序,生成反混淆JAR包。
2.根据权利要求1所述的一种JAVA程序反混淆方法,其特征在于,所述S1具体为:
根据预设的JAR包,得到JAVA程序及与JAVA程序对应的字节码;
根据JAVA程序的混淆规则,重命名所述JAVA程序中的包名、类名、接口名及成员变量,得到第三JAVA程序;
根据所述字节码,获取得到调用指令;
创建与所述调用指令对应的索引,得到第一索引;
根据所述JAVA程序中的包名、类名、接口名及成员变量分别对应的索引,创建第二索引集合;
根据所述第一索引及所述第二索引集合,重命名所述第三JAVA程序中的包名、类名、接口名及成员变量,得到所述第一JAVA程序。
3.根据权利要求1所述的一种JAVA程序反混淆方法,其特征在于,所述S3具体为:
根据所述调用堆栈,创建与所述调用堆栈对应的第三索引;
根据调用函数的类型,创建与所述调用函数的类型对应的第四索引;
根据所述第三索引及所述第四索引,重命名第一JAVA程序中的包名、类名、接口名及成员变量,得到第四JAVA程序;
根据所述第三索引及第四索引,删除所述第四JAVA程序中未调用的成员变量及函数,得到所述第二JAVA程序。
4.根据权利要求3所述的一种JAVA程序反混淆方法,其特征在于,“根据调用函数的类型,创建与所述调用函数的类型对应的第四索引”具体为:
根据JAVA反射机制,分析JAVA程序的反射代码,得到反射代码中所使用的包名、类名、接口名及成员变量;
根据所述调用函数的类型和反射代码中所使用的包名、类名、接口名及成员变量,创建得到相应的第四索引。
5.根据权利要求1所述的一种JAVA程序反混淆方法,其特征在于,所述S4具体为:
根据所述语句执行流程,分析所述字节码中未被执行的程序语句,删除所述第二JAVA程序与所述未被执行的程序语句对应的JAVA语句,得到优化JAVA程序;
根据所述优化JAVA程序,生成反混淆JAR包。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于厦门市美亚柏科信息股份有限公司,未经厦门市美亚柏科信息股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201711418874.9/1.html,转载请声明来源钻瓜专利网。
- 上一篇:数据处理方法和装置
- 下一篇:一种目标智能跟踪方法通用设计框架