CN108733989A - 一种针对Android应用的通信协议加密方法 - Google Patents
一种针对Android应用的通信协议加密方法 Download PDFInfo
- Publication number
- CN108733989A CN108733989A CN201710257949.3A CN201710257949A CN108733989A CN 108733989 A CN108733989 A CN 108733989A CN 201710257949 A CN201710257949 A CN 201710257949A CN 108733989 A CN108733989 A CN 108733989A
- Authority
- CN
- China
- Prior art keywords
- android
- function
- server
- added
- data
- 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
Links
- 238000004891 communication Methods 0.000 title claims abstract description 44
- 238000000034 method Methods 0.000 title claims abstract description 24
- 230000006870 function Effects 0.000 claims description 40
- 230000003068 static effect Effects 0.000 claims description 9
- 230000008569 process Effects 0.000 claims description 5
- 230000007246 mechanism Effects 0.000 claims description 4
- 230000008859 change Effects 0.000 claims description 3
- 238000003780 insertion Methods 0.000 claims 1
- 230000037431 insertion Effects 0.000 claims 1
- 206010070834 Sensitisation Diseases 0.000 abstract description 4
- 230000008313 sensitization Effects 0.000 abstract description 4
- 230000005540 biological transmission Effects 0.000 description 7
- 238000005314 correlation function Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 230000009471 action Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000004321 preservation Methods 0.000 description 1
- 230000003014 reinforcing effect Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/14—Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/606—Protecting data by securing the transmission between two devices or processes
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Technology Law (AREA)
- Multimedia (AREA)
- Telephonic Communication Services (AREA)
Abstract
本发明公布了一种针对Android应用的通信协议加密方法,包括对Android应用网络环境进行初始化、替换Android系统中的网络通信接口、在服务端通过自定义动态库接收和发送数据。本发明技术方案使得加密后的协议发送的数据是经过加密处理的,可有效地对Android应用通信协议加密,防止网络通信内容被破解,保护版权,防止他人通过分析网络数据而获取到应用的相关敏感信息。本发明的加密不需要加入专门的SDK,且能够保证开发者正常的开发不会受到影响,能够便捷而有效地实现对Android应用的通信协议进行加密。
Description
技术领域
本发明涉及一种针对Android应用的通信协议加密方法,具体涉及JNI机制、Hook技术和Socket通信。
背景技术
随着移动互联网的发展,移动智能终端的使用越来越普及,尤其是Google公司开源的Android系统更是占据了移动智能终端的绝大部分市场。但是Android应用的安全问题却始终没有很好的解决方案。一般的Android应用都是采用Java语言开发的,逆向分析技术可以很容易得到Android应用的程序流程,篡改应用数据,损害开发者的利益。对Android应用的加固研究迫在眉睫。
在互联网通信开发时有句话叫做一切皆Socket,即软件要通过互联网通信必须要通过Socket。Socket通常也被称作套接字,是应用层和传输层之间的一种抽象层,是对TCP/UDP复杂协议的一种封装。即应用层的所有协议以及传输的数据都会通过Socket才能连接到互联网与远程进程通信。由于中间人攻击等网络攻击技术,能够很容易的得到应用程序通过互联网传输的数据。由于很多开发者不会考虑到这个问题,没有将数据加密再传输,也就是以明文在网络上通信,这样很容易让攻击者通过分析通信内容获取关键信息。
为了应对这种中间人攻击,目前出现了很多方案,如专门针对web的有https协议。但是这只是针对web应用,并不能为所有的通信提供一个通用的加密方案。还有一种方案是重新封装通信的库,在这些库中加入加密模块,能够对通信的数据进行加密。这种方案一般要求开发者在使用通信时调用这种第三方库的接口。而在Android应用中,这种方案都是通过增加一个SDK库的方式来实现的,这样会要求开发者在通信时使用专门的接口,会增加开发者的负担。
上述现有的一些通信协议加密方法,多数是需要增加SDK的,当前并没有针对Android应用通信协议的成熟加密方法。
发明内容
为了克服上述现有技术的不足,本发明提供一种针对Android应用的通信协议加密方法,使得加密后的协议发送的数据是经过加密处理的,保护版权,防止他人通过分析网络数据,获取到应用的相关敏感信息。另外,本发明技术方案不需要专门的SDK,且能够保证开发者正常的开发不会受到影响。
本发明提供的技术方案是:
一种针对Android应用的通信协议加密方法,包括对Android应用网络环境进行初始化、替换Android系统中的网络通信接口、在服务端通过自定义动态库接收和发送数据;具体包括如下步骤:
A.在Android客户端,Android应用网络环境初始化时,执行如下操作:
A1.自定义so库,里面包含自定义的加密模块、解密模块和Hook模块。
A2.将Hook模块的处理流程入口加入到Android应用入口处;
B.替换Android系统中的网络通信接口,执行如下操作:
B1.在Hook模块中,Hook(操作)Android系统中的Socket相关接口函数,主要是send()和recv();
其中,HOOK模块用于将原来的程序流程中加入一个接口;Hook(操作)一般包括以下步骤:获取目标函数地址;将原程序(目标程序)指令保存,替换成想要执行的模块;恢复堆栈,再执行上述保存的目标程序原来的指令。
B2.在Hook后的send()函数中加入A1所述自定义的加密模块;
B3.在Hook后的recv()函数中加入A1所述自定义的解密模块;
C.服务端接收和发送数据时,执行如下操作:
C1.在服务端实现自定义的动态库,动态库里面包含服务端加密模块、解密模块和Hook模块;此处的加密模块应与A1中的Android端的解密模块相对应(相同),解密模块应与A1中的Android端的加密模块相对应(相同)。
C2.Hook服务端的Linux系统中Socket相关接口函数(库函数),主要是函数send()和函数recv();
C3.在Hook后的send()函数中加入服务端加密模块。
C4.在Hook后的recv()函数中加入服务端解密模块。
通过上述步骤,实现针对Android应用通信协议进行加密操作。
与现有技术相比,本发明的有益效果是:
本发明提供一种针对Android应用的通信协议加密方法,使得加密后的协议发送的数据是经过加密处理的,可以有效地对Android应用通信协议加密,防止网络通信内容被破解,保护版权,防止他人通过分析网络数据而获取到应用的相关敏感信息。另外,本发明技术方案不需要加入专门的SDK,且能够保证开发者正常的开发不会受到影响。因此,本发明针对Android应用的通信协议加密方法便捷而有效。
附图说明
图1是本发明提供的针对Android应用通信协议加密方法的流程框图。
具体实施方式
下面结合附图,通过实施例进一步描述本发明,但不以任何方式限制本发明的范围。
本发明提供一种针对Android应用的通信协议加密方法,使得加密后的协议发送的数据是经过加密处理的,保护版权,防止他人通过分析网络数据,获取到应用的相关敏感信息。另外,本发明技术方案不需要专门的SDK,且能够保证开发者正常的开发不会受到影响。
本发明的具体实施方式如下:
A.在Android应用网络环境初始化时,执行如下操作:
A1.自定义so库,里面包含自定义的加密模块、自定义的解密模块和自定义的Hook模块;
A2.在Android应用入口处插入静态代码,System.load(“xxx.so”),使用java的jni机制加载自定义so模块;
A3.在通信加密so模块的JNI_ONLOAD()函数中引入Hook流程;
B.替换Android系统中的网络通信接口,在对Socket相关函数进行Hook时,执行如下操作:
B1.主要是针对Android系统提供的Socket相关系统函数send()和recv()进行Hook;Hook就是修改了系统函数内容,但是不会改变其接口;
B2.在send()函数中加入A1中自定义的加密模块,对向网络发送的数据使用服务端的公钥采用RSA算法进行加密;
B3.在recv()函数中加入A1中自定义的解密模块,对向网络发送的数据使用应用端的私钥进行RSA解密;
C.在与服务端通信时,服务端执行如下操作:
C1.主要是针对Linux系统提供的Socket相关系统函数send()和recv(),进行Hook;
C2.在send()函数中加入A1所述加密模块,对向网络发送的数据使用应用端(手机端)的公钥进行RSA加密。
C3.在recv()函数中加入A1所述解密模块,对向网络发送的数据使用服务端的私钥进行RSA解密。
下面通过实例对本发明做进一步说明。本实施例为某应用进行通信协议加密处理,首先在Android客户端找到该应用的主类(通过Android客户端中的AndroidManifest.xml配置文件中可以定位到主类。一般一个Android应用只有一个主类。其名称不定,可以根据AndroidManifest.xml中的android:name="android.intent.action.MAIN"这个标签来确定主类),然后在里面加入静态代码,本实施例采用的静态代码为:System.loadLibrary(“libRsaSocket.so”)。可以引入我们自定义的的so库(so可以利用java的jni机制自己编程实现,包括我们自定义的加解密模块和Hook模块)。在so库中,进行Hook Socket相关函数send()和recv(),这里需要只对这个应用的进程和它的子进程通信数据进行加密。在我们Hook后的send()和recv()系统函数,会调用我们的加解密模块,在我们的加密模块中对数据加密,加密算法采用的是RSA算法。这样做是为了保证不影响其他应用的正常工作。使用成熟的RSA算法对发送数据进行加密,对接收数据进行解密。
静态代码在程序启动时自动执行,不需要其他代码的调用。静态代码需要static关键字来修饰。这里也可以使用非静态代码,但是那样需要修改原来代码的逻辑,会让过程变得复杂。
接下来在服务端也要进行相关函数的Hook,在Linux中,Socket的相关函数也是send()和recv()函数,对这两个函数做和Android客户端(手机端)相同的操作,这样能够保证加密传输的数据能够被服务端无歧义的识别。进而能够保证两端的数据传输正常功能不会受到影响。
采用上述加密方法对Android应用的通信协议进行加密之后,我们通过网络抓包可以看到,传输的数据都是经过加密后的,攻击者无法通过分析网络通信数据来得到有价值的数据。此外,由于我们是对系统函数进行Hook来保证传输数据的加密,这样对于开发者不需要调用我们的接口,能够与开发者进行无缝结合。
需要注意的是,公布实施例的目的在于帮助进一步理解本发明,但是本领域的技术人员可以理解:在不脱离本发明及所附权利要求的精神和范围内,各种替换和修改都是可能的。因此,本发明不应局限于实施例所公开的内容,本发明要求保护的范围以权利要求书界定的范围为准。
Claims (5)
1.一种针对Android应用的通信协议加密方法,包括对Android应用网络环境进行初始化、替换Android系统中的网络通信接口、在服务端通过自定义动态库接收和发送数据;具体包括如下步骤:
A.在Android客户端,对Android应用的网络环境进行初始化时,执行如下操作:
A1.自定义so库,所述自定义so库包含自定义的加密模块、解密模块和Hook模块;
A2.将Hook模块的处理流程入口加入到Android应用入口处;
B.替换Android系统中的网络通信接口,执行如下操作:
B1.在Hook模块中,对Android系统中的Socket接口函数执行Hook操作;所述Socket接口函数包括函数send()和函数recv();
B2.在执行Hook操作之后的send()函数中加入A1所述自定义的加密模块;
B3.在执行Hook操作之后的recv()函数中加入A1所述自定义的解密模块;
C.服务端接收和发送数据时,执行如下操作:
C1.在服务端实现自定义的动态库,所述自定义的动态库包括服务端加密模块、服务端解密模块和Hook模块;所述服务端加密模块与A1所述Android端的解密模块相同,所述服务端解密模块与A1所述Android端的加密模块相同;
C2.对服务端的Linux系统中的Socket函数执行Hook操作;所述Socket接口函数包括函数send()和函数recv();
C3.在执行Hook操作之后的send()函数中加入服务端加密模块;
C4.在执行Hook操作之后的recv()函数中加入服务端解密模块;
通过上述步骤,实现针对Android应用通信协议进行加密操作。
2.如权利要求1所述通信协议加密方法,其特征是,步骤A2具体在Android应用入口处插入静态代码,使用java的jni机制加载所述自定义so库,在所述自定义so库的JNI_ONLOAD()函数中加入Hook模块的处理流程。
3.如权利要求1所述通信协议加密方法,其特征是,所述插入静态代码使用函数System.load(“xxx.so”)实现。
4.如权利要求1所述通信协议加密方法,其特征是,步骤B2在send()函数中加入A1中自定义的加密模块,对向网络发送的数据使用服务端的公钥进行RSA加密;步骤B3在recv()函数中加入A1中自定义的解密模块,对向网络发送的数据使用应用端的私钥进行RSA解密。
5.如权利要求1所述通信协议加密方法,其特征是,步骤C2具体在send()函数中加入A1中自定义的加密模块,对向网络发送的数据使用应用端的公钥进行RSA加密;步骤C3在recv()函数中加入A1所述解密模块,对向网络发送的数据使用服务端的私钥进行RSA解密。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710257949.3A CN108733989A (zh) | 2017-04-19 | 2017-04-19 | 一种针对Android应用的通信协议加密方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710257949.3A CN108733989A (zh) | 2017-04-19 | 2017-04-19 | 一种针对Android应用的通信协议加密方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108733989A true CN108733989A (zh) | 2018-11-02 |
Family
ID=63924830
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710257949.3A Pending CN108733989A (zh) | 2017-04-19 | 2017-04-19 | 一种针对Android应用的通信协议加密方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108733989A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109862000A (zh) * | 2019-01-22 | 2019-06-07 | 深圳市永达电子信息股份有限公司 | 一种Linux网络层的端对端加密方法和系统 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103281324A (zh) * | 2013-06-04 | 2013-09-04 | 江苏科大汇峰科技有限公司 | 一种Android客户端的安全通信方法 |
CN103605930A (zh) * | 2013-11-27 | 2014-02-26 | 湖北民族学院 | 一种基于hook和过滤驱动的双重文件防泄密方法及系统 |
US8677466B1 (en) * | 2009-03-10 | 2014-03-18 | Trend Micro Incorporated | Verification of digital certificates used for encrypted computer communications |
CN104331644A (zh) * | 2014-11-24 | 2015-02-04 | 北京邮电大学 | 一种智能终端文件的透明加解密方法 |
CN105208041A (zh) * | 2015-10-15 | 2015-12-30 | 厦门大学 | 基于hook的云存储应用加密数据包破解方法 |
CN105243330A (zh) * | 2015-10-13 | 2016-01-13 | 武汉大学 | 一种面向Android系统内部数据传递过程的保护方法及系统 |
CN105956478A (zh) * | 2016-04-25 | 2016-09-21 | 北京珊瑚灵御科技有限公司 | 一种基于iOS Method Swizzling技术的数据隔离系统和方法 |
CN106161477A (zh) * | 2016-09-19 | 2016-11-23 | 上海迅行易汽车租赁有限公司 | 一种端对端加密的通讯系统 |
CN106254348A (zh) * | 2016-08-08 | 2016-12-21 | 中国地质大学武汉 | 一种基于Android的无线局域网通信方法 |
CN106302482A (zh) * | 2016-08-22 | 2017-01-04 | 浙江省数字安全证书管理有限公司 | 一种跨浏览器使用硬件加密介质数据安全传输系统和方法 |
-
2017
- 2017-04-19 CN CN201710257949.3A patent/CN108733989A/zh active Pending
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8677466B1 (en) * | 2009-03-10 | 2014-03-18 | Trend Micro Incorporated | Verification of digital certificates used for encrypted computer communications |
CN103281324A (zh) * | 2013-06-04 | 2013-09-04 | 江苏科大汇峰科技有限公司 | 一种Android客户端的安全通信方法 |
CN103605930A (zh) * | 2013-11-27 | 2014-02-26 | 湖北民族学院 | 一种基于hook和过滤驱动的双重文件防泄密方法及系统 |
CN104331644A (zh) * | 2014-11-24 | 2015-02-04 | 北京邮电大学 | 一种智能终端文件的透明加解密方法 |
CN105243330A (zh) * | 2015-10-13 | 2016-01-13 | 武汉大学 | 一种面向Android系统内部数据传递过程的保护方法及系统 |
CN105208041A (zh) * | 2015-10-15 | 2015-12-30 | 厦门大学 | 基于hook的云存储应用加密数据包破解方法 |
CN105956478A (zh) * | 2016-04-25 | 2016-09-21 | 北京珊瑚灵御科技有限公司 | 一种基于iOS Method Swizzling技术的数据隔离系统和方法 |
CN106254348A (zh) * | 2016-08-08 | 2016-12-21 | 中国地质大学武汉 | 一种基于Android的无线局域网通信方法 |
CN106302482A (zh) * | 2016-08-22 | 2017-01-04 | 浙江省数字安全证书管理有限公司 | 一种跨浏览器使用硬件加密介质数据安全传输系统和方法 |
CN106161477A (zh) * | 2016-09-19 | 2016-11-23 | 上海迅行易汽车租赁有限公司 | 一种端对端加密的通讯系统 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109862000A (zh) * | 2019-01-22 | 2019-06-07 | 深圳市永达电子信息股份有限公司 | 一种Linux网络层的端对端加密方法和系统 |
CN109862000B (zh) * | 2019-01-22 | 2021-08-17 | 深圳市永达电子信息股份有限公司 | 一种Linux网络层的端对端加密方法和系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11601809B2 (en) | Method and system for updating certificate issuer public key, and related device | |
CN103856485B (zh) | 可信用户界面安全指示器的初始化系统及方法 | |
CN110352605B (zh) | 一种鉴权算法程序的添加方法、相关设备及系统 | |
CN104980920B (zh) | 智能终端建立通信连接的方法及装置 | |
CN101068204B (zh) | 通信架构中的中间网络节点及其执行的方法 | |
JP4864333B2 (ja) | ソフトウェアの脆弱性の悪用を防止するように通信をフィルタ処理するための方法およびシステム | |
CN109756501B (zh) | 一种基于http协议的高隐匿网络代理方法及系统 | |
CN102291387A (zh) | 加密的网络通信拦截和检查 | |
CN109558739B (zh) | 程序运行方法、装置、终端及可读介质 | |
EP2429150A1 (en) | Apparatus, web service component and method based on web service | |
US10970264B2 (en) | Supporting secure layer extensions for communication protocols | |
CN104700003B (zh) | 一种文件加壳及脱壳方法、装置及系统 | |
CN109831775B (zh) | 一种处理器、基带芯片以及sim卡信息传输方法 | |
CN111475543A (zh) | 一种模糊搜索方法、装置、计算机设备及存储介质 | |
CN103246540A (zh) | 应用程序更新方法和装置 | |
CN112822193A (zh) | 应用通信方法、装置、设备及存储介质 | |
US11227032B1 (en) | Dynamic posture assessment to mitigate reverse engineering | |
CN103034811B (zh) | 一种文件处理的方法、系统及装置 | |
CN108733989A (zh) | 一种针对Android应用的通信协议加密方法 | |
CN112580056A (zh) | 一种终端设备、数据加密方法、解密方法、及电子设备 | |
CN112261059A (zh) | 一种基于java网关技术平台通用性的接口方法及系统 | |
CN101753520A (zh) | 利用智能卡为外部设备应用提供加解密服务的方法 | |
WO2014089968A1 (zh) | 虚拟机系统数据加密方法及设备 | |
CN106060792B (zh) | 一种基于tpm加密的ip短消息收发方法 | |
CN112187734B (zh) | 一种IPSec组件架构及VPN隧道建立方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20181102 |