一种基于IDA通信的Android应用反调试方法技术

技术编号:13944998 阅读:64 留言:0更新日期:2016-10-30 02:02
本发明专利技术公布了一种基于IDA通信的Android应用反调试方法,将反调试程序写在Android应用程序中,通过JNI_OnLoad实现加载,在Android应用程序运行时首先运行反调试程序;反调试方法包括一般反调试检测、IDA通信检测和跟踪检测;在一般反调试检测时,检测硬件信息,当检测到模拟器或调试器信息时,退出该应用;再检测时间差,当没有被单步调试执行的进程时,退出应用;检测IDA通信端口和进程,当状态为建立连接时,往下运行;否则退出;检测通信模式,当存在IDA调试时,退出应用;检测IDA进程跟踪,当存在被调试的IDA程序时,退出应用;否则,继续正常运行该Android应用。利用本发明专利技术方法,可有效地对Android应用程序进行版权保护,防止其被调试。

【技术实现步骤摘要】

本专利技术涉及IDA通信检测和应用软件反调试技术,尤其涉及一种基于IDA通信(Interactive DisAssembler,交互式反汇编器)的Android应用反调试方法。
技术介绍
随着计算机技术应用日益普及,Android智能终端的快速发展,Android软件产业得以飞速发展,与此同时,攻击者利用Android软件逆向技术对软件的各种攻击和未授权使用以及盗版复制等行为也越来越多。Android逆向分析技术可以被用来在不知道应用程序源代码的情况下分析应用程序的功能流程、篡改应用程序的数据代码等,逆向分析技术如果被不加限制的恶意使用,利用者可以分析获取应用程序的核心技术,也可以篡改应用程序的签名和作者信息,还可以将恶意代码注入到已有的应用程序中并通过二次打包进行伪装,这些行为都极大的危害了应用程序开发者的利益,严重损害了广大用户的隐私安全。在Android软件逆向技术中,Android调试技术是一个非常重要的组成部分。通过进行Android应用的调试,可以得到Android应用的运行流程,推断出Android应用的基本原理,通常可以非常顺利且快速地绕过一些登陆限制或功能限制,获取到一些用户私密信息,具有较大的危害。IDA Pro名称为交互式反汇编器专业版(Interactive Disassembler Professional),人们常称其为IDA Pro,或简称为IDA,是Hex-Rayd公司的一款产品。就其本质而言,IDA是一种递归下降反汇编器。除反汇编过程本身外,IDA在区分数据与代码的同时,还设法确定这些数据的类型。虽然在IDA中看到的是汇编语言形式的代码,但IDA的主要目标之一在于,呈现尽可能接近源代码的代码。此外,IDA不仅使用数据类型信息,而且通过派生的变量和函数名称来尽其所能地注释生成的反汇编代码。这些注释将原始十六进制代码的数量减到最少,并显著增加了向用户提供的符号化信息的数量。IDA在版本4.5中引入了一个调试器,从而巩固了IDA作为一种常用逆向工程工具的地位。在随后的版本中,IDA的调试功能不断扩展。IDA的最新版本能够在各种不同的平台上进行本地和远程调试,并支持许多不同的处理器。近年来,随着IDA Pro功能的不断完善,IDA Pro作为调试器的功能也越来越突出。IDA调试器可以进行本地调试和远程调试。对本地调试而言,只能调试可在你的平台上运行的二进制文件。对于在其他平台或CPU上运行的二进制文件,没有模拟层允许它们在IDA的本地调试器中运行。至于远程调试,IDA自带了许多调试服务器,包括用于Windows 32/64、Windows CE/ARM、Mac OS X 32/64、Linux 32/64/ARM和Android的服务器。调试服务器旨在与要调试的二进制文件并行执行。运行远程调试服务器后,IDA将能够与该服务器通信,在远程计算机上启动目标进程,或依附到该进程。因此IDA对于Android应用的调试主要是采用远程调试技术。IDA调试Android应用的一般流程如下:1、要开始调试,首先需要在进行进程调试的计算机上启动相应的调试服务器组件。如果要将Windows版本的IDA作为调试客户端,并且希望远程调试Android应用程序,则除了要调试的二进制文件外,只需复制android_server文件并赋予其相关的权限在Android系统上执行该文件,android_server进程启动后默认会监听23946端口。2、通过adb(Android Debug Bridge,Android调试桥)进行tcp端口转发,默认端口为23946,例如“adb forward tcp:23946tcp:23946”。3、调试模式启动程序adb shell am start-D-n包名/类名。Android应用会弹出”Waitting for debugger”对话。4、启动IDA,点击”Debugger->Attach->Remote ArmLinux/Android debugger”进行基本的设置。然后选中要调试的进程,将调试程序attach到该进程上去。5、然后可以执行要进行的调试操作。从IDA调试Android应用的一般流程中可以看出IDA调试Android应用的基本原理,IDA在调试Android应用时通过与调试服务器进行通信,建立TCP连接,监测并控制Android应用进程的运行情况,实现调试Android应用的功能。反调试是指通过多种检测方法来判断是否有调试器存在或者有调试程序的进程存在,从而阻止Android应用被调试。目前针对Android应用的反调试技术主要通过检测时间差来检测是否中间有被单步调试执行;检测是否加载了com.android.reverse,检测到则直接退出;检测手机上的一些硬件信息,判断是否在模拟器或调试器中;基于ptrace系统调用的反调试技术等方法。综上,目前虽然提出了一些反调试方法,但多数是通用方法,并没有专门针对IDA进行反调试的技术。
技术实现思路
为了克服上述现有技术的不足,本专利技术提供一种基于IDA通信(Interactive DisAssembler,交互式反汇编器)的Android应用反调试方法,涉及到一般反调试检测,IDA通信检测,IDA进程跟踪检测等方法,使得IDA不能对Android应用进行调试;另外,需保证加入反调试代码的Android应用可以正常执行;从而达到保护版权,防止他人剽窃软件中的智力成果或对软件进行有目的的篡改的目的。本专利技术的原理是:一个Android应用在打包成APK文件之后,APK中会包含dex文件、so文件、资源文件和框架文件。本专利技术提供的基于IDA通信的Android应用反调试方法,其前提是在Android应用运行时,要在程序运行时首先运行反调试程序,实现方法是将反调试程序写在so文件中,通过JNI_OnLoad实现加载。Java Native Interface(JNI)标准是java平台的一部分,它允许Java代码和其他语言写的代码进行交互。JNI是本地编程接口,它使得在Java虚拟机(VM)内部运行的Java代码能够与用其它编程语言(如C、C++和汇编语言)编写的应用程序和库进行交互操作。当Android的VM(Virtual Machine)执行到System.loadLibrary()函数时,首先会去执行C组件里的JNI_OnLoad()函数。反调试方法的整体的流程是首先进行一般反调试检测,使用通用的检测方法将明显的调试检测出来。然后进行IDA通信检测,针对IDA调试进行检测,判断是否存在IDA调试。最后进行IDA进程跟踪检测,判断是否存在IDA跟踪进程。整个过程在Android应用运行时同时循环执行,确保实现反调试功能,阻止IDA Pro软件进行Android应用调试。本专利技术提供的技术方案是:一种基于IDA通信的Android应用反调试方法,将反调试程序写在Android应用程序中,通过JNI_OnLoad实现加载,在Android应用程序运行时首先运行所述反调试程序;所述反调试方法包括一般反调试检测、IDA通信检测和跟踪检测;具体包括如下步骤,A.在一般反调试本文档来自技高网
...

【技术保护点】
一种基于IDA通信的Android应用反调试方法,将反调试程序写在Android应用程序中,通过JNI_OnLoad实现加载,在Android应用程序运行时首先运行所述反调试程序;所述反调试方法包括一般反调试检测、IDA通信检测和进程跟踪检测;具体包括如下步骤,A.在一般反调试检测时,执行如下操作:A1.检测硬件信息,判断Android应用程序是否在模拟器或调试器中,当检测到模拟器或调试器信息时,强制退出该Android应用,不让该Android应用被调试;反之,则不做操作,继续执行;A2.通过检测时间差,判断是否有被单步调试执行的进程;当有被单步调试执行的进程时,往下运行;否则退出程序强制将该Android应用退出,不让该应用被调试;B.在进行IDA通信检测时,执行如下操作:B1.检测IDA通信中所使用的端口,读取通信连接进程文件,当状态为建立连接时,往下运行;否则退出应用程序,停止调试;B2.通过检测通信模式是否符合IDA通信模式,判断是否存在IDA调试;当存在IDA调试时,退出应用程序,停止调试;否则继续运行;C.在IDA进程跟踪检测时,读取Android应用的进程信息,根据进程信息判断是否存在IDA跟踪进程;当存在被调试的IDA程序时,将该Android应用退出;否则,该Android应用程序继续正常运行。...

【技术特征摘要】
1.一种基于IDA通信的Android应用反调试方法,将反调试程序写在Android应用程序中,通过JNI_OnLoad实现加载,在Android应用程序运行时首先运行所述反调试程序;所述反调试方法包括一般反调试检测、IDA通信检测和进程跟踪检测;具体包括如下步骤,A.在一般反调试检测时,执行如下操作:A1.检测硬件信息,判断Android应用程序是否在模拟器或调试器中,当检测到模拟器或调试器信息时,强制退出该Android应用,不让该Android应用被调试;反之,则不做操作,继续执行;A2.通过检测时间差,判断是否有被单步调试执行的进程;当有被单步调试执行的进程时,往下运行;否则退出程序强制将该Android应用退出,不让该应用被调试;B.在进行IDA通信检测时,执行如下操作:B1.检测IDA通信中所使用的端口,读取通信连接进程文件,当状态为建立连接时,往下运行;否则退出应用程序,停止调试;B2.通过检测通信模式是否符合IDA通信模式,判断是否存在IDA调试;当存在IDA调试时,退出应用程序,停止调试;否则继续运行;C.在IDA进程跟踪检测时,读取Android应用的进程信息,根据进程信息判断是否存在IDA跟踪进程;当存在被调试的IDA程序时,将该Android应用退出;否则,该Android应用程序继续正常运行。2.如权利要求1所述基于IDA通信的Android应用反调试方法,其特征是,A1所述硬件信息具体包括:“/dev/socket/qemud”通道、“/dev/qemu_pipe”通道、已知QEmu的驱动程序的列表、模拟器上文件信息、设备IDS信息、手机硬件信息和手机运营商家信息。3.如权利要求1所述基于IDA通信的An...

【专利技术属性】
技术研发人员:文伟平
申请(专利权)人:北京鼎源科技有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1