CN108388778B - Android平台融合多特征的APP反调试方法 - Google Patents

Android平台融合多特征的APP反调试方法 Download PDF

Info

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
Application number
CN201810233288.5A
Other languages
English (en)
Other versions
CN108388778A (zh
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.)
Beijing Institute of Technology BIT
Original Assignee
Beijing Institute of Technology BIT
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 Beijing Institute of Technology BIT filed Critical Beijing Institute of Technology BIT
Priority to CN201810233288.5A priority Critical patent/CN108388778B/zh
Publication of CN108388778A publication Critical patent/CN108388778A/zh
Application granted granted Critical
Publication of CN108388778B publication Critical patent/CN108388778B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/554Detecting local intrusion or implementing counter-measures involving event detection and direct action

Abstract

本发明涉及Android平台融合多特征的APP反调试方法,属于计算机与信息科学技术领域。本发明首先创建子进程,实现对主进程的主动跟踪,同时向主进程写入数据,用于动态加载时生成密钥;然后主进程开启线程分别进行暗桩检测、系统文件监控和子进程监控主进程循环检测主进程和子进程状态,当三个模块任意一个发送异常时退出应用程序;同时子进程与主进程保活交互,保证子进程不被挂起,主进程被监控模块监控,当主进程发送异常信号时结束进程。本发明能够有效地对抗调试攻击和反反调试攻击,提高了APP防护能力。

Description

Android平台融合多特征的APP反调试方法
技术领域
本发明涉及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,主进程和子进程之间通过管道通信进行状态交互,实现保活功能,当主进程发送异常信号时结束进程。
CN201810233288.5A 2018-03-21 2018-03-21 Android平台融合多特征的APP反调试方法 Expired - Fee Related CN108388778B (zh)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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 北京洋浦伟业科技发展有限公司 一种基于信号处理机制的反调试方法和装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
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