CN108388778B - Android平台融合多特征的APP反调试方法 - Google Patents
Android平台融合多特征的APP反调试方法 Download PDFInfo
- Publication number
- CN108388778B CN108388778B CN201810233288.5A CN201810233288A CN108388778B CN 108388778 B CN108388778 B CN 108388778B CN 201810233288 A CN201810233288 A CN 201810233288A CN 108388778 B CN108388778 B CN 108388778B
- Authority
- CN
- China
- Prior art keywords
- main process
- debugging
- sub
- subprocess
- app
- 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.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims abstract description 131
- 230000008569 process Effects 0.000 claims abstract description 74
- 238000001514 detection method Methods 0.000 claims abstract description 12
- 238000012544 monitoring process Methods 0.000 claims abstract description 11
- 230000003993 interaction Effects 0.000 claims abstract description 6
- 230000002159 abnormal effect Effects 0.000 claims abstract description 5
- 238000004891 communication Methods 0.000 claims description 7
- 230000005856 abnormality Effects 0.000 abstract description 2
- 230000000694 effects Effects 0.000 description 3
- 238000012545 processing Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 238000002347 injection Methods 0.000 description 1
- 239000007924 injection Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000002787 reinforcement Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Images
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/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/554—Detecting local intrusion or implementing counter-measures involving event detection and direct action
Abstract
本发明涉及Android平台融合多特征的APP反调试方法,属于计算机与信息科学技术领域。本发明首先创建子进程,实现对主进程的主动跟踪,同时向主进程写入数据,用于动态加载时生成密钥;然后主进程开启线程分别进行暗桩检测、系统文件监控和子进程监控主进程循环检测主进程和子进程状态,当三个模块任意一个发送异常时退出应用程序;同时子进程与主进程保活交互,保证子进程不被挂起,主进程被监控模块监控,当主进程发送异常信号时结束进程。本发明能够有效地对抗调试攻击和反反调试攻击,提高了APP防护能力。
Description
技术领域
本发明涉及Android平台融合多特征的APP反调试方法,属于计算机与信息科学技术领域。
背景技术
应用程序本身并不具备反调试的功能,但是动态调试是动态分析应用逻辑、动态脱壳等攻击方式所采取的必要手段。为了防止攻击者使用调试工具调试应用程序,进而动态分析程序逻辑、实现进程注入、修改寄存器,需要对APP加以反调试的保护,为了防止攻击者利用反反调试方法绕过反调试,需要对APP加以反调试的自我保护。因此,本发明将提供融合多特征的APP反调试方法来实现Android平台APP加固。
Android平台APP反调试方法需要解决的基本问题是判断应用是否调试,综观现有的Android平台APP反调试方法,通常使用方法可归为四类:
1.基于ptrace的反调试
基于ptrace的反调试方法是指通过linux下的ptrace函数跟踪到应用进程,实现应用程序的跟踪。每个应用进程最多被一个进程跟踪,因此可以通过抢占式的实现反调试预先进行进程跟踪。但是基于ptrace的反调试方法只能针对单进程进行反调试。
2.基于暗桩检测的反调试
基于暗桩检测的反调试方法是指通过检测Linux内核向系统文件写入进程状态的信息,判断应用是否被调试。但是由于检测函数的返回值存储在寄存器中,可以通过修改寄存器的方式修改返回结果从而绕过反调试检测。
3.基于调试器特征的反调试
基于调试器特征的反调试方法是指通过检测特定的调试器来检测调试攻击,但是只要修改调试进程的名字就可以绕过。
4.基于断点特征的反调试
基于断点特征的反调试有两种方法,一种方法是检测软件断点,遍历so文件可执行段,检测是否包含breakpoint指令,另一种方法通过SIGTRAP信号来实现反调试。应用自己先注册SIGTRAP的信号处理函数,函数将中断指令NOP。在程序中主动插入一个断点指令,触发中断处理函数。在调试状态下,SIGTRAP要执行指令恢复和回退PC操作,由于中断不是调试的断点,直接进行回退PC操作,程序会一直停在断点中,从而实现反调试。
综上所述,现有的Android平台APP反调试方法可以相对有效地抵御反调试攻击,但是针对这些反调试方法,已有相应的反反调试方法,降低了现有的反调试方法的反调试能力。随着调试攻击和反反调试攻击技术的发展,反调试方法所带来的防护效应越来越小。通过简单的多反调试方法的串联,缺乏调试方法间的相互保护,难以达到更高的反调试效果。所以本发明提出Android平台融合多特征的APP反调试方法。
发明内容
本发明的目的是为提高反调试方法对抗反反调试攻击的能力,进而提高APP反调试攻击能力,提出融合多特征的APP反调试方法。
本发明的设计原理为:本发明首先创建子进程,实现对主进程的主动跟踪,同时向主进程写入数据,用于动态加载时生成密钥;然后主进程开启线程分别进行暗桩检测、系统文件监控和子进程监控主进程循环检测主进程和子进程状态,当三个模块任意一个发送异常时退出应用程序;同时子进程与主进程保活交互,保证子进程不被挂起,主进程被监控模块监控,当主进程发送异常信号时结束进程。
本发明的技术方案是通过如下步骤实现的:
步骤1,通过fork创建子进程,子进程利用ptrace实现对主进程的主动跟踪,同时向主进程写入数据,用于动态加载时生成密钥;
步骤2,主进程开启线程,分别进行暗桩检测、系统文件监控和子进程监控主进程循环检测主进程和子进程状态,当三个模块任意一个发送异常时退出应用程序。
步骤3,主进程和子进程之间通过管道通信进行状态交互,实现保活功能,当主进程发送异常信号时结束进程。
有益效果
相比于基于ptrace的反调试方法,本发明可以阻止fork函数过滤、ptrace函数攻击。
相比于基于暗桩检测和调试器特征的反调试方法,本发明可以阻止fopen重定向攻击。
相比于断点特征的反调试方法,本发明可以阻止断点检测。
附图说明
图1为本发明融合多特征的APP反调试方法的原理图。
图2为主进程和子进程进行反调试的流程图。
图3为主进程开启线程进行暗桩检测的流程图。
具体实施方式
为了更好的说明本发明的目的和优点,下面结合实施例对本发明方法的实施方式做进一步详细说明。
具体流程为:
步骤1,主进程和子进程进行反调试。
步骤1.1,主进程通过调用fork函数,开启一个子进程,通过fork返回值判断结果,当cpid小于0,开启失败,直接通过kill结束进程,大于0时,开启管道读写线程,并进入循环等待状态;
步骤1.2,子进程开启后,通过ptrace(PTRACE_ATTACH,getppid(),NULL,NULL)跟踪主进程,当跟踪失败时,表示主进程已经被调试,子进程结束自己。跟踪成功,向管道中写入密钥数据,用以在主进程动态加载;
步骤1.3,主进程循环等待读取管道信息,当读取超时,则直接退出应用程序;读取完子进程通信信息之后,完成双进程反调试步骤,并用通信传递的密钥进行DEX的动态加载,开启反调试其他的模块。
步骤2,主进程开启线程进行暗桩检测。
步骤2.1,读取主进程TracerPID,判断是否等于cpid,如果等于cpid则读取子进程TracerPID,否则进行异常处理结束进程。
步骤2.2,判断子进程TracerPID是否等于0,如果等于0则重复以上过程,否则进行异常处理结束进程。
步骤3,主进程开启线程进行系统文件监控。
步骤3.1,通过inofity来监控主进程和子进程的maps文件,实现反调试。
步骤4,主进程和子进程之间通过管道通信进行状态交互,实现保活功能。
步骤4.1,子进程与主进程进行保活交互,定期向主进程通过管道通信发送保活信息,以保证子进程不被挂起;同时父进程监控模块监控父进程的信号,当父进程发送异常信号时,立即结束进程。
测试结果:实验对Android平台APP进行反调试,本发明能够有效地对抗调试攻击和反反调试攻击,提高了APP防护能力。
以上所述的具体描述,对发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (1)
1.Android平台融合多特征的app反调试方法,其特征在于所述方法包括如下步骤:
步骤1,主进程通过fork创建子进程,子进程利用ptrace实现对主进程的主动跟踪,同时向主进程写入数据,用于动态加载时生成密钥,主进程在读取子进程信息后将通信数据传递的密钥用于DEX动态加载模块,将双进程反调试与动态加载耦合;
步骤2,主进程开启线程分别进行暗桩检测和系统文件监控,通过循环检测主进程TracerPID值和子进程的TracerPID值进行异常检测判断是否退出应用程序,通过inofity来监控主进程和子进程的maps文件,实现反调试;
步骤3,主进程和子进程之间通过管道通信进行状态交互,实现保活功能,当主进程发送异常信号时结束进程。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810233288.5A CN108388778B (zh) | 2018-03-21 | 2018-03-21 | Android平台融合多特征的APP反调试方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810233288.5A CN108388778B (zh) | 2018-03-21 | 2018-03-21 | Android平台融合多特征的APP反调试方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108388778A CN108388778A (zh) | 2018-08-10 |
CN108388778B true CN108388778B (zh) | 2021-03-30 |
Family
ID=63068210
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810233288.5A Expired - Fee Related CN108388778B (zh) | 2018-03-21 | 2018-03-21 | Android平台融合多特征的APP反调试方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108388778B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109684795B (zh) * | 2018-12-25 | 2023-01-24 | 成都卫士通信息产业股份有限公司 | 应用程序反调试的方法、装置及电子设备 |
US11409635B2 (en) | 2019-08-23 | 2022-08-09 | Raytheon Company | Hacker-resistant anti-debug system |
CN111427623B (zh) * | 2020-03-20 | 2023-06-30 | 北京奇艺世纪科技有限公司 | 程序退出方法、装置、计算机设备和存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105793860A (zh) * | 2013-11-14 | 2016-07-20 | Inka安特沃客有限公司 | 反调试方法 |
CN106096338A (zh) * | 2016-06-07 | 2016-11-09 | 西北大学 | 一种具有数据流混淆的虚拟化软件保护方法 |
CN106778098A (zh) * | 2015-11-24 | 2017-05-31 | 中国移动通信集团公司 | 一种安卓系统应用程序的保护方法和装置 |
CN106845170A (zh) * | 2017-01-20 | 2017-06-13 | 武汉斗鱼网络科技有限公司 | 一种反调试方法和系统 |
CN107169324A (zh) * | 2017-05-12 | 2017-09-15 | 北京理工大学 | 一种基于动态加解密的Android应用加固方法 |
CN107239698A (zh) * | 2017-05-27 | 2017-10-10 | 北京洋浦伟业科技发展有限公司 | 一种基于信号处理机制的反调试方法和装置 |
-
2018
- 2018-03-21 CN CN201810233288.5A patent/CN108388778B/zh not_active Expired - Fee Related
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105793860A (zh) * | 2013-11-14 | 2016-07-20 | Inka安特沃客有限公司 | 反调试方法 |
CN106778098A (zh) * | 2015-11-24 | 2017-05-31 | 中国移动通信集团公司 | 一种安卓系统应用程序的保护方法和装置 |
CN106096338A (zh) * | 2016-06-07 | 2016-11-09 | 西北大学 | 一种具有数据流混淆的虚拟化软件保护方法 |
CN106845170A (zh) * | 2017-01-20 | 2017-06-13 | 武汉斗鱼网络科技有限公司 | 一种反调试方法和系统 |
CN107169324A (zh) * | 2017-05-12 | 2017-09-15 | 北京理工大学 | 一种基于动态加解密的Android应用加固方法 |
CN107239698A (zh) * | 2017-05-27 | 2017-10-10 | 北京洋浦伟业科技发展有限公司 | 一种基于信号处理机制的反调试方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN108388778A (zh) | 2018-08-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8291379B2 (en) | Runtime analysis of a computer program to identify improper memory accesses that cause further problems | |
US8037459B2 (en) | Recovery from nested exceptions in an instrumentation routine | |
CN108388778B (zh) | Android平台融合多特征的APP反调试方法 | |
CN108197032B (zh) | Ios应用的主线程卡顿监测方法、介质、设备及系统 | |
US8250543B2 (en) | Software tracing | |
KR102025078B1 (ko) | 단일 스텝 실행을 이용한 코드 진단 | |
US20080127117A1 (en) | Method and apparatus for instrumentation in a multiprocessing environment | |
US10089126B2 (en) | Function exit instrumentation for tail-call optimized code | |
US10984096B2 (en) | Systems, methods, and apparatus for detecting control flow attacks | |
US20070079288A1 (en) | System and method for capturing filtered execution history of executable program code | |
WO2011084535A2 (en) | Establishing a useful debugging state for a multithreaded computer program | |
Barbosa et al. | Assembly-level pre-injection analysis for improving fault injection efficiency | |
CN108021791B (zh) | 数据保护方法及装置 | |
US7657792B2 (en) | Identifying race conditions involving asynchronous memory updates | |
CN105095079B (zh) | 一种热点模块指令跟踪的方法及设备 | |
US7526756B2 (en) | Address watch breakpoints with basing pointers | |
CN116841862A (zh) | 死锁检测方法 | |
Borchert et al. | Return-address protection in C/C++ code by dependability aspects | |
CN115878363A (zh) | 用于解析处理器异常的方法、装置及计算机可读存储介质 | |
CN106095631B (zh) | 一种基于有限状态机实现的多周期非流水线cpu动态调试方法 | |
US20190034259A1 (en) | Systems and Methods for Implementing a Thread Trace Log | |
CN113986622A (zh) | Sdk异常的自检方法、装置、介质和计算设备 | |
US20080239942A1 (en) | Systems and methods for verifying recovery from an intermittent hardware fault | |
Damodaran-Kamal et al. | mdb: A semantic race detection tool for PVM | |
Liang et al. | RIPT--An Efficient Multi-Core Record-Replay System |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20210330 |