[发明专利]安卓平台上可执行程序的保护方法有效
申请号: | 201710257478.6 | 申请日: | 2017-04-19 |
公开(公告)号: | CN108733988B | 公开(公告)日: | 2023-01-24 |
发明(设计)人: | 阚志刚;陈彪;王卫民;朱丹;程显龙;卢佐华 | 申请(专利权)人: | 北京梆梆安全科技有限公司 |
主分类号: | G06F21/14 | 分类号: | G06F21/14 |
代理公司: | 北京国昊天诚知识产权代理有限公司 11315 | 代理人: | 李潇 |
地址: | 100083 北京市海淀区学*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 平台 可执行 程序 保护 方法 | ||
本申请提供一种安卓平台上可执行程序的保护方法,包括:确定APK文件包中的classes.dex文件中要保护的函数,修改后形成新的classes.dex文件;编写函数的C/C++语言实现;将函数的C/C++语言实现编译为动态库;在APK文件包中,用新的classes.dex文件替换原classes.dex文件,将动态库加入APK文件包。本发明不但加大了逆向分析的难度,而且极大增加了还原代码的难度。
技术领域
本发明涉及软件处理技术,更具体地,涉及一种用于安卓平台的可执行程序的保护方法。
背景技术
Android平台上采用Java语言进行开发,Java语言是一种跨平台的,解释性的语言,Java的源代码编译为一种“字节码”形式的中间代码,这种字节码保留了很多源代码的信息,例如方法名,变量名等,从而Java字节码的反编译变得非常容易。为了保护Android程序的应用版权等,需要对应用程序进行保护。
1.Android平台基本介绍
APK是android平台上的可执行程序,其本质是一个zip文件,主要包括以下几类文件:classes.dex、so文件、AndroidManifest.xml、其他资源文件(图片、xml等)
(1)classes.dex是Dalvik的可执行程序,该文件里面存放了所有的java源代码经过编译后的字节码。也是本发明要保护的对象。
Dalvik是Google公司自己设计用于Android平台的虚拟机。Dalvik虚拟机是Google等厂商合作开发的Android移动设备平台的核心组成部分之一。它可以支持已转换为.dex(即Dalvik Executable)格式的Java应用程序的运行,.dex格式是专为Dalvik设计的一种压缩格式,适合内存和处理器速度有限的系统。Dalvik经过优化,允许在有限的内存中同时运行多个虚拟机的实例,并且每一个Dalvik应用作为一个独立的Linux进程执行。独立的进程可以防止在虚拟机崩溃的时候所有程序都被关闭。
Java源代码编译为dex文件的过程如图1所示。在Android平台上,Java的源代码通过Javac编译器先编译为.class文件(标准的Java字节码),然后利用Android提供的工具dx将多个class文件转换为一个dex文件
Classes.dex的格式如图2所示,主要由几个部分组成----头部(Dex Header)、各类表(Table)、数据段(Data Section)等。头部包含了每个区域的大小及偏移信息,各类表包含各种数据,如字符串表、类名表、函数表等等,字节码里面通过表的索引来进行编码。
数据段包括了字节码等信息,例如以下语句
100b64:1a01 9408|0002:const-string v1,Hello world//string@0894
1a01 9408是真正的Raw的字节码,1a为OPCode,表示const-string,01代表寄存器v1,9408代表在字符串表中的第894项
(2)So文件。Android平台除了Java平台外,还允许使用C/C++语言进行混合编程。同时提供了JNI接口(Java native interface)。JNI接口提供了一系列的接口允许从C/C++语言中操作Java语言中的对象,如设置某个Java对象的域(Field)、调用Java中的函数(method)等。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京梆梆安全科技有限公司,未经北京梆梆安全科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710257478.6/2.html,转载请声明来源钻瓜专利网。