CN109977671B - 一种基于编译器修改的Android锁屏型勒索软件检测方法 - Google Patents

一种基于编译器修改的Android锁屏型勒索软件检测方法 Download PDF

Info

Publication number
CN109977671B
CN109977671B CN201910194070.8A CN201910194070A CN109977671B CN 109977671 B CN109977671 B CN 109977671B CN 201910194070 A CN201910194070 A CN 201910194070A CN 109977671 B CN109977671 B CN 109977671B
Authority
CN
China
Prior art keywords
instruction
executing
marking
flag
type
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.)
Active
Application number
CN201910194070.8A
Other languages
English (en)
Other versions
CN109977671A (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.)
Xidian University
Original Assignee
Xidian University
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 Xidian University filed Critical Xidian University
Priority to CN201910194070.8A priority Critical patent/CN109977671B/zh
Publication of CN109977671A publication Critical patent/CN109977671A/zh
Application granted granted Critical
Publication of CN109977671B publication Critical patent/CN109977671B/zh
Active 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/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/56Computer malware detection or handling, e.g. anti-virus arrangements
    • 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/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/561Virus type analysis

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Virology (AREA)
  • General Health & Medical Sciences (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本发明公开了一种基于编译器修改的Android锁屏型勒索软件检测方法,包括:修改dex2oat编译器主函数的代码,将锁屏型Android勒索软件待监控的高危方法和参数初始化在列表中;修改dex2oat编译器优化编译模块的代码,采用注入指令的方式标记高危方法和参数;编译Android系统ART模块源代码,生成可注入标记指令的dex2oat编译器;应用程序运行过程中捕获标记指令,通过匹配既定特征库检测Android锁屏型勒索软件。该方法动态实时地监控判断当前操作,及时提醒用户并保护设备不受入侵。提高了勒索软件的识别率,高效地解决了Android锁屏型勒索软件带来的安全威胁。

Description

一种基于编译器修改的Android锁屏型勒索软件检测方法
技术领域
本发明属于移动安全领域,涉及恶意软件的检测,具体是一种基于编译器修改的Android锁屏型勒索软件检测方法,可用于保护Android系统的安全。
背景技术
近年来,Android逐渐成为主流的移动端操作系统,人们对其依赖性日益增强,各类重要的数据文件经常存储于移动设备中。由此,勒索软件也逐渐由PC端向移动端转移,而Android的开源性更容易使其成为勒索软件的攻击目标。Android锁屏型勒索软件通常伪装成正常软件,诱导用户安装,运行后频繁弹出窗口或锁定屏幕,造成设备无法正常使用,攻击者以此胁迫用户支付赎金恢复设备的正常使用。Android系统中锁屏型勒索软件的检测和防御成为移动安全领域亟待解决的问题。
从Android 5.0版本开始,ART(Android Runtime)虚拟机取代了传统的Dalvik虚拟机,提高了应用的运行性能。ART虚拟机的编译工具dex2oat将原始的APK文件编译为OAT文件,在Android 6.0版本后,Optimizing成为默认的编译后端。锁屏型勒索软件与其它应用程序相同,被安装到设备上后,系统首先将APK文件解压出classes.dex文件,之后利用dex2oat工具对dex字节码文件进行编译;在这个编译过程中,Optimizing编译后端将dex字节码转化为基于Graph的IR中间代码,再经过一系列的指令优化后,最终生成运行在ART虚拟机中的OAT文件。锁屏型勒索软件的OAT文件在虚拟机运行之后会出现以下三种情况的一种或多种:(1)置顶无法取消的弹窗;(2)频繁强制置顶应用界面,无法正常切换应用程序;(3)激活设备管理器,重置设备PIN码。这些行为都会严重影响设备的正常使用,攻击者以此胁迫用户支付解锁费用。
目前,针对Android系统中锁屏型勒索软件检测的研究较少,已有的解决方案主要采取静态分析的方法,大体分为两种:一种是基于特征优选的静态分析方法(比如南京大学提出的“一种特征优选的Android勒索软件检测方法”),这种方法需要根据初始样本API特征集合,提取训练样本的特征,之后利用特征集合训练勒索软件的分类器,最后形成用于检测勒索样本的检测器。另外一种是基于Smali代码信息流的静态分析方法(比如意大利都灵理工大学提出的HelDroid系统),这种方法通过对APK文件反编译得到的Smali代码进行信息流分析,判断其是否符合勒索软件的特征。这两种静态分析方法都存在固有的缺陷,比如它们都无法检测代码混淆加固后的勒索软件,对于新型勒索软件检测的效果也非常有限,并且它们只能在应用程序执行前检测,不能确定程序上下文在某些特定点的执行是否有效,存在较大的漏报率。
发明内容
本发明的目的在于针对上述现有技术中的问题,提供一种基于编译器修改的Android锁屏型勒索软件检测方法。对于安装在设备上的未知应用,在其运行过程中,该方法通过监控其应用层的方法调用,动态实时地判断当前操作是否为危险操作,然后根据高危方法调用流程或参数设置综合判断该应用是否为锁屏型勒索软件,及时提醒用户并保护设备不受入侵。这种方法克服了原来静态分析方法的不足,它无需修改APK文件签名,提高了勒索软件的识别率,而且方便设备厂商使用,防止勒索软件的大规模入侵,快速高效地解决了Android锁屏型勒索软件带来的安全威胁。
本发明是通过下述技术方案来实现的。
一种基于编译器修改的Android锁屏型勒索软件检测方法,包括如下步骤:
S01,修改dex2oat编译器主函数的代码,将Android锁屏型勒索软件待监控的高危方法和参数初始化在列表中;
S02,修改dex2oat编译器优化编译模块的代码,采用注入指令的方式标记高危方法和参数;
S03,编译器源码修改结束后,编译Android系统ART模块源代码,生成可注入标记指令的dex2oat编译器;
S04,应用程序运行过程中捕获标记指令,通过匹配既定特征库检测Android锁屏型勒索软件。
对于上述技术方案,本发明还有进一步优选的方案:
进一步,所述步骤S01中,具体包括如下步骤:
11)初始化悬浮窗类型勒索软件的高危方法和参数,用于悬浮窗标记指令的注入,初始化的内容包括悬浮窗参数特征列表和悬浮窗方法特征列表;
12)初始化设备管理器重置密码类型勒索软件的高危方法,用于设备管理器重置密码标记指令的注入,初始化的内容包括重置密码方法特征列表;
13)初始化界面劫持类型勒索软件的高危方法和参数,用于界面劫持标记指令的注入,初始化的内容包括劫持次数阈值、获取顶层应用次数、界面启动次数、界面劫持方法特征列表和参数特征列表。
进一步,所述步骤S02中,具体包括如下步骤:
21)在dex2oat编译器优化编译时,获取待优化的Graph对象,将其设置为当前Graph,获取当前Graph的第一条指令;
22)判断该指令名称是否在步骤11)中的悬浮窗方法列表中,如果是,执行步骤25),否则执行步骤23);
23)判断该指令名称是否在步骤12)中的重置密码方法列表中,如果是,执行步骤26),否则执行步骤24);
24)判断该指令名称是否在步骤13)中的界面劫持方法列表中,如果是,执行步骤27),否则执行步骤28);
25)注入悬浮窗标记指令;
26)注入重置密码标记指令;
27)注入界面劫持标记指令;
28)继续获取当前Graph对象的下一条指令,如果获取成功,跳转到步骤22),否则执行步骤29);
29)当前Graph的指令标记完成,执行步骤210);
210)继续获取下一个Graph,如果获取成功,跳转到步骤21),否则执行步骤211);
211)标记添加结束。
进一步,所述步骤25)中,具体包括如下步骤:
25-1)判断该指令是否为接口调用类型的指令,如果是,执行步骤25-2);否则执行步骤28);
25-2)判断该指令的名称是否为WindowManager类的addView()方法,如果是,执行步骤25-3);否则执行步骤28);
25-3)将该指令设置为当前指令,获取当前指令中的第三个参数,即layoutParams指令;
25-4)创建实例调用类型的AddView()方法标记指令,将AddView()的传入参数设置为步骤25-3)中获取的layoutParams指令,在AddView()方法体内加入高危参数检测逻辑;
25-5)获取当前指令所在的Block,在当前指令前添加步骤25-4)中的AddView()方法标记指令,执行步骤28)。
进一步,所述步骤25-4)中,检测逻辑如下:
25-4a)获取layoutParams字段中宽度、高度、类型和标志的值;
25-4b)如果宽度和高度的值均为-1,且类型的值为2010,则执行步骤25-4g);否则执行步骤25-4c);
25-4c)如果宽度和高度的值均为-2,且类型的值为2010,且标志的值不包含FLAG_NOT_FOCUSABLE,则执行步骤25-4g);否则执行步骤25-4d);
25-4d)如果宽度和高度的值均为-1,且类型的值为2002或2003或2005或2006或2007,且标志的值不包含FLAG_SCALED,则执行步骤25-4g);否则执行步骤25-4e);
25-4e)如果宽度和高度的值均为-2,且类型的值为2002或2003或2005或2007,且标志的值不包含FLAG_NOT_FOCUSABLE或FLAG_SCALED,则执行步骤25-4g);否则执行步骤25-4f);
25-4f)如果宽度和高度的值均为-2,且类型的值为2006,且标志的值包含FLAG_DIM_BEHIND或FLAG_SHOW_WALLPAPER,则执行步骤25-4g);否则跳转到步骤25-5);
25-4g)在AddView()方法体内添加高危参数标记,输出标记日志。
进一步,所述步骤26)中,具体包括如下步骤:
26-1)判断该指令是否为实例调用类型的指令,如果是,执行步骤26-2);否则执行步骤28);
26-2)判断该指令的名称是否为DevicePolicyManager类的resetPassword()方法,如果是,执行步骤26-3);否则执行步骤28);
26-3)将该指令设置为当前指令,获取当前指令中的第二个参数,即password指令;
26-4)创建实例调用类型的方法标记指令ResetPassword(),将ResetPassword()方法的传入参数设置为步骤26-3)中的password指令,在ResetPassword()方法体内添加高危方法标记逻辑;
26-5)获取当前指令所在的Block,在当前指令前添加步骤26-4)中的ResetPassword()方法标记指令,执行步骤28)。
进一步,所述步骤26-4)中,标记逻辑如下:
26-4a)获取传入参数password;
26-4b)在ResetPassword()方法体内添加高危方法标记,输出password及标记日志。
进一步,所述步骤27)中,具体包括如下步骤:
27-1)判断该指令是否为实例调用类型的指令,如果是,执行步骤27-2);否则执行步骤28);
27-2)判断该指令的名称是否为ActivityManager类的getRunningTasks()方法,如果是,执行步骤27-3);否则执行步骤27-5);
27-3)将该指令设置为当前指令,创建实例调用类型的方法标记指令RunTask(),该指令的传入参数设置为空,在该标记指令的方法体内添加高危方法标记,输出标记日志;
27-4)获取当前指令所在的Block,在当前指令前添加步骤27-3)中的RunTask()方法标记指令,执行步骤28);
27-5)判断该指令的名称是否为Activity类或Context类的startActivity()方法,如果是,执行步骤27-6);否则执行步骤28);
27-6)将该指令设置为当前指令,获取当前指令的第二个参数Intent的指令信息;
27-7)创建实例调用类型的方法标记指令AddFlags(),将AddFlags()的传入参数设置为步骤27-6)中获取的Intent参数,在AddFlags()方法体内添加高危字段检测逻辑;
27-8)获取当前指令所在的Block,在当前指令前添加步骤27-7)中的AddFlags()方法标记指令。
进一步,所述步骤27-7)中,检测逻辑步骤如下:
27-7a)获取Intent字段中的标志参数;
27-7b)判断标志参数中是否包含FLAG_ACTIVITY_NEW_TASK,如果包含,执行步骤27-7c);否则跳转到步骤27-8);
27-7c)在AddFlags()方法体内添加高危参数标记,输出标记日志。
进一步,所述步骤S04中,具体包括如下步骤:
41)取一个应用程序样本,采用步骤S03中的dex2oat编译器将其编译安装到设备中;
42)运行安装到设备上的应用程序;
43)如果捕获到悬浮窗标记,执行步骤44);如果捕获到设备管理器重置密码标记,执行步骤45);如果捕获到界面劫持标记,执行步骤46);否则执行步骤48);
44)进入悬浮窗标记方法体,传入参数为高危字段的值,判断传入参数是否符合AddView()标记方法的高危参数检测逻辑,如果符合,执行步骤47);否则执行步骤48);
45)进入设备管理器标记方法体,传入参数为password,判断传入参数是否符合ResetPassword()标记方法的高危方法标记逻辑,如果符合,执行步骤47);否则执行步骤48);
46)进入界面劫持标记方法体;
47)检测出锁屏型Android勒索软件,提醒用户退出应用;
48)应用继续在ART虚拟机中运行,返回步骤43)。
进一步,步骤46)中,劫持标记方法体步骤如下:
46a)判断标记方法体是否为RunTask()标记,如果是,则执行步骤46b);否则执行步骤46c);
46b)将获取顶层应用次数加1,执行步骤46f);
46c)判断标记方法体是否为AddFlags()标记,如果是,则执行步骤46d);否则执行步骤48);
46d)判断传入参数是否符合AddFlags()标记方法的高危参数检测逻辑,如果是,则执行步骤46e);否则执行步骤48);
46e)将启动界面次数加1,执行步骤46f);
46f)判断获取顶层应用次数和启动界面次数的值是均否达到步骤13)中的劫持次数阈值,如果是,执行步骤47);否则执行步骤48)。
与现有技术相比,本发明具有如下的有益效果:
本发明基于ART虚拟机编译器修改技术,在Android系统编译APK文件阶段,采用注入指令的方式标记高危方法或参数;编译完成后,应用在ART虚拟机中运行时,通过监控标记指令捕获高危方法调用和传入参数等信息,与锁屏型勒索软件既定特征库进行匹配,最终实现基于编译器修改的Android锁屏型勒索软件的检测。与现有技术相比,本发明无需修改应用程序的签名,系统修改代码量少,方便厂商应用,而且特征库可动态更新,在指令级上标记高危方法和参数,应用程序运行时动态检测标记指令,对新型锁屏型勒索软件有效,识别率高。此外,本发明具有良好的适用性和扩展性,除了用于锁屏型勒索软件的检测,相关技术方法还能够扩展到对Android设备中加密型勒索软件的检测,以及其它恶意软件方法调用的动态分析等。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,并不构成对本发明的不当限定,在附图中:
图1为本发明总体流程图;
图2为本发明原理图;
图3为本发明修改编译器注入指令流程图;
图4为本发明运行过程中勒索软件检测流程图。
具体实施方式
下面将结合附图以及具体实施例来详细说明本发明,在此本发明的示意性实施例以及说明用来解释本发明,但并不作为对本发明的限定。
本发明的总体流程如图1所示。本发明基于编译器修改实现Android锁屏型勒索软件的检测。本发明主要包括源码修改、运行检测两个部分。其中源码修改主要包括初始化待监控的方法、参数信息和注入高危方法标记指令两个部分,其中的标记指令主要包括悬浮窗标记、设备管理器重置密码标记和界面劫持标记。运行检测部分包括编译生成可注入指令的dex2oat编译器、安装运行应用程序、捕获注入的高危方法标记、匹配特征库检测Android锁屏勒索软件四个部分,其中的特征库匹配用于判定该应用是否为Android锁屏型勒索软件,如果是,则及时提醒用户,保护设备不受到侵害。
本发明的具体原理如图2所示,本发明通过修改编译器源码,生成了可注入标记指令的编译器,之后采用该编译器编译安装并运行应用程序,应用程序的dex文件首先转化为基于Graph的中间指令,之后本发明遍历所有指令,判断是否需要注入标记指令和相关参数检测逻辑,最后采用Optimizing编译后端对标记后的Graph进行优化,生成最终的OAT文件。应用运行的过程中,判断其是否触发编译过程中的标记指令以及是否符合既定特征库,不匹配则说明不包含锁屏勒索软件特征,可继续运行;若匹配成功则说明检测出锁屏勒索软件,提醒用户并退出应用。
本发明基于编译器修改的Android锁屏型勒索软件检测方法,具体包括以下步骤:
步骤一、修改dex2oat编译器主函数的代码,将Android锁屏型勒索软件待监控的高危方法和参数初始化在列表中;
高危方法和参数的初始化需要在dex2oat编译前进行,因此本发明选择修改dex2oat的主函数main()函数的代码,加入高危方法和参数的初始化逻辑。
1.1初始化悬浮窗类型勒索软件的高危方法和参数,用于悬浮窗标记指令的注入,初始化的内容包括悬浮窗参数特征列表和悬浮窗方法特征列表;
其中,悬浮窗参数特征列表包括悬浮窗类型参数、标志参数、宽度参数和高度参数。类型参数包括TYPE_PHONE、TYPE_SYSTEM_ALERT、TYPE_TOAST、TYPE_SYSTEM_OVERLAY、TYPE_PRIORITY_PHONE和TYPE_SYSTEM_ERROR;标志参数包括FLAG_DIM_BEHIND、FLAG_NOT_FOCUSABLE、FLAG_SCALED、FLAG_SHOW_WALLPAPER;宽度和高度参数包括FILL_PARENT、MATCH_PARENT、WRAP_CONTENT;悬浮窗方法特征列表包括WindowManager类的addView()方法。
悬浮窗类型的锁屏型勒索软件实现原理为调用WindowManager的addView()方法弹出自定义窗口,因此本发明需要监听方法特征列表中的方法。参数列表中的值为自定义窗口设置的类型,标志,宽度,高度,多个标志可以组合添加,每个标志代表一种窗口的特征。当以上这些参数以一定的方式组合时,可以对窗口的类型、大小等参数进行设置,可能会造成设备屏幕的锁定,因此需要判断样本是否对参数列表中的值进行了相关设置。另外当发现新的方法或参数也可以造成屏幕锁定时,本发明可以对方法或参数列表进行更新。
1.2初始化设备管理器重置密码类型勒索软件的高危方法,用于设备管理器重置密码标记指令的注入,初始化的内容包括重置密码方法特征列表;
其中,重置密码方法特征列表包括DevicePolicyManager类的resetPassword()方法。
设备管理器申请是锁屏勒索软件常见的手法,样本申请设备管理器并且用户选择激活后使得应用难以卸载,申请设备管理器权限并不代表样本一定是锁屏勒索软件,但如果申请设备管理器权限后,样本对设备的PIN码的修改行为就可判定为锁屏型勒索软件,所以本发明对重置密码方法特征列表中的方法进行了监听。
1.3初始化界面劫持类型勒索软件的高危方法和参数,用于界面劫持标记指令的注入,初始化的内容包括劫持次数阈值、获取顶层应用次数、界面启动次数、界面劫持方法特征列表和参数特征列表;
其中劫持次数阈值初始化为10次,获取顶层应用次数初始化为0次,界面启动次数初始化为0次;界面劫持方法特征列表主要包括ActivityManager类的getRunningTasks()方法,Context类的startActivity()方法,Activity类的startActivity方法;界面劫持参数特征列表主要包括FLAG_ACTIVITY_NEW_TASK;
Activity劫持类型的锁屏型勒索软件实现原理是样本首先获取顶层应用,判断顶层应用是否为本应用,如果不是则弹出本应用的Activity。在Android 6.0及以后的版本中,由于Google对获取顶层应用的API进行了限制,这种类型的勒索软件很难再对用户造成威胁。这类应用在Android 6.0及之后版本运行时,获取顶层应用返回值为空,之后将弹出本应用的Activity。所以在Android 6.0之后的版本对两个行为监控依然是有必要的,本发明将获取顶层应用次数和界面启动次数都初始化为0次,界面劫持的阈值次数初始化为10次,样本达到阈值次数后则判定为锁屏型勒索软件。
步骤二、修改dex2oat编译器优化编译模块的代码,采用注入指令的方式标记高危方法和参数,如图3所示,具体包括:
2.1在dex2oat编译器优化编译时,获取待优化的Graph对象,将其设置为当前Graph,获取当前Graph的第一条指令;
dex2oat编译应用时,采用Optimizing编译后端对编译过程优化,每个类的方法都对应一个Graph数据结构,它由多个BasicBlock组成,而每个BasicBlock中包含多条指令,每个方法都以指令的形式存储了该方法的所有信息,包括传入参数,处理过程,返回值等。本发明通过GraphVisitor访问Graph中的所有指令,对样本所有的Graph遍历后,获取每个Graph的指令信息并判断是否需要添加相应的标记指令。
2.2判断该指令名称是否在步骤1.1中的悬浮窗方法列表中,如果是,执行步骤2.5,否则执行步骤2.3;
2.3判断该指令名称是否在步骤1.2中的重置密码方法列表中,如果是,执行步骤2.6,否则执行步骤2.4;
2.4判断该指令名称是否在步骤1.3中的界面劫持方法列表中,如果是,执行步骤2.7.否则执行步骤2.8;
2.5注入悬浮窗标记指令;
悬浮窗类锁屏型勒索软件调用WindowManager类的addView()方法设置全屏悬浮窗,将窗口的type参数设置为SYSTEM_ALERT_WINDOW等权限可以弹出无法取消的悬浮窗,并将其显示在所有其他应用程序之上。addView()方法属于接口方法,而InvokeInterface类型的指令用于调用接口方法,所以本发明遍历某个Graph中的指令时,首先判断指令的类型是否为InvokeInterface,其次判断指令DebugName()方法的返回值是否与步骤一中的悬浮窗方法特征列表匹配,是则添加标记,否则继续遍历其他指令。
2.5.1判断该指令是否为接口调用类型的指令,如果是,执行步骤2.5.2;否则执行步骤2.8;
2.5.2判断该指令的名称是否为WindowManager类的addView()方法,如果是,执行步骤2.5.3;否则执行步骤2.8;
2.5.3将该指令设置为当前指令,获取当前指令中的第三个参数,即layoutParams指令;
2.5.4创建实例调用类型的AddView()方法标记指令,将AddView()的传入参数设置为步骤2.5.3中获取的layoutParams指令,在AddView()方法体内加入高危参数检测逻辑,检测逻辑如下:
2.5.4a获取layoutParams字段中宽度、高度、类型和标志的值;
2.5.4b如果宽度和高度的值均为-1,且类型的值为2010,则执行步骤2.5.4g;否则执行步骤2.5.4c;
2.5.4c如果宽度和高度的值均为-2,且类型的值为2010,且标志的值不包含FLAG_NOT_FOCUSABLE,则执行步骤2.5.4g;否则执行步骤2.5.4d;
2.5.4d如果宽度和高度的值均为-1,且类型的值为2002或2003或2005或2006或2007,且标志的值不包含FLAG_SCALED,则执行步骤2.5.4g;否则执行步骤2.5.4e;
2.5.4e如果宽度和高度的值均为-2,且类型的值为2002或2003或2005或2007,且标志的值不包含FLAG_NOT_FOCUSABLE或FLAG_SCALED,则执行步骤2.5.4g;否则执行步骤2.5.4f;
2.5.4f如果宽度和高度的值均为-2,且类型的值为2006,且标志的值包含FLAG_DIM_BEHIND或FLAG_SHOW_WALLPAPER,则执行步骤2.5.4g;否则跳转到步骤2.5.5;
2.5.4g在AddView()方法体内添加高危参数标记,输出标记日志;
layoutParams参数主要用来设置窗口的类型、大小等,因此需要将layoutParams指令作为参数传入标记指令中,并在AddView方法体内添加对参数的检测逻辑,其中窗口的标志参数是多个标志异或得到的值,所以需要将标志值首先转化为二进制,之后分析1或0所在的位置,根据这些位置并结合每种标志的值判断窗口设置的所有标志,最后根据上述参数检测逻辑判断是否弹出了无法取消的悬浮窗。
2.5.5获取当前指令所在的Block,在当前指令前添加步骤2.5.4中的AddView()方法标记指令,执行步骤2.8;
2.6注入重置密码标记指令;
设备管理器类的锁屏型勒索软件调用DevicePolicyManager类的resetPassword()方法,对设备的PIN码进行修改。resetPassword()方法属于调用对象的实例方法,而InvokeVirtual类型的指令用来调用实例方法,所以本发明遍历某个Graph中的指令时,首先判断是否为InvokeVirtual类型的指令,其次判断指令DebugName()方法的返回值是否与初始化步骤中设备管理器的方法列表匹配,是则添加标记,否则继续遍历其他指令。
2.6.1判断该指令是否为实例调用类型的指令,如果是,执行步骤2.6.2;否则执行步骤2.8;
2.6.2判断该指令的名称是否为DevicePolicyManager类的resetPassword()方法,如果是,执行步骤2.6.3;否则执行步骤2.8;
2.6.3将该指令设置为当前指令,获取当前指令中的第二个参数,即password指令;
2.6.4创建实例调用类型的方法标记指令ResetPassword(),将ResetPassword()方法的传入参数设置为步骤2.6.3中的password指令,在ResetPassword()方法体内添加高危方法标记逻辑,标记逻辑如下所示:
2.6.4a获取传入参数password;
2.6.4b在ResetPassword()方法体内添加高危方法标记,输出password及标记日志;
password指令为resetPassword()方法的第二个参数,在调用resetPassword()方法时通过这个参数传入设置的密码值,本发明在日志中对密码进行了标记输出。
2.6.5获取当前指令所在的Block,在当前指令前添加步骤2.6.4中的ResetPassword()方法标记指令,执行步骤2.8;
2.7注入界面劫持标记指令;
Activity劫持类勒索软件调用ActivityManager类的getRunningTasks()方法、Activity类的startActivity()方法或Context类的startActivity()方法,getRunningTasks()方法和startActivity()方法都是调用对象的实例方法,都属于InvokeVirtual类型指令,所以本发明遍历某个Graph中的指令时,首先判断指令类型是否为InvokeVirtual类型,其次判断指令DebugName()是否与初始化步骤中Activity劫持方法列表匹配,是则添加标记,否则继续遍历其他指令。
2.7.1判断该指令是否为实例调用类型的指令,如果是,执行步骤2.7.2;否则执行步骤2.8;
2.7.2判断该指令的名称是否为ActivityManager类的getRunningTasks()方法,如果是,执行步骤2.7.3;否则执行步骤2.7.5;
2.7.3将该指令设置为当前指令,创建实例调用类型的方法标记指令RunTask(),该指令的传入参数设置为空,在该标记指令的方法体内添加高危方法标记,输出标记日志;
2.7.4获取当前指令所在的Block,在当前指令前添加步骤2.7.3中的RunTask()方法标记指令,执行步骤2.8;
2.7.5判断该指令的名称是否为Activity类或Context类的startActivity()方法,如果是,执行步骤2.7.6;否则执行步骤2.8;
2.7.6将该指令设置为当前指令,获取当前指令的第二个参数Intent的指令信息;
2.7.7创建实例调用类型的方法标记指令AddFlags(),将AddFlags()的传入参数设置为步骤2.7.6中获取的Intent参数,在AddFlags()方法体内添加高危字段检测逻辑,检测逻辑如下所示:
2.7.7a获取Intent字段中的标志参数;
2.7.7b判断标志参数中是否包含FLAG_ACTIVITY_NEW_TASK,如果包含,执行步骤2.7.7c;否则跳转到步骤2.7.8;
2.7.7c在AddFlags()方法体内添加高危参数标记,输出标记日志;
Intent参数为startActivity()方法的第二个参数,通过这个参数可以分析上下文对Intent做出的设置。本发明主要判断Intent是否调用了addFlags()方法,并且将flags设置了FLAG_ACTIVITY_NEW_TASK参数。本发明在AddFlags方法体内传入Intent参数,并调用Intent的getFlags()方法获取flags的值,之后根据字段检测逻辑判断是否需要添加标记。
2.7.8获取当前指令所在的Block,在当前指令前添加步骤2.7.7中的AddFlags()方法标记指令;
2.8继续获取当前Graph对象的下一条指令,如果获取成功,跳转到步骤2.2,否则执行步骤2.9;
2.9当前Graph的指令标记完成,执行步骤2.10;
2.10继续获取下一个Graph,如果获取成功,跳转到步骤2.1,否则执行步骤2.11;
2.11标记添加结束;
步骤三、编译器源码修改结束后,编译Android系统ART模块源代码,生成可注入标记指令的dex2oat编译器;
步骤四、应用程序运行过程中捕获标记指令,通过匹配既定特征库检测Android锁屏型勒索软件,如图4所示,具体包括:
4.1取一个应用程序样本,采用步骤S03中的dex2oat编译器将其编译安装到设备中;
4.2运行安装到设备上的应用程序;
本发明在dex2oat编译优化阶段,对待安装应用的指令结构做了一定的修改,完成了对高危方法的标记,当ART虚拟机中运行该应用程序时,如果捕获到编译阶段注入的标记指令,则会进入相应的高危方法或参数检测逻辑,通过传入参数或者调用的方法综合判断是否符合既定特征库匹配策略。
4.3如果捕获到悬浮窗标记,执行步骤4.4;如果捕获到设备管理器重置密码标记,执行步骤4.5;如果捕获到界面劫持标记,执行步骤4.6;否则执行步骤4.8;
4.4进入悬浮窗标记方法体,传入参数为高危字段的值,判断传入参数是否符合AddView()标记方法的高危参数检测逻辑,如果符合,执行步骤4.7;否则执行步骤4.8;
4.5进入设备管理器标记方法体,传入参数为password,判断传入参数是否符合ResetPassword()标记方法的高危方法标记逻辑,如果符合,执行步骤4.7;否则执行步骤4.8;
4.6进入界面劫持标记方法体;
4.6a判断标记方法体是否为RunTask()标记,如果是,则执行步骤4.6b;否则执行步骤4.6c;
4.6b将获取顶层应用次数加1,执行步骤4.6f;
4.6c判断标记方法体是否为AddFlags()标记,如果是,则执行步骤4.6d;否则执行步骤4.8;
4.6d判断传入参数是否符合AddFlags()标记方法的高危参数检测逻辑,如果是,则执行步骤4.6e;否则执行步骤4.8;
4.6e将启动界面次数加1,执行步骤4.6f;
4.6f判断获取顶层应用次数和启动界面次数的值是均否达到步骤1.3中的劫持次数阈值,如果是,执行步骤4.7;否则执行步骤4.8;
本发明在界面劫持特征库匹配过程中,需要结合劫持次数进一步判断是否为勒索软件,首先顶层应用次数和界面启动次数均设置为0,若捕获RunTask()标记指令,则将顶层应用次数加1,若捕获AddFlags()标记指令并且符合参数检测逻辑,则将界面启动次数加1,之后判断顶层应用次数和界面启动次数是否均超过阈值次数10次,若未超过则在虚拟机中继续运行该应用,否则说明与界面劫持特征库匹配成功,判定为界面劫持的锁屏型勒索软件,之后提醒用户,保护用户设备不受到侵害。
4.7检测出锁屏型Android勒索软件,提醒用户退出应用;
4.8应用继续在ART虚拟机中运行,返回步骤4.3。
本发明的功能效果可以通过以下实验进一步说明:
1)实验条件
本发明在Android 7.0版本上实现,Android实验设备型号为Nexus 5,CPU为高通MSM8974,内存为2GB。使用Android Studio2.3在PC机上收集测试日志,PC机为惠普Pro3380MT台式机,操作系统为Ubuntu16.04,CPU为Intel(R)Core(TM)i5-3470,内存为12GB。
2)实验内容
在VirusTotal网站下载已经公布的Android锁屏型勒索软件,并对其进行安装测试,本发明的实验以悬浮窗类型的锁屏勒索软件为例:
步骤A:通过adb install命令将APK文件安装在Android设备;
步骤B:运行该应用程序,设备在Android Studio上logcat输出日志“RansomProject 0.1”,说明该样本在之前的安装过程中被注入了标记指令;
步骤C:在运行过程中调用高危方法addView()时,触发标记指令,logcat输出日志“正在弹出悬浮窗”,说明本发明成功地检测到了该危险行为;
步骤D:进入特征库匹配判断逻辑,获取参数值,logcat输出日志“width=-1,height=-1,type=2010,flags=1280”,经过特征库匹配,logcat输出日志“特征方法库匹配成功,确认为锁屏勒索软件”,说明本发明成功地检测到了锁屏型勒索软件行为。
步骤E:确认为勒索软件后,logcat输出日志“5秒后退出应用”,抛出异常,强制退出应用,说明本发明成功地阻止了勒索软件的继续运行,防止设备受到进一步地侵害;
3)结果分析
通过上述实验,本发明修改编译器源码使得样本应用在安装过程中被注入了标记指令。应用程序在运行后,本发明成功地捕获到高危方法的调用并对传入参数进行了分析,通过既定特征库匹配策略成功识别出锁屏型勒索软件行为,并阻止了勒索软件的继续运行,本发明的勒索软件检测方法达到了预期目标。
本发明并不局限于上述实施例,在本发明公开的技术方案的基础上,本领域的技术人员根据所公开的技术内容,不需要创造性的劳动就可以对其中的一些技术特征作出一些替换和变形,这些替换和变形均在本发明的保护范围内。

Claims (9)

1.一种基于编译器修改的Android锁屏型勒索软件检测方法,其特征在于,包括如下步骤:
S01,修改dex2oat编译器主函数的代码,将Android锁屏型勒索软件待监控的高危方法和参数初始化在列表中;
S02,修改dex2oat编译器优化编译模块的代码,采用注入指令的方式标记高危方法和参数;
所述步骤S02中,具体包括如下步骤:
21)在dex2oat编译器优化编译时,获取待优化的Graph对象,将其设置为当前Graph,获取当前Graph的第一条指令;
22)判断该指令名称是否在步骤11)中的悬浮窗方法列表中,如果是,执行步骤25),否则执行步骤23);
23)判断该指令名称是否在步骤12)中的重置密码方法列表中,如果是,执行步骤26),否则执行步骤24);
24)判断该指令名称是否在步骤13)中的界面劫持方法列表中,如果是,执行步骤27),否则执行步骤28);
25)注入悬浮窗标记指令;
26)注入重置密码标记指令;
27)注入界面劫持标记指令;
28)继续获取当前Graph对象的下一条指令,如果获取成功,跳转到步骤22),否则执行步骤29);
29)当前Graph的指令标记完成,执行步骤210);
210)继续获取下一个Graph,如果获取成功,跳转到步骤21),否则执行步骤211);
211)标记添加结束;
S03,dex2oat编译器源码修改结束后,编译Android系统ART模块源代码,生成可注入标记指令的dex2oat编译器;
S04,应用程序运行过程中捕获标记指令,通过匹配既定特征库检测Android锁屏型勒索软件。
2.根据权利要求1所述的一种基于编译器修改的Android锁屏型勒索软件检测方法,其特征在于,所述步骤S01中,具体包括如下步骤:
11)初始化悬浮窗类型勒索软件的高危方法和参数,用于悬浮窗标记指令的注入,初始化的内容包括悬浮窗参数特征列表和悬浮窗方法特征列表;
12)初始化设备管理器重置密码类型勒索软件的高危方法,用于设备管理器重置密码标记指令的注入,初始化的内容包括重置密码方法特征列表;
13)初始化界面劫持类型勒索软件的高危方法和参数,用于界面劫持标记指令的注入,初始化的内容包括劫持次数阈值、获取顶层应用次数、界面启动次数、界面劫持方法特征列表和参数特征列表。
3.根据权利要求1所述的一种基于编译器修改的Android锁屏型勒索软件检测方法,其特征在于,所述步骤25)中,具体包括如下步骤:
25-1)判断该指令是否为接口调用类型的指令,如果是,执行步骤25-2);否则执行步骤28);
25-2)判断该指令的名称是否为WindowManager类的addView()方法,如果是,执行步骤25-3);否则执行步骤28);
25-3)将该指令设置为当前指令,获取当前指令中的第三个参数,即layoutParams指令;
25-4)创建实例调用类型的AddView()方法标记指令,将AddView()的传入参数设置为步骤25-3)中获取的layoutParams指令,在AddView()方法体内加入高危参数检测逻辑;
25-5)获取当前指令所在的Block,在当前指令前添加步骤25-4)中的AddView()方法标记指令,执行步骤28)。
4.根据权利要求3所述的一种基于编译器修改的Android锁屏型勒索软件检测方法,其特征在于,所述步骤25-4)中,检测逻辑如下:
25-4a)获取layoutParams字段中宽度、高度、类型和标志的值;
25-4b)如果宽度和高度的值均为-1,且类型的值为2010,则执行步骤25-4g);否则执行步骤25-4c);
25-4c)如果宽度和高度的值均为-2,且类型的值为2010,且标志的值不包含FLAG_NOT_FOCUSABLE,则执行步骤25-4g);否则执行步骤25-4d);
25-4d)如果宽度和高度的值均为-1,且类型的值为2002或2003或2005或2006或2007,且标志的值不包含FLAG_SCALED,则执行步骤25-4g);否则执行步骤25-4e);
25-4e)如果宽度和高度的值均为-2,且类型的值为2002或2003或2005或2007,且标志的值不包含FLAG_NOT_FOCUSABLE或FLAG_SCALED,则执行步骤25-4g);否则执行步骤25-4f);
25-4f)如果宽度和高度的值均为-2,且类型的值为2006,且标志的值包含FLAG_DIM_BEHIND或FLAG_SHOW_WALLPAPER,则执行步骤25-4g);否则跳转到步骤25-5);
25-4g)在AddView()方法体内添加高危参数标记,输出标记日志。
5.根据权利要求1所述的一种基于编译器修改的Android锁屏型勒索软件检测方法,其特征在于,所述步骤26)中,具体包括如下步骤:
26-1)判断该指令是否为实例调用类型的指令,如果是,执行步骤26-2);否则执行步骤28);
26-2)判断该指令的名称是否为DevicePolicyManager类的resetPassword()方法,如果是,执行步骤26-3);否则执行步骤28);
26-3)将该指令设置为当前指令,获取当前指令中的第二个参数,即password指令;
26-4)创建实例调用类型的方法标记指令ResetPassword(),将ResetPassword()方法的传入参数设置为步骤26-3)中的password指令,在ResetPassword()方法体内添加高危方法标记逻辑;
所述步骤26-4)中,标记逻辑如下:
26-4a)获取传入参数password;
26-4b)在ResetPassword()方法体内添加高危方法标记,输出password及标记日志;
26-5)获取当前指令所在的Block,在当前指令前添加步骤26-4)中的ResetPassword()方法标记指令,执行步骤28)。
6.根据权利要求1所述的一种基于编译器修改的Android锁屏型勒索软件检测方法,其特征在于,所述步骤27)中,具体包括如下步骤:
27-1)判断该指令是否为实例调用类型的指令,如果是,执行步骤27-2);否则执行步骤28);
27-2)判断该指令的名称是否为ActivityManager类的getRunningTasks()方法,如果是,执行步骤27-3);否则执行步骤27-5);
27-3)将该指令设置为当前指令,创建实例调用类型的方法标记指令RunTask(),该指令的传入参数设置为空,在该标记指令的方法体内添加高危方法标记,输出标记日志;
27-4)获取当前指令所在的Block,在当前指令前添加步骤27-3)中的RunTask()方法标记指令,执行步骤28);
27-5)判断该指令的名称是否为Activity类或Context类的startActivity()方法,如果是,执行步骤27-6);否则执行步骤28);
27-6)将该指令设置为当前指令,获取当前指令的第二个参数Intent的指令信息;
27-7)创建实例调用类型的方法标记指令AddFlags(),将AddFlags()的传入参数设置为步骤27-6)中获取的Intent参数,在AddFlags()方法体内添加高危字段检测逻辑;
27-8)获取当前指令所在的Block,在当前指令前添加步骤27-7)中的AddFlags()方法标记指令。
7.根据权利要求6所述的一种基于编译器修改的Android锁屏型勒索软件检测方法,其特征在于,所述步骤27-7)中,检测逻辑如下所示:
27-7a)获取Intent字段中的标志参数;
27-7b)判断标志参数中是否包含FLAG_ACTIVITY_NEW_TASK,如果包含,执行步骤27-7c);否则跳转到步骤27-8);
27-7c)在AddFlags()方法体内添加高危参数标记,输出标记日志。
8.根据权利要求1所述的一种基于编译器修改的Android锁屏型勒索软件检测方法,其特征在于,所述步骤S04中,具体包括如下步骤:
41)取一个应用程序样本,采用步骤S03中的dex2oat编译器将其编译安装到设备中;
42)运行安装到设备上的应用程序;
43)如果捕获到悬浮窗标记,执行步骤44);如果捕获到设备管理器重置密码标记,执行步骤45);如果捕获到界面劫持标记,执行步骤46);否则执行步骤48);
44)进入悬浮窗标记方法体,传入参数为高危字段的值,判断传入参数是否符合AddView()标记方法的高危参数检测逻辑,如果符合,执行步骤47);否则执行步骤48);
45)进入设备管理器标记方法体,传入参数为password,判断传入参数是否符合ResetPassword()标记方法的高危方法标记逻辑,如果符合,执行步骤47);否则执行步骤48);
46)进入界面劫持标记方法体;
47)检测出锁屏型Android勒索软件,提醒用户退出应用;
48)应用继续在ART虚拟机中运行,返回步骤43)。
9.根据权利要求8所述的一种基于编译器修改的Android锁屏型勒索软件检测方法,其特征在于,所述步骤46)中,劫持标记方法体步骤如下:
46a)判断标记方法体是否为RunTask()标记,如果是,则执行步骤46b);否则执行步骤46c);
46b)将获取顶层应用次数加1,执行步骤46f);
46c)判断标记方法体是否为AddFlags()标记,如果是,则执行步骤46d);否则执行步骤48);
46d)判断传入参数是否符合AddFlags()标记方法的高危参数检测逻辑,如果是,则执行步骤46e);否则执行步骤48);
46e)将启动界面次数加1,执行步骤46f);
46f)判断获取顶层应用次数和启动界面次数的值是均否达到步骤13)中的劫持次数阈值,如果是,执行步骤47);否则执行步骤48)。
CN201910194070.8A 2019-03-14 2019-03-14 一种基于编译器修改的Android锁屏型勒索软件检测方法 Active CN109977671B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910194070.8A CN109977671B (zh) 2019-03-14 2019-03-14 一种基于编译器修改的Android锁屏型勒索软件检测方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910194070.8A CN109977671B (zh) 2019-03-14 2019-03-14 一种基于编译器修改的Android锁屏型勒索软件检测方法

Publications (2)

Publication Number Publication Date
CN109977671A CN109977671A (zh) 2019-07-05
CN109977671B true CN109977671B (zh) 2020-10-30

Family

ID=67078930

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910194070.8A Active CN109977671B (zh) 2019-03-14 2019-03-14 一种基于编译器修改的Android锁屏型勒索软件检测方法

Country Status (1)

Country Link
CN (1) CN109977671B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110348206B (zh) * 2019-07-11 2021-09-17 网易(杭州)网络有限公司 应用于安卓安装包apk的保护方法、介质、装置和计算设备
CN112084502B (zh) * 2020-09-18 2024-06-21 珠海豹趣科技有限公司 一种软件识别方法、装置、电子设备及存储介质
CN112286736B (zh) * 2020-12-25 2021-06-22 北京邮电大学 对被可疑应用感染的设备进行恢复的方法及相关设备
CN113886824B (zh) * 2021-09-29 2024-06-04 西安电子科技大学 安卓勒索软件检测防御方法、装置、设备及可读存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102375957A (zh) * 2011-11-10 2012-03-14 西安电子科技大学 内核级return-oriented rootkits的防御方法
CN104965712A (zh) * 2015-07-17 2015-10-07 北京奇虎科技有限公司 应用程序加固保护方法、装置及移动终端
CN107358101A (zh) * 2017-06-28 2017-11-17 暨南大学 一种基于权限模式的勒索软件检测方法及系统
CN107431692A (zh) * 2014-12-27 2017-12-01 迈克菲有限责任公司 预测性用户认证
CN108062472A (zh) * 2016-11-07 2018-05-22 武汉安天信息技术有限责任公司 一种安卓平台下勒索应用的检测方法及系统

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2514142C1 (ru) * 2012-12-25 2014-04-27 Закрытое акционерное общество "Лаборатория Касперского" Способ повышения эффективности работы аппаратного ускорения эмуляции приложений

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102375957A (zh) * 2011-11-10 2012-03-14 西安电子科技大学 内核级return-oriented rootkits的防御方法
CN107431692A (zh) * 2014-12-27 2017-12-01 迈克菲有限责任公司 预测性用户认证
CN104965712A (zh) * 2015-07-17 2015-10-07 北京奇虎科技有限公司 应用程序加固保护方法、装置及移动终端
CN108062472A (zh) * 2016-11-07 2018-05-22 武汉安天信息技术有限责任公司 一种安卓平台下勒索应用的检测方法及系统
CN107358101A (zh) * 2017-06-28 2017-11-17 暨南大学 一种基于权限模式的勒索软件检测方法及系统

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Ransomware恶意软件的检测与阻止技术研究;苏继鹏;《中国优秀硕士学位论文全文数据库 信息科技辑》;20190215;全文 *
基于编译器的操作系统内核控制数据保护;胡祥;《中国优秀硕士学位论文全文数据库 信息科技辑》;20160315;全文 *

Also Published As

Publication number Publication date
CN109977671A (zh) 2019-07-05

Similar Documents

Publication Publication Date Title
CN109977671B (zh) 一种基于编译器修改的Android锁屏型勒索软件检测方法
KR101122650B1 (ko) 정상 프로세스에 위장 삽입된 악성코드 탐지 장치, 시스템 및 방법
Zhauniarovich et al. Stadyna: Addressing the problem of dynamic code updates in the security analysis of android applications
Bläsing et al. An android application sandbox system for suspicious software detection
US10581879B1 (en) Enhanced malware detection for generated objects
US8904537B2 (en) Malware detection
US11568051B2 (en) Malicious object detection in a runtime environment
US8117660B2 (en) Secure control flows by monitoring control transfers
Doupe et al. deDacota: toward preventing server-side XSS via automatic code and data separation
WO2017049800A1 (zh) 检测应用漏洞代码的方法和装置
US7607122B2 (en) Post build process to record stack and call tree information
US11822654B2 (en) System and method for runtime detection, analysis and signature determination of obfuscated malicious code
US20160055337A1 (en) Suspicious program detection
JP4572259B1 (ja) 情報機器、プログラム及び不正なプログラムコードの実行防止方法
EP3262557A1 (en) A method to identify known compilers functions, libraries and objects inside files and data items containing an executable code
CN109255235B (zh) 基于用户态沙箱的移动应用第三方库隔离方法
US20190370106A1 (en) Unexpected event detection during execution of an application
Bello et al. Ares: triggering payload of evasive android malware
Druffel et al. Davinci: Android app analysis beyond frida via dynamic system call instrumentation
KR101557455B1 (ko) 응용 프로그램 코드 분석 장치 및 그것을 이용한 코드 분석 방법
CN111291377A (zh) 一种应用漏洞的检测方法及系统
Hung et al. Sifter: protecting security-critical kernel modules in Android through attack surface reduction
Shahriar et al. Detection of repackaged android malware
CN111090880B (zh) 一种拦截利用摄像头漏洞窃取用户隐私行为的方法及系统
KR101311367B1 (ko) 메모리 보호기능 우회 공격 진단 장치 및 방법

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