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

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

Info

Publication number
CN108388778A
CN108388778A CN201810233288.5A CN201810233288A CN108388778A CN 108388778 A CN108388778 A CN 108388778A CN 201810233288 A CN201810233288 A CN 201810233288A CN 108388778 A CN108388778 A CN 108388778A
Authority
CN
China
Prior art keywords
host process
subprocess
app
testing
host
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.)
Granted
Application number
CN201810233288.5A
Other languages
English (en)
Other versions
CN108388778B (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

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

Landscapes

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

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 (5)

1.Android平台融合多特征的app反调试方法,其特征在于所述方法包括如下步骤:
步骤1,通过fork创建子进程,子进程利用ptrace实现对主进程的主动跟踪,同时向主进程写入数据,用于动态加载时生成密钥;
步骤2,主进程开启线程分别进行暗桩检测、系统文件监控和子进程监控主进程循环检测主进程和子进程状态,当三个模块任意一个发送异常时退出应用程序;
步骤3,主进程和子进程之间通过管道通信进行状态交互,实现保活功能,当主进程发送异常信号时结束进程。
2.根据权利要求1所述的融合多特征的app反调试方法,其特征在于:步骤1中主进程将通信数据用于动态加载模块,将双进程反调试与动态加载耦合。
3.根据权利要求1所述的融合多特征的app反调试方法,其特征在于:步骤1中子进程通过ptrace跟踪主进程,并向主进程写入密钥数据。
4.根据权利要求1所述的融合多特征的app反调试方法,其特征在于:步骤2中暗桩检测包括主进程和子进程相关调试特征的检测。
5.根据权利要求1所述的融合多特征的app反调试方法,其特征在于:步骤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 true CN108388778A (zh) 2018-08-10
CN108388778B 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)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109684795A (zh) * 2018-12-25 2019-04-26 成都卫士通信息产业股份有限公司 应用程序反调试的方法、装置及电子设备
CN111427623A (zh) * 2020-03-20 2020-07-17 北京奇艺世纪科技有限公司 程序退出方法、装置、计算机设备和存储介质
US11409635B2 (en) 2019-08-23 2022-08-09 Raytheon Company Hacker-resistant anti-debug system

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 (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105793860A (zh) * 2013-11-14 2016-07-20 Inka安特沃客有限公司 反调试方法
US20160300044A1 (en) * 2013-11-14 2016-10-13 Inka Entworks, Inc. Anti-debugging method
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 北京洋浦伟业科技发展有限公司 一种基于信号处理机制的反调试方法和装置

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109684795A (zh) * 2018-12-25 2019-04-26 成都卫士通信息产业股份有限公司 应用程序反调试的方法、装置及电子设备
CN109684795B (zh) * 2018-12-25 2023-01-24 成都卫士通信息产业股份有限公司 应用程序反调试的方法、装置及电子设备
US11409635B2 (en) 2019-08-23 2022-08-09 Raytheon Company Hacker-resistant anti-debug system
CN111427623A (zh) * 2020-03-20 2020-07-17 北京奇艺世纪科技有限公司 程序退出方法、装置、计算机设备和存储介质

Also Published As

Publication number Publication date
CN108388778B (zh) 2021-03-30

Similar Documents

Publication Publication Date Title
Muench et al. What You Corrupt Is Not What You Crash: Challenges in Fuzzing Embedded Devices.
US6944796B2 (en) Method and system to implement a system event log for system manageability
KR101519845B1 (ko) 안티디버깅 방법
CN105745626B (zh) 基于进程快照的诊断生产应用
KR101019210B1 (ko) 이뮬레이트를 활용한 임베디드 소프트웨어 테스트 장치 및그 방법
CN109583200B (zh) 一种基于动态污点传播的程序异常分析方法
JP4518564B2 (ja) 不正コード実行の防止方法、不正コード実行の防止用プログラム、及び不正コード実行の防止用プログラムの記録媒体
CN102346708B (zh) 一种调试器及其调试方法
KR101019209B1 (ko) 임베디드 소프트웨어의 인터페이스 자동 추출 장치 및 그방법
US20070079288A1 (en) System and method for capturing filtered execution history of executable program code
CN108388778A (zh) Android平台融合多特征的APP反调试方法
CN109558726B (zh) 一种基于动态分析的控制流劫持攻击检测方法与系统
CN106055983A (zh) 一种基于IDA通信的Android应用反调试方法
CN101872323A (zh) 一种基于虚拟机的故障注入测试方法
US9069894B2 (en) Data collisions in concurrent programs
CN108197476B (zh) 一种智能终端设备的漏洞检测方法及装置
CN105718374A (zh) 一种热点模块指令跟踪的方法及系统
CN104077220A (zh) Mips架构操作系统内核的调试方法和装置
CN108021791A (zh) 数据保护方法及装置
CN110704315B (zh) 一种嵌入式软件测试的故障注入装置
CN105095079B (zh) 一种热点模块指令跟踪的方法及设备
CN109726115B (zh) 一种基于Intel处理器跟踪的反调试自动绕过方法
CN115878363A (zh) 用于解析处理器异常的方法、装置及计算机可读存储介质
Li et al. Hardware-assisted memory tracing on new socs embedding fpga fabrics
CN115905012A (zh) 嵌入式系统软件开发场景下的调试分析系统、方法、电子设备及存储介质

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

Granted publication date: 20210330

CF01 Termination of patent right due to non-payment of annual fee