CN103745141A - 智能终端android系统中防止应用程序反编译的方法 - Google Patents

智能终端android系统中防止应用程序反编译的方法 Download PDF

Info

Publication number
CN103745141A
CN103745141A CN201310630537.1A CN201310630537A CN103745141A CN 103745141 A CN103745141 A CN 103745141A CN 201310630537 A CN201310630537 A CN 201310630537A CN 103745141 A CN103745141 A CN 103745141A
Authority
CN
China
Prior art keywords
android
program
file
application program
java
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201310630537.1A
Other languages
English (en)
Inventor
金果
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Feixun Data Communication Technology Co Ltd
Original Assignee
Shanghai Feixun Data Communication Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shanghai Feixun Data Communication Technology Co Ltd filed Critical Shanghai Feixun Data Communication Technology Co Ltd
Priority to CN201310630537.1A priority Critical patent/CN103745141A/zh
Publication of CN103745141A publication Critical patent/CN103745141A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/14Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Storage Device Security (AREA)

Abstract

一种智能终端android系统中防止应用程序反编译的方法,在android系统中引入加密算法,防止软件程序被反编译,能极大的提高android程序的安全性。

Description

智能终端android系统中防止应用程序反编译的方法
技术领域
本发明涉及一种智能终端android(安卓)系统中防止应用程序反编译的方法。
背景技术
目前android程序如火如荼,在世界各地非常繁荣,andorid开发的程序采用java语言开发,由于其开源性,开发商免交了高的专利费用,可以更好的融合世界上先进芯片厂商,软件厂商参与其中。由于android的应用程序上层是使用java语言编写的,为了绕过甲骨文公司的oracle(java)虚拟机授权,Google公司设计了用于Android平台的dalvik虚拟机,利用dalvik虚拟机,Java代码经过dx(dx是将java的classes文件编译为字节码dex文件的工具)工具转化编译后,变成Dex文件,Dex文件的指令码就是Dalvik虚拟机专有的一套指令集,专门为嵌入式系统优化过,相比标准java的.class文件,它体积小,运行效率高。
现有的Java是一种跨平台的、解释型语言。Java编译工具将Java源代码被编译成为Java字节码文件,由Java虚拟机负责对Java字节码文件进行解释执行。与本地目标代码不同,Java字节码文件中仍然保留了方法名称、变量名称,并且通过这些名称来访问变量和方法,这些符号往往带有许多语义信息。因此,对Java字节码文件进行反编译就显得比较容易。有许多Java的反编译工具都能够从Java字节码文件生成高质量的源代码。有很多针对java语言编写的程序采用反编译等一些方法,就能获得相应应用程序的代码,这样就导致软件的发明专利情况,以及软件的知识产权情况得不到保护。
为阻止对Java字节码文件进行反编译,目前市场上相近的方案有:
1、对要发布的Java字节码文件进行加密;
2、用Java虚拟机工具接口监听其它初始化事件;
3、为Java虚拟机初始化事件指定Hook函数;
4、Java虚拟机初始化完成时自动调用Hook函数,并在的Hook函数中使用Java本地接口将Java虚拟机在生成类对象时调用的函数注册为自定义的代理函数;
5、Java虚拟机在生成某个类对象时调用自定义的代理函数,在自定义的代理函数中对加密过的Java字节码文件进行解密处理;
6、将解密后的Java字节码文件生成相应的类对象后返回给Java虚拟机。
上述技术主要是针对java平台针对java标准虚拟机(JVM)实现的技术,但是在智能终端android移动研究领域,有着明显的不足,毕竟android开发的应用程序,虽然使用java语言书写的,但是其运行环境不是传统意义的java虚拟机(JVM),而是dalvik虚拟机设备,有着自己的堆栈与编译环境。
目前市场上,已有的java技术主要从如下方式进行防止java程序进行反编译:
1、隔离程序:将关键的代码放服务器,通过远程访问方式获得服务,这样就无法破译程序代码,但这种方法必须依赖于网络,并且网络方式获取也具有一定不安全性,并且成本较其他方式比较高。
2、代码混淆:主要是通过将定义的类、变量、方法和包的名字改为无意义的字符串、使用非法的字符代替变量符号和在软件中添加一些无关的指令或永远执行不到的指令等手段来增加反编译和对反编译后源代码阅读的难度。但这种方法并不能真正阻止反编译,而且混淆都有一定规律可寻。
3、转换本地代码:即将Java程序像C/C++程序一样编译成本机可执行的二进制代码。但是这样做使得Java程序失去其跨平台的特性,而且这种技术目前并不十分成熟,因此不适用于大型应用程序。
4、自定义类加载器:是指首先将Java字节码文件进行加密处理,然后自已编写一个Java类装载器在Java字节码文件装载时再进行解密处理。这种方法的缺点在于虽然经过加密的Java字节码文件无法被反编译,但自定义的类加载器本身却不能防止被反编译。因此,加密过的Java字节码文件仍然是不安全的。
发明内容
本发明提供一种智能终端android系统中防止应用程序反编译的方法,在android系统中引入加密算法,防止软件程序被反编译,能极大的提高android程序的安全性。
为了达到上述目的,本发明提供一种智能终端android系统中防止应用程序反编译的方法,该方法包含以下步骤:
步骤1、对android程序进行加密;
步骤2、将经过加密后的android程序加载到dalvik虚拟机;
步骤3、对加载后的android程序进行解密。
所述的步骤1包含以下步骤:
步骤1.1、应用程序用java开发完成后,经过打包成*.jar文件;
步骤1.2、打包文件经过jdk编译工具后,生成对应的*.class文件;
步骤1.3、在android平台上,调用加密算法对文件相应的字节码进行加密;
步骤1.4、利用android上的dx工具,将对应的*.class文件转化成*.dex文件,形成含有加密文件的apk应用程序。
所述的步骤3包含以下步骤:
步骤3.1、当android系统运行的时候,启动zygote虚拟机孵化器;
步骤3.2、由zygote虚拟机孵化器孵化出具体的应用程序实例;
步骤3.3、注册解密监听事件,让系统碰到加密的应用程序代码,就自动启动侦听程序进行解密;
步骤3.4、对运行的应用程序实例dex, odex字节码进行解密。
步骤3.5、取出运行的应用程序实例dex, odex中的信息,进行相应的指令操作;
步骤3.6、完成相应的应用程序实例对象生命周期的管理,堆栈管理,线程管理,安全异常管理,垃圾回收操作。
本发明在android系统中引入加密算法,防止软件程序被反编译,能极大的提高android程序的安全性。
附图说明
图1是本发明加密过程的流程图。
图2是本发明解密过程的流程图。
具体实施方式
以下根据图1和图2,具体说明本发明的较佳实施例。
本发明提供一种智能终端android系统中防止应用程序反编译的方法,该方法包含以下步骤:
步骤1、对android程序进行加密;
步骤1.1、应用程序用java开发完成后,经过打包成*.jar文件;
步骤1.2、打包文件经过jdk编译工具后,生成对应的*.class文件;
步骤1.3、在android平台上,调用加密算法对文件相应的字节码进行加密;
本实施例中,为了降低成本,采用RSA加密算法,RSA加密算法目前在软件领域非常方便,也容易部署,可以采用C++方式,也可以采用java方式,本实施例中采用C++方式实现;
步骤1.4、利用android上的dx工具,将对应的*.class文件转化成*.dex文件,形成含有加密文件的apk(AndroidPackage,Android安装包)应用程序;
加密的好处就是和市场上的应用程序比较起来更安全,因为经过了Class字节码加密处理,安全性得到了进一步保证,与传统的字节码混淆技术,以及转化本地代码,自定义装载器等等方法比较起来,实现了加密技术,使得代码的安全性得到到了进一步提高;
步骤2、将经过加密后的android程序加载到dalvik虚拟机;
步骤3、对加载后的android程序进行解密;
步骤3.1、当android系统运行的时候,启动zygote虚拟机孵化器;
Zygote是android程序一个特殊应用程序,和驱动,内核模块一样,Zygote的启动由linux操作系统的init(初始化)启动开始,大部分的应用进程都是由它创建出来的;
步骤3.2、由zygote虚拟机孵化器孵化出具体的应用程序实例;
步骤3.3、注册解密监听事件,让系统碰到加密的应用程序代码,就自动启动侦听程序进行解密;
Android系统中可以采用设计模式的注册监听方式,对相应的事件进行响应,目前android中注册监听器有两种方式,一种是在android的Manifest(Manifest.xml 是android 应用程序必须有的系统配置文件)中进行注册,另一种是在代码中进行注册;
步骤3.4、对运行的应用程序实例dex(android dalvik执行程序), odex(是由android软件中的classes.dex生成,是android上的应用程序apk中提取出来的可运行文件)字节码进行解密;
本实施例中的解密算法采用与加密算法对应的RSA解密算法;
步骤3.5、取出运行的应用程序实例dex, odex中的信息,进行相应的指令操作;
Dex, ODex中的信息是字节码信息,就是相应的二进制信息,为程序运行中涉及的各种调用,执行的各种操作,比如全局变量,局部变量信息,以及对象引用等;
相应的指令操作就是dalvik虚拟机中相应的操作系统,压栈,程序计算器,堆操作等操作;
步骤3.6、完成相应的应用程序实例对象生命周期的管理,堆栈管理,线程管理,安全异常管理,垃圾回收操作。
android应用程序经过本方法加密后,即使经过反编译方法后也较难破解掉相应的程序,所以拿到其他机器上是运行不了,因为有个注册解密事件的侦听事件,只有在特定的虚拟机上才可以运行本应用程序。
尽管本发明的内容已经通过上述优选实施例作了详细介绍,但应当认识到上述的描述不应被认为是对本发明的限制。在本领域技术人员阅读了上述内容后,对于本发明的多种修改和替代都将是显而易见的。因此,本发明的保护范围应由所附的权利要求来限定。

Claims (3)

1.一种智能终端android系统中防止应用程序反编译的方法,其特征在于,该方法包含以下步骤:
步骤1、对android程序进行加密;
步骤2、将经过加密后的android程序加载到dalvik虚拟机;
步骤3、对加载后的android程序进行解密。
2.如权利要求1所述的智能终端android系统中防止应用程序反编译的方法,其特征在于,所述的步骤1包含以下步骤:
步骤1.1、应用程序用java开发完成后,经过打包成*.jar文件;
步骤1.2、打包文件经过jdk编译工具后,生成对应的*.class文件;
步骤1.3、在android平台上,调用加密算法对文件相应的字节码进行加密;
步骤1.4、利用android上的dx工具,将对应的*.class文件转化成*.dex文件,形成含有加密文件的apk应用程序。
3.如权利要求1所述的智能终端android系统中防止应用程序反编译的方法,其特征在于,所述的步骤3包含以下步骤:
步骤3.1、当android系统运行的时候,启动zygote虚拟机孵化器;
步骤3.2、由zygote虚拟机孵化器孵化出具体的应用程序实例;
步骤3.3、注册解密监听事件,让系统碰到加密的应用程序代码,就自动启动侦听程序进行解密;
步骤3.4、对运行的应用程序实例dex, odex字节码进行解密;
步骤3.5、取出运行的应用程序实例dex, odex中的信息,进行相应的指令操作;
步骤3.6、完成相应的应用程序实例对象生命周期的管理,堆栈管理,线程管理,安全异常管理,垃圾回收操作。
CN201310630537.1A 2013-12-02 2013-12-02 智能终端android系统中防止应用程序反编译的方法 Pending CN103745141A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310630537.1A CN103745141A (zh) 2013-12-02 2013-12-02 智能终端android系统中防止应用程序反编译的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310630537.1A CN103745141A (zh) 2013-12-02 2013-12-02 智能终端android系统中防止应用程序反编译的方法

Publications (1)

Publication Number Publication Date
CN103745141A true CN103745141A (zh) 2014-04-23

Family

ID=50502158

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310630537.1A Pending CN103745141A (zh) 2013-12-02 2013-12-02 智能终端android系统中防止应用程序反编译的方法

Country Status (1)

Country Link
CN (1) CN103745141A (zh)

Cited By (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104021320A (zh) * 2014-06-20 2014-09-03 福建天晴数码有限公司 保护apk文件版权的方法、装置和系统
CN104090772A (zh) * 2014-07-23 2014-10-08 广州金山网络科技有限公司 一种生成安卓安装包apk的方法及装置
CN104239757A (zh) * 2014-09-30 2014-12-24 北京奇虎科技有限公司 应用程序防止逆向的方法及装置、运行方法及终端
CN104317625A (zh) * 2014-11-09 2015-01-28 刘鹏 一种apk文件的动态加载方法
CN104573425A (zh) * 2014-12-31 2015-04-29 上海格尔软件股份有限公司 一种基于对称算法和专用加载模块的Python程序模块加密方法
CN105224833A (zh) * 2014-06-30 2016-01-06 北京金山安全软件有限公司 利用数字水印识别应用程序是否是正版的方法及系统
CN106934256A (zh) * 2015-12-29 2017-07-07 中移(杭州)信息技术有限公司 一种企业数据服务器的保护方法及装置
CN106997294A (zh) * 2016-01-26 2017-08-01 中兴通讯股份有限公司 odex文件生成方法及装置
CN107038371A (zh) * 2015-07-29 2017-08-11 腾讯科技(深圳)有限公司 一种可执行文件的处理方法、装置、装置和系统
CN107122631A (zh) * 2017-04-26 2017-09-01 北京洋浦伟业科技发展有限公司 一种脚本文件的透明加密方法和装置
CN108399319A (zh) * 2017-09-30 2018-08-14 平安科技(深圳)有限公司 源代码保护方法、应用服务器及计算机可读存储介质
CN109740313A (zh) * 2018-12-12 2019-05-10 北京字节跳动网络技术有限公司 计算机程序保护方法、装置、电子设备和计算机可读存储介质
CN109858203A (zh) * 2018-12-21 2019-06-07 厦门市美亚柏科信息股份有限公司 一种Android平台应用的安全防护方法、装置及存储介质
CN110119601A (zh) * 2019-03-28 2019-08-13 江苏通付盾信息安全技术有限公司 基于应用程序安装包的程序加固方法及装置
CN111369984A (zh) * 2018-12-26 2020-07-03 Tcl集团股份有限公司 一种语音交互方法、存储介质及终端设备
CN113282294A (zh) * 2021-05-19 2021-08-20 武汉极意网络科技有限公司 基于安卓平台Java字符串混淆的方法和装置

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101814124A (zh) * 2010-04-20 2010-08-25 浪潮电子信息产业股份有限公司 一种基于Java的软件安全性加强的方法
CN101957903A (zh) * 2010-09-13 2011-01-26 中兴通讯股份有限公司 一种保护类文件的方法和装置
CN101980160A (zh) * 2010-10-28 2011-02-23 北京飞天诚信科技有限公司 一种.net程序加密后的执行方法
CN102043932A (zh) * 2010-12-31 2011-05-04 中国航空工业集团公司第六三一研究所 一种防止Java程序被反编译的方法
CN102087605A (zh) * 2011-01-28 2011-06-08 宇龙计算机通信科技(深圳)有限公司 一种基于android平台应用安装控制方法及系统
CN102236757A (zh) * 2011-06-30 2011-11-09 北京邮电大学 一种适用于Android系统的软件保护方法及系统

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101814124A (zh) * 2010-04-20 2010-08-25 浪潮电子信息产业股份有限公司 一种基于Java的软件安全性加强的方法
CN101957903A (zh) * 2010-09-13 2011-01-26 中兴通讯股份有限公司 一种保护类文件的方法和装置
CN101980160A (zh) * 2010-10-28 2011-02-23 北京飞天诚信科技有限公司 一种.net程序加密后的执行方法
CN102043932A (zh) * 2010-12-31 2011-05-04 中国航空工业集团公司第六三一研究所 一种防止Java程序被反编译的方法
CN102087605A (zh) * 2011-01-28 2011-06-08 宇龙计算机通信科技(深圳)有限公司 一种基于android平台应用安装控制方法及系统
CN102236757A (zh) * 2011-06-30 2011-11-09 北京邮电大学 一种适用于Android系统的软件保护方法及系统

Cited By (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104021320A (zh) * 2014-06-20 2014-09-03 福建天晴数码有限公司 保护apk文件版权的方法、装置和系统
CN105224833B (zh) * 2014-06-30 2018-03-30 北京金山安全软件有限公司 利用数字水印识别应用程序是否是正版的方法及系统
CN105224833A (zh) * 2014-06-30 2016-01-06 北京金山安全软件有限公司 利用数字水印识别应用程序是否是正版的方法及系统
WO2016000557A1 (zh) * 2014-06-30 2016-01-07 北京金山安全软件有限公司 利用数字水印识别应用程序是否是正版的方法及系统
CN104090772A (zh) * 2014-07-23 2014-10-08 广州金山网络科技有限公司 一种生成安卓安装包apk的方法及装置
CN104239757A (zh) * 2014-09-30 2014-12-24 北京奇虎科技有限公司 应用程序防止逆向的方法及装置、运行方法及终端
CN104239757B (zh) * 2014-09-30 2017-04-19 北京奇虎科技有限公司 应用程序防止逆向的方法及装置、运行方法及终端
CN104317625A (zh) * 2014-11-09 2015-01-28 刘鹏 一种apk文件的动态加载方法
CN104573425B (zh) * 2014-12-31 2018-01-30 上海格尔软件股份有限公司 一种基于对称算法和专用加载模块的Python程序模块加密方法
CN104573425A (zh) * 2014-12-31 2015-04-29 上海格尔软件股份有限公司 一种基于对称算法和专用加载模块的Python程序模块加密方法
CN107038371A (zh) * 2015-07-29 2017-08-11 腾讯科技(深圳)有限公司 一种可执行文件的处理方法、装置、装置和系统
CN107038371B (zh) * 2015-07-29 2020-01-31 腾讯科技(深圳)有限公司 一种可执行文件的处理方法、装置和系统
CN106934256B (zh) * 2015-12-29 2020-03-06 中移(杭州)信息技术有限公司 一种企业数据服务器的保护方法及装置
CN106934256A (zh) * 2015-12-29 2017-07-07 中移(杭州)信息技术有限公司 一种企业数据服务器的保护方法及装置
CN106997294A (zh) * 2016-01-26 2017-08-01 中兴通讯股份有限公司 odex文件生成方法及装置
CN107122631A (zh) * 2017-04-26 2017-09-01 北京洋浦伟业科技发展有限公司 一种脚本文件的透明加密方法和装置
CN108399319A (zh) * 2017-09-30 2018-08-14 平安科技(深圳)有限公司 源代码保护方法、应用服务器及计算机可读存储介质
WO2019062015A1 (zh) * 2017-09-30 2019-04-04 平安科技(深圳)有限公司 源代码保护方法、应用服务器及计算机可读存储介质
CN108399319B (zh) * 2017-09-30 2021-07-16 平安科技(深圳)有限公司 源代码保护方法、应用服务器及计算机可读存储介质
CN109740313A (zh) * 2018-12-12 2019-05-10 北京字节跳动网络技术有限公司 计算机程序保护方法、装置、电子设备和计算机可读存储介质
CN109858203A (zh) * 2018-12-21 2019-06-07 厦门市美亚柏科信息股份有限公司 一种Android平台应用的安全防护方法、装置及存储介质
CN111369984A (zh) * 2018-12-26 2020-07-03 Tcl集团股份有限公司 一种语音交互方法、存储介质及终端设备
CN111369984B (zh) * 2018-12-26 2023-08-08 Tcl科技集团股份有限公司 一种语音交互方法、存储介质及终端设备
CN110119601A (zh) * 2019-03-28 2019-08-13 江苏通付盾信息安全技术有限公司 基于应用程序安装包的程序加固方法及装置
CN110119601B (zh) * 2019-03-28 2022-07-12 江苏通付盾信息安全技术有限公司 基于应用程序安装包的程序加固方法及装置
CN113282294A (zh) * 2021-05-19 2021-08-20 武汉极意网络科技有限公司 基于安卓平台Java字符串混淆的方法和装置

Similar Documents

Publication Publication Date Title
CN103745141A (zh) 智能终端android系统中防止应用程序反编译的方法
CN102043932B (zh) 一种防止Java程序被反编译的方法
KR101471589B1 (ko) 공통중간언어 기반 프로그램을 위한 보안 제공 방법
CN102598017B (zh) 提高Java字节码的防窜改能力的系统和方法
CN106778103B (zh) 一种安卓应用程序防逆向破解的加固方法、系统及解密方法
TWI530874B (zh) 生成應用程式安裝封包、執行應用程式的方法及裝置
KR101391982B1 (ko) 안드로이드 어플리케이션의 디컴파일 방지를 위한 암호화 방법
US20180129794A1 (en) Method for Protecting Dex File from Decompilation in Android System
US11263311B2 (en) Securing virtual-machine software applications
KR101503785B1 (ko) 동적 라이브러리를 보호하는 방법 및 장치
WO2021217980A1 (zh) java代码的加壳方法与系统
CN102346834A (zh) Java应用软件加密保护的方法
CN103914637B (zh) 一种安卓平台的可执行程序加密方法
WO2016078130A1 (zh) 一种防逆向apk文件的动态加载方法
WO2013170724A1 (zh) 安卓系统中java应用程序的保护方法
EP3126973A1 (en) Method, apparatus, and computer-readable medium for obfuscating execution of application on virtual machine
US20180067777A1 (en) Application protection method, server, and terminal
CN105303073A (zh) 软件代码保护方法
CN110309630B (zh) 一种Java代码加密方法及装置
WO2016206393A1 (zh) 管理应用的方法和装置、实现读写操作的方法和装置
CN107871066B (zh) 基于安卓系统的代码编译方法及装置
CN112559980B (zh) 一种可内嵌众多任意app的小程序运行时
CN104537281A (zh) 用于移动应用保护的系统和方法
CN112733094A (zh) 一种Java应用程序的安全保护方法
CN110597496B (zh) 应用程序的字节码文件获取方法及装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication

Application publication date: 20140423

RJ01 Rejection of invention patent application after publication