一种将Java代码等价转换成C++代码的方法技术

技术编号:31580773 阅读:14 留言:0更新日期:2021-12-25 11:24
本发明专利技术涉及信息安全技术领域,具体为一种将Java代码等价转换成C++代码的方法,将待APP进行解包后的dex文件记为集合B;遍历集合B中的dex文件中的所有类,并获取类名、函数名、机器码,并存储记作集合C;通过自定义llvm框架,将Java机器码转为C++代码,写入cpp文件中,对cpp进一步处理、编译,生成静态库文件,将静态库文件和预置基础库文件链接,得到动态库文件F,删除集合C中元素的机器码,修改函数标示,并将其打包得到集合G;将G、F回填至app中,至此Java代码转C++代码结束,本发明专利技术同现有技术相比,针对传统APP代码防护的安全强度不够的问题,通过新的技术手段来提升代码的安全强度。通过新的技术手段来提升代码的安全强度。通过新的技术手段来提升代码的安全强度。

【技术实现步骤摘要】
一种将Java代码等价转换成C++代码的方法


[0001]本专利技术涉及信息安全
,具体为一种将Java代码等价转换成C++代码的方法。

技术介绍

[0002]随着移动互联网的高速发展,移动终端APP成为了人们生活当中的必需品,各种行业、公司的APP组成了丰富的移动生活场景,极大的方便了人们的生活,在各种业务都APP化的过程中,涌现出了大量的安全问题,其中涉及到源码泄露风险、核心技术泄露、用户资金安全以及用户个人信息泄露等,在这个过程中国家一直在完善并制定行业规则以及法律约束移动互联网行业,在通过政策手段来对行业进行安全规范和约束的过程中,必不可少的需要有技术手段的参与。
[0003]市面上已经出现了比较多的移动安全APP加固技术方案,来保护移动APP的安全,其中APP代码的机密性属于最基本得防护手段之一,一般通过对代码的整体加密来保证代码得机密性,但是在代码运行过程中需要对代码进行整体得解密还原,运行内存中会存在明文代码,容易被恶意人员拦截获取到整体得明文代码,后面又引申出来了更高级得代码防护手段,不在对代码进行整体加密,开始对代码里面得函数进行单独得加密,只有运行到对应得函数在进行解密还原,此种技术手段是一个比较大得提升,攻击者不可能一次性的获取到整体得代码文件,但是还是会存在代码在内存中还原的问题,通过技术手段可以获取到所有函数得代码片段,然后再进行组合,可以获取到大部分得函数代码。
[0004]因此,需要设计一种将Java代码等价转换成C++代码的方法,将APP中的Java代码转化为等效的C++代码,提高安全性,防止APP被静态反编译获取源码,防止APP被动态调试获取内存中的Java代码;同时使用此加固技术的APP性能、稳定性、兼容性优于原有的代码防护手段。

技术实现思路

[0005]本专利技术的目的是克服现有技术的不足,提供了一种将Java代码等价转换成C++代码的方法,将APP中的Java代码转化为等效的C++代码,提高安全性,防止APP被静态反编译获取源码,防止APP被动态调试获取内存中的Java代码;同时使用此加固技术的APP性能、稳定性、兼容性优于原有的代码防护手段。
[0006]为了达到上述目的,本专利技术提供一种将Java代码等价转换成C++代码的方法,包括以下步骤:
[0007]S1:将待APP进行解包,记为集合A并分类,dex文件记为集合B;
[0008]S2:遍历集合B中的所有dex文件中的所有类,并获取类名、函数名、机器码,并存储记作集合C;
[0009]S3:遍历集合C中的类名、函数名、机器码,并通过自定义llvm框架,将Java机器码转为C++代码,并写入cpp文件中,添加记为集合D中;
[0010]S4:对集合D中的cpp进一步处理、编译,最终生成静态库文件,记为文件E;
[0011]S5:将文件E和预置基础库文件链接,得到动态库文件F;
[0012]S6:F为将最终的转换结果;
[0013]S7:遍历集合C,删除集合C中元素的机器码,修改函数标示,并将其打包得到集合G;
[0014]S8:将G、F回填至app中,至此Java代码转C++代码结束。
[0015]APP为APK格式的移动端应用软件。
[0016]解包为将APK包的文件后缀修改为ZIP,然后使用解压工具进行解压即可。
[0017]本专利技术同现有技术相比,针对传统APP代码防护的安全强度不够的问题,通过新的技术手段来提升代码的安全强度,实现如下的有益效果:
[0018]防止APP被静态反编译;
[0019]防止APP被动态调试;
[0020]降低由加固导致的性能消耗;
[0021]提升加固后APP的兼容性;
[0022]提升加固后APP的稳定性。
附图说明
[0023]图1为本专利技术的APP加固流程示意图。
具体实施方式
[0024]下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。
[0025]现结合附图对本专利技术做进一步描述。
[0026]参见图1,本专利技术提供一种将Java代码等价转换成C++代码的方法,包括以下步骤:
[0027]S1:将待APP进行解包,记为集合A并分类,dex文件记为集合B;
[0028]S2:遍历集合B中的所有dex文件中的所有类,并获取类名、函数名、机器码,并存储记作集合C;
[0029]S3:遍历集合C中的类名、函数名、机器码,并通过自定义llvm框架,将Java机器码转为C++代码,并写入cpp文件中,添加记为集合D中;
[0030]S4:对集合D中的cpp进一步处理、编译,最终生成静态库文件,记为文件E;
[0031]S5:将文件E和预置基础库文件链接,得到动态库文件F;
[0032]S6:F为将最终的转换结果;
[0033]S7:遍历集合C,删除集合C中元素的机器码,修改函数标示,并将其打包得到集合G;
[0034]S8:将G、F回填至app中,至此Java代码转C++代码结束。
[0035]APP为APK格式的移动端应用软件。
[0036]解包为将APK包的文件后缀修改为ZIP,然后使用解压工具进行解压即可。
[0037]工作原理:
[0038]本专利技术在实际操作过程中,首先将目标APP进行解包,解包通过修改APK文件后缀名为zip格式,使用解压工具解压缩即可获取其中的dex文件,获取dex文件的类名、函数名和机器码,同时删除原始机器码,修改函数标示,添加加载目标so文件代码并打包形成壳dex文件,将获取类名、函数名和机器码的dex文件通过指令转换成C++代码,再通过llvm预处理编译成静态库,结合基础库文件链接成为so文件,将so文件和壳dex文件重新打包形成加固后的APK文件,整个转换过程完成。
[0039]本专利技术从整体上解决了原有的代码防护手段已经表现出了局限性、强度不够高、可以通过代码在内存中还原的问题导致的代码泄露或破解的风险,通过将Java代码转换成C++的方式防止反编译或内存泄漏,极大提升APP的稳定性、安全性和兼容性。
[0040]尽管已经示出和描述了本专利技术的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本专利技术的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本专利技术的范围由所附权利要求及其等同物限定。
本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种将Java代码等价转换成C++代码的方法,其特征在于,包括以下步骤:S1:将待APP进行解包,记为集合A并分类,dex文件记为集合B;S2:遍历集合B中的所有dex文件中的所有类,并获取类名、函数名、机器码,并存储记作集合C;S3:遍历集合C中的类名、函数名、机器码,并通过自定义llvm框架,将Java机器码转为C++代码,并写入cpp文件中,添加记为集合D中;S4:对集合D中的cpp进一步处理、编译,最终生成静态库文件,记为文件E;S5:将文件E和预置基础库文件链接,...

【专利技术属性】
技术研发人员:龙柏林张永锋
申请(专利权)人:上海蛮犀科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1