CN116522343B - 一种Native函数防御攻击的方法及装置 - Google Patents

一种Native函数防御攻击的方法及装置 Download PDF

Info

Publication number
CN116522343B
CN116522343B CN202310812869.5A CN202310812869A CN116522343B CN 116522343 B CN116522343 B CN 116522343B CN 202310812869 A CN202310812869 A CN 202310812869A CN 116522343 B CN116522343 B CN 116522343B
Authority
CN
China
Prior art keywords
function
native
protected
native function
new
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
CN202310812869.5A
Other languages
English (en)
Other versions
CN116522343A (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 Guoyu Network Security Technology Co ltd
Original Assignee
Beijing Guoyu Network Security Technology Co ltd
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 Guoyu Network Security Technology Co ltd filed Critical Beijing Guoyu Network Security Technology Co ltd
Priority to CN202310812869.5A priority Critical patent/CN116522343B/zh
Publication of CN116522343A publication Critical patent/CN116522343A/zh
Application granted granted Critical
Publication of CN116522343B publication Critical patent/CN116522343B/zh
Active 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/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/562Static detection
    • G06F21/563Static detection by source code analysis
    • 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/566Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D30/00Reducing energy consumption in communication networks
    • Y02D30/50Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate

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)
  • General Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Storage Device Security (AREA)

Abstract

本申请公开了一种Native函数防御攻击的方法及装置,涉及应用安全技术领域。所述Native函数防御攻击的方法包括:获取待保护的Native函数;获取乱序字符串;对待保护的Native函数的结构体进行备份,从而获取结构体备份信息;通过乱序字符串对所述待保护的Native函数的原始函数名进行乱序修改,从而获取具有新函数名的待保护的Native函数;通过所获取的结构体备份信息以原始函数名构建无法运行的新Native函数;将新Native函数与具有新函数名的待保护的Native函数进行关联,以使在新Native函数时可调用具有新函数名的待保护的Native函数。本申请的Native函数防御攻击的方法能够使攻击者无法轻易地找到被攻击的目标函数,从而提高了RASP的安全性。

Description

一种Native函数防御攻击的方法及装置
技术领域
本申请涉及应用安全技术领域,尤其涉及一种Native函数防御攻击的方法以及Native函数防御攻击的装置。
背景技术
(1)应用安全技术RASP
数据RASP是指Runtime Application Self-Protection,是一种用于保护应用程序安全的技术。它通过在应用程序运行时检测和防御攻击,包括SQL注入、跨站脚本攻击和文件包含攻击等常见漏洞,从而提高应用程序的安全性。
RASP技术通常是通过在应用程序中插入安全性代码来实现的,以便在应用程序执行时检测和防御攻击。它可以在应用程序的不同层次上进行操作,包括Web层、应用程序层和操作系统层,以提供全面的保护。
(2)Java native函数
Java的native函数是指使用Java语言调用其他语言编写的本地函数(NativeFunction)。Java中的native关键字用于表示该函数是由其他语言编写的,并且在Java代码中通过JNI(Java Native Interface)进行调用。通过使用native函数,Java可以调用C、C++、汇编等语言编写的本地函数,以便在Java程序中访问底层系统资源或者实现一些高性能的操作。一般情况下,native函数通常被用于实现与底层操作系统或硬件设备相关的功能,如文件读写、网络通信、图像处理等。
使用native函数需要进行一定的配置和编译,通常需要使用JNI技术将Java代码与本地函数进行链接。需要注意的是,使用native函数可能会带来一定的安全风险和兼容性问题,因此需要谨慎使用。
参见图3,目前,传统的HOOK技术通常是在应用程序的高层代码中插入HOOK点,通过拦截和修改应用程序的执行流程来实现安全监控和保护。但是,如果攻击者绕过了这些高层的HOOK点,直接攻击底层的Native函数,那么传统的HOOK技术就无法发挥作用,导致RASP的防护能力被直接绕过。
因此,希望有一种技术方案来解决或至少减轻现有技术的上述不足。
发明内容
本发明的目的在于提供一种Native函数防御攻击的方法来至少解决上述的一个技术问题。
本发明提供了下述方案:
根据本发明的一个方面,提供一种Native函数防御攻击的方法,所述Native函数防御攻击的方法包括:
获取待保护的Native函数;
获取乱序字符串;
对待保护的Native函数的结构体进行备份,从而获取结构体备份信息;
通过乱序字符串对所述待保护的Native函数的原始函数名进行乱序修改,从而获取具有新函数名的待保护的Native函数;
通过所获取的结构体备份信息以原始函数名构建无法运行的新Native函数;
将新Native函数与具有新函数名的待保护的Native函数进行关联,以使在新Native函数时可调用具有新函数名的待保护的Native函数。
可选地,所述获取待保护的Native函数包括:
获取预设数据库,所述预设数据库包括预设待混淆文件名称;
遍历应用程序中的各个字节码文件,从而获取与预设待混淆文件名称相同的字节码文件作为待混淆文件;
获取待混淆文件中的目标函数作为待保护的Native函数。
可选地,所述获取乱序字符串包括:
获取应用程序的安装位置;
获取当前时间戳;
根据所述应用程序的安装位置以及所述当前时间戳构建所述乱序字符串。
可选地,所述根据所述应用程序的安装位置以及所述当前时间戳构建所述乱序字符串包括:
根据时间戳获取时间戳字符串;
根据应用程序的安装位置获取安装位置字符串;
生成随机数;
根据所述时间戳字符串、安装位置字符串以及所述随机数生成第一字符串;
对所述第一字符串进行哈希计算,从而获取所述乱序字符串。
可选地,所述对所述第一字符串进行哈希计算,从而获取所述乱序字符串包括:
对拼接后的字符串进行哈希计算从而得到一个32位的哈希值字符串;
将哈希值字符串中的前8个字符作为生成的乱序字符串。
可选地,所述获取乱序字符串包括:
通过 UUID生成所述乱序字符串。
可选地,所述通过乱序字符串对所述待保护的Native函数的原始函数名进行乱序修改,从而获取具有新函数名的待保护的Native函数包括:
将原始函数名使用哈希函数进行哈希,得到原始函数名的哈希值。
将到原始函数名的哈希值与乱序字符串进行混淆;
将混淆后的结果转换为字符串,得到具有新函数名的待保护的Native函数。
本申请还提供了一种Native函数防御攻击的装置,所述Native函数防御攻击的装置包括:
待保护的Native函数获取模块,所述待保护的Native函数获取模块用于获取待保护的Native函数;
乱序字符串获取模块,所述乱序字符串获取模块用于获取乱序字符串;
备份模块,所述备份模块用于对待保护的Native函数的结构体进行备份,从而获取结构体备份信息;
乱序模块,所述乱序模块用于通过乱序字符串对所述待保护的Native函数的原始函数名进行乱序修改,从而获取具有新函数名的待保护的Native函数;
构建模块,所述构建模块用于通过所获取的结构体备份信息以原始函数名构建无法运行的新Native函数;
关联模块,所述关联模块用于将新Native函数与具有新函数名的待保护的Native函数进行关联,以使在新Native函数时可调用具有新函数名的待保护的Native函数。
本申请还提供了一种电子设备,所述电子设备包括:处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;存储器中存储有计算机程序,当计算机程序被处理器执行时,使得处理器执行如上所述的Native函数防御攻击的方法的步骤。
本申请还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有可由电子设备执行的计算机程序,当计算机程序在电子设备上运行时,能够实现如上所述的Native函数防御攻击的方法的步骤。
本申请的Native函数防御攻击的方法通过在应用程序启动时随机构建一个乱序字符串,并将其存储在全局内存中。然后,本申请会对指定的Native函数名进行更换,将生成的乱序字符串添加到指定的Native函数名中,从而生成一个新的函数名。通过这种方式,攻击者无法轻易地找到被攻击的目标函数,从而提高了RASP的安全性。
附图说明
图1是本申请一实施例中的Native函数防御攻击的方法的流程示意图。
图2是本申请一实施例中提供的Native函数防御攻击的方法的电子设备结构框图。
图3是Native函数防御攻击的方法的现有技术的流程示意图。
图4是本申请一实施例中的Native函数防御攻击的方法的流程示意图。
具体实施方式
下面将结合附图对本发明的技术方案进行清楚、完整的描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1是本申请一实施例中的Native函数防御攻击的方法的流程示意图。
如图1以及图4所示的Native函数防御攻击的方法包括:
步骤1:获取待保护的Native函数;
步骤1:获取乱序字符串;
步骤2:对待保护的Native函数的结构体进行备份,从而获取结构体备份信息;
步骤3:通过乱序字符串对所述待保护的Native函数的原始函数名进行乱序修改,从而获取具有新函数名的待保护的Native函数;
步骤4:通过所获取的结构体备份信息以原始函数名构建无法运行的新Native函数;
步骤5:将新Native函数与具有新函数名的待保护的Native函数进行关联,以使在新Native函数时可调用具有新函数名的待保护的Native函数。
本申请的Native函数防御攻击的方法通过在应用程序启动时随机构建一个乱序字符串,并将其存储在全局内存中。然后,本申请会对指定的Native函数名进行更换,将生成的乱序字符串添加到指定的Native函数名中,从而生成一个新的函数名。通过这种方式,攻击者无法轻易地找到被攻击的目标函数,从而提高了RASP的安全性。
在本实施例中,所述获取待保护的Native函数包括:
获取预设数据库,所述预设数据库包括预设待混淆文件名称;
遍历应用程序中的各个字节码文件,从而获取与预设待混淆文件名称相同的字节码文件作为待混淆文件;
获取待混淆文件中的目标函数作为待保护的Native函数。
在本实施例中,所述获取乱序字符串包括:
获取应用程序的安装位置;
获取当前时间戳;
根据所述应用程序的安装位置以及所述当前时间戳构建所述乱序字符串。
在本实施例中,所述根据所述应用程序的安装位置以及所述当前时间戳构建所述乱序字符串包括:
根据时间戳获取时间戳字符串;
根据应用程序的安装位置获取安装位置字符串;
生成随机数;
根据所述时间戳字符串、安装位置字符串以及所述随机数生成第一字符串;
对所述第一字符串进行哈希计算,从而获取所述乱序字符串。
在本实施例中,对第一字符串进行哈希计算,从而获取所述乱序字符串包括:
对拼接后的字符串进行哈希计算从而得到一个32位的哈希值字符串;
将哈希值字符串中的前8个字符作为生成的乱序字符串。
举例来说,通过hash生成采用如下方法:
1.获取当前系统时间戳,即调用 `System.currentTimeMillis()` 方法,得到一个13位的时间戳字符串。
2.获取应用的安装位置,即调用 `System.getProperty("user.dir")` 方法,得到一个字符串表示应用的根目录。
3.生成一个随机数,可以调用 `java.util.Random` 类生成一个0到999999999之间的随机整数,然后把它转化为字符串类型。
4.将上述三个字符串拼接起来,即将时间戳、应用安装位置和随机数串联为一个较长的字符串。
5.对拼接后的字符串进行哈希计算,例如使用SHA-256算法计算该字符串的哈希值,得到一个32位的哈希值字符串。
6.将哈希值字符串中的前8个字符作为生成的不重复字符串。
由于哈希算法的特性,哈希值的变化满足输入数据变化的敏感性,因此可以保证生成的字符串不重复,并且具有一定的复杂性。
在另一个实施例中,所述获取乱序字符串包括:
通过 UUID生成所述乱序字符串。
举例来说, UUID是一个Java类,用于生成通用唯一标识符。可以使用UUID.randomUUID()方法生成一个随机的字符串,然后使用String.replaceAll()方法去掉其中的分隔符“-”,再使用String.substring()方法取前8位字符作为所需的8位随机字符串作为乱序字符串。
在一个实施例中,还可以采用如下方法获取乱序字符串:
通过加盐的MD5生成随机8位乱序字符串:
MD5是一种常用的哈希算法,可通过Java中提供的MessageDigest类对输入数据进行哈希计算。可以使用该算法生成随机字符串,具体步骤如下:
(1) 生成一个随机盐,可以使用随机字符生成方法generateRandomString()生成。
(2) 将随机盐和当前时间戳拼接成一个字符串作为输入数据。
(3) 使用MessageDigest类的getInstance()方法获取MD5实例,然后使用digest()方法计算哈希值,并使用StringBuilder类拼接MD5哈希值为字符串。
(4) 使用String.substring()方法取MD5哈希值字符串中的前8位字符作为所需的8位随机字符串。
在一个实施例中,还可以采用如下方式获取8位乱序字符串:
1. 获取当前系统时间戳,作为种子。
2. 使用该种子来初始化一个随机数生成器。
3. 创建一个StringBuilder对象,用于拼接随机生成的字符。
4. 使用循环生成8个字符:
对于当前循环变量i的值,先将其加上生成的随机整数,然后再对26取模,得到一个0~25的整数。
使用该整数来计算对应的小写字母的Unicode码,并将其转换为字符。
将字符追加到StringBuilder对象中。
5. 得到的StringBuilder对象所代表的字符串即为生成的8位随机字符串。
采用这种方式,通过当前时间戳和随机数生成器来生成随机数,然后使用生成的随机数和循环变量i的值来计算随机字符的值,从而生成带有一定规律性的随机字符串。
在本实施例中,通过乱序字符串对待保护的Native函数的原始函数名进行乱序修改,从而获取具有新函数名的待保护的Native函数包括:
将原始函数名使用哈希函数进行哈希,得到原始函数名的哈希值。
将到原始函数名的哈希值与乱序字符串进行混淆;
将混淆后的结果转换为字符串,得到具有新函数名的待保护的Native函数。
在本实施例中,可以采用如下方法获取具有新函数名的待保护的Native函数:
基于哈希函数的方案:可以使用哈希函数(如SHA-256、MD5等)对函数名进行哈希,然后再将哈希值与随机码进行混淆,最终生成一个加密混淆后的字符串。具体步骤如下:
将函数名使用哈希函数进行哈希,得到哈希值。
将哈希值与随机码进行混淆,可以采用异或运算或者位运算等方式。
将混淆后的结果转换为字符串,得到具有新函数名的待保护的Native函数。
在一个备选实施例中,还可以采用如下方式获取:
基于对称加密算法的方案:可以使用对称加密算法(如AES、DES等)对函数名进行加密,然后再将加密后的结果与随机码进行混淆,最终生成一个加密混淆后的字符串。具体步骤如下:
随机生成一个密钥,作为对称加密算法的密钥。
将函数名使用对称加密算法进行加密,得到加密后的结果。
将加密后的结果与随机码进行混淆,可以采用异或运算或者位运算等方式。
将混淆后的结果转换为字符串,得到具有新函数名的待保护的Native函数。
在一个备选实施例中,还可以采用如下方式获取:
基于加盐的哈希函数方案:可以使用加盐的哈希函数(如加盐的SHA-256、PBKDF2等)对函数名进行哈希,然后再将哈希值与随机码进行混淆,最终生成一个加密混淆后的字符串。具体步骤如下:
随机生成一个盐,作为加盐的哈希函数的盐。
将函数名与盐拼接在一起,作为加盐的哈希函数的输入。
使用加盐的哈希函数对输入进行哈希,得到哈希值。
将哈希值与随机码进行混淆,可以采用异或运算或者位运算等方式。
将混淆后的结果转换为字符串,得到具有新函数名的待保护的Native函数。
下面以举例的方式对本申请进行进一步详细阐述,可以理解的是,该举例并不构成对本申请的任何限制。
在本举例中,待混淆文件是Test.class,然后我们的待保护的Native函数是native demo()函数,乱序字符串是 abc(由于是举例,因此没有用8位字符串,仅用3位举例描述下,可以理解的是,字符串的数量可以根据需要自行设定,例如,可以是3位、4位、8位等等),具体的加载步骤如下:
首先,遍历应用程序中的各个字节码文件,具体而言,通过java agent的机制遍历jvm内所有class文件找到对应的Test.class文件。
获取待混淆文件中的目标函数作为待保护的Native函数,具体而言,加载字节码进行解析、匹配到native demo()函数。
读取native demo()函数结构,在本实施例中,结构体备份信息主要包括函数名、函数入参、函数返回值、函数权限修饰符等,并将结构体备份信息缓存至内存当中。
通过乱序字符串对所述待保护的Native函数的原始函数名进行乱序修改,从而获取具有新函数名的待保护的Native函数,具体而言,修改native demo()函数名,通过abc字符串配合加密方法获取,假设得出来得新函数名是 demoabc()。
通过所获取的结构体备份信息以原始函数名构建无法运行的新Native函数,具体而言,获取之前缓存到内存中的demo()函数结构。
利用ASM库构建一个新的函数,函数结构与函数名与前面的native demo()(原始没有进行任何处理的native demo())函数一致。
将新Native函数与具有新函数名的待保护的Native函数进行关联,以使在新Native函数时可调用具有新函数名的待保护的Native函数,具体而言,构建出来的无法运行的新Native函数第一行为RASP检测HOOK、第二行为demoabc()函数的调用。
将上述步骤写入Test.class 文件当中,将Test.class重新加载到JVM内。
本申请还提供了一种Native函数防御攻击的装置,所述Native函数防御攻击的装置包括待保护的Native函数获取模块、乱序字符串获取模块、备份模块、乱序模块、构建模块以及关联模块,其中,
待保护的Native函数获取模块用于获取待保护的Native函数;
乱序字符串获取模块用于获取乱序字符串;
备份模块用于对待保护的Native函数的结构体进行备份,从而获取结构体备份信息;
乱序模块用于通过乱序字符串对所述待保护的Native函数的原始函数名进行乱序修改,从而获取具有新函数名的待保护的Native函数;
构建模块用于通过所获取的结构体备份信息以原始函数名构建无法运行的新Native函数;
关联模块用于将新Native函数与具有新函数名的待保护的Native函数进行关联,以使在新Native函数时可调用具有新函数名的待保护的Native函数。
本申请的方法具有更高的安全性和难度性。攻击者难以找到被攻击的目标函数,并且由于生成的新的Native函数结构与原有函数一致,攻击者也难以对其进行攻击。同时,本发明的方法能够对应用程序的底层Native函数进行有效的监控和保护,提高了RASP的安全防护能力。
图2是本发明一个或多个实施例提供的一种电子设备结构框图。
如图2所示,本申请还公开了一种电子设备,包括:处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;存储器中存储有计算机程序,当计算机程序被处理器执行时,使得处理器执行Native函数防御攻击的方法的步骤。
本申请还提供了一种计算机可读存储介质,其存储有可由电子设备执行的计算机程序,当计算机程序在电子设备上运行时,能够实现Native函数防御攻击的方法的步骤。
上述电子设备提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
电子设备包括硬件层,运行在硬件层之上的操作系统层,以及运行在操作系统上的应用层。该硬件层包括中央处理器(CPU,Central Processing Unit)、内存管理单元(MMU,Memory Management Unit)和内存等硬件。该操作系统可以是任意一种或多种通过进程(Process)实现电子设备控制的计算机操作系统,例如,Linux操作系统、Unix操作系统、Android操作系统、iOS操作系统或windows操作系统等。并且在本发明实施例中该电子设备可以是智能手机、平板电脑等手持设备,也可以是桌面计算机、便携式计算机等电子设备,本发明实施例中并未特别限定。
本发明实施例中的电子设备控制的执行主体可以是电子设备,或者是电子设备中能够调用程序并执行程序的功能模块。电子设备可以获取到存储介质对应的固件,存储介质对应的固件由供应商提供,不同存储介质对应的固件可以相同可以不同,在此不做限定。电子设备获取到存储介质对应的固件后,可以将该存储介质对应的固件写入存储介质中,具体地是往该存储介质中烧入该存储介质对应固件。将固件烧入存储介质的过程可以采用现有技术实现,在本发明实施例中不做赘述。
电子设备还可以获取到存储介质对应的重置命令,存储介质对应的重置命令由供应商提供,不同存储介质对应的重置命令可以相同可以不同,在此不做限定。
此时电子设备的存储介质为写入了对应的固件的存储介质,电子设备可以在写入了对应的固件的存储介质中响应该存储介质对应的重置命令,从而电子设备根据存储介质对应的重置命令,对该写入对应的固件的存储介质进行重置。根据重置命令对存储介质进行重置的过程可以现有技术实现,在本发明实施例中不做赘述。
为了描述的方便,描述以上装置时以功能分为各种单元、模块分别描述。当然在实施本申请时可以把各单元、模块的功能在同一个或多个软件和/或硬件中实现。
本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非被特定定义,否则不会用理想化或过于正式的含义来解释。
对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器或者网络设备等)执行本申请各个实施方式或者实施方式的某些部分所述的方法。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

Claims (9)

1.一种Native函数防御攻击的方法,其特征在于,所述Native函数防御攻击的方法包括:
获取待保护的Native函数;
获取乱序字符串;
对待保护的Native函数的结构体进行备份,从而获取结构体备份信息;
通过乱序字符串对所述待保护的Native函数的原始函数名进行乱序修改,从而获取具有新函数名的待保护的Native函数;
通过所获取的结构体备份信息以原始函数名构建无法运行的新Native函数;
将新Native函数与具有新函数名的待保护的Native函数进行关联,以使在新Native函数时可调用具有新函数名的待保护的Native函数;其中,具有新函数名的待保护的Native函数的第一行为RASP检测HOOK、第二行为demoabc()函数的调用;
所述获取待保护的Native函数包括:
获取预设数据库,所述预设数据库包括预设待混淆文件名称;
遍历应用程序中的各个字节码文件,从而获取与预设待混淆文件名称相同的字节码文件作为待混淆文件;
获取待混淆文件中的目标函数作为待保护的Native函数。
2.根据权利要求1所述的Native函数防御攻击的方法,其特征在于,所述获取乱序字符串包括:
获取应用程序的安装位置;
获取当前时间戳;
根据所述应用程序的安装位置以及所述当前时间戳构建所述乱序字符串。
3.如权利要求2所述的Native函数防御攻击的方法,其特征在于,所述根据所述应用程序的安装位置以及所述当前时间戳构建所述乱序字符串包括:
根据时间戳获取时间戳字符串;
根据应用程序的安装位置获取安装位置字符串;
生成随机数;
根据所述时间戳字符串、安装位置字符串以及所述随机数生成第一字符串;
对所述第一字符串进行哈希计算,从而获取所述乱序字符串。
4.如权利要求3所述的Native函数防御攻击的方法,其特征在于,所述对所述第一字符串进行哈希计算,从而获取所述乱序字符串包括:
对拼接后的字符串进行哈希计算从而得到一个32位的哈希值字符串;
将哈希值字符串中的前8个字符作为生成的乱序字符串。
5.如权利要求1所述的Native函数防御攻击的方法,其特征在于,所述获取乱序字符串包括:
通过 UUID生成所述乱序字符串。
6.如权利要求4所述的Native函数防御攻击的方法,其特征在于,所述通过乱序字符串对所述待保护的Native函数的原始函数名进行乱序修改,从而获取具有新函数名的待保护的Native函数包括:
将原始函数名使用哈希函数进行哈希,得到原始函数名的哈希值;
将到原始函数名的哈希值与乱序字符串进行混淆;
将混淆后的结果转换为字符串,得到具有新函数名的待保护的Native函数。
7.一种Native函数防御攻击的装置,其特征在于,所述Native函数防御攻击的装置包括:
待保护的Native函数获取模块,所述待保护的Native函数获取模块用于获取待保护的Native函数;
乱序字符串获取模块,所述乱序字符串获取模块用于获取乱序字符串;
备份模块,所述备份模块用于对待保护的Native函数的结构体进行备份,从而获取结构体备份信息;
乱序模块,所述乱序模块用于通过乱序字符串对所述待保护的Native函数的原始函数名进行乱序修改,从而获取具有新函数名的待保护的Native函数;
构建模块,所述构建模块用于通过所获取的结构体备份信息以原始函数名构建无法运行的新Native函数;
关联模块,所述关联模块用于将新Native函数与具有新函数名的待保护的Native函数进行关联,以使在新Native函数时可调用具有新函数名的待保护的Native函数;其中,具有新函数名的待保护的Native函数的第一行为RASP检测HOOK、第二行为demoabc()函数的调用;
所述获取待保护的Native函数包括:
获取预设数据库,所述预设数据库包括预设待混淆文件名称;
遍历应用程序中的各个字节码文件,从而获取与预设待混淆文件名称相同的字节码文件作为待混淆文件;
获取待混淆文件中的目标函数作为待保护的Native函数。
8.一种电子设备,其特征在于,所述电子设备包括:处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;存储器中存储有计算机程序,当计算机程序被处理器执行时,使得处理器执行如权利要求1至6中任意一项所述的Native函数防御攻击的方法的步骤。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有可由电子设备执行的计算机程序,当计算机程序在电子设备上运行时,能够实现如权利要求1至6中任意一项所述的Native函数防御攻击的方法的步骤。
CN202310812869.5A 2023-07-05 2023-07-05 一种Native函数防御攻击的方法及装置 Active CN116522343B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310812869.5A CN116522343B (zh) 2023-07-05 2023-07-05 一种Native函数防御攻击的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310812869.5A CN116522343B (zh) 2023-07-05 2023-07-05 一种Native函数防御攻击的方法及装置

Publications (2)

Publication Number Publication Date
CN116522343A CN116522343A (zh) 2023-08-01
CN116522343B true CN116522343B (zh) 2023-09-08

Family

ID=87406777

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310812869.5A Active CN116522343B (zh) 2023-07-05 2023-07-05 一种Native函数防御攻击的方法及装置

Country Status (1)

Country Link
CN (1) CN116522343B (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105468970A (zh) * 2015-11-27 2016-04-06 西北大学 一种基于防御网的Android应用防篡改方法及系统
CN106778103A (zh) * 2016-12-30 2017-05-31 上海掌门科技有限公司 一种安卓应用程序防逆向破解的加固方法、系统及解密方法
CN109359468A (zh) * 2018-08-23 2019-02-19 阿里巴巴集团控股有限公司 漏洞检测方法、装置及设备
CN111555872A (zh) * 2020-04-30 2020-08-18 平安科技(深圳)有限公司 一种通信数据处理方法、装置、计算机系统及存储介质
CN115473702A (zh) * 2022-08-23 2022-12-13 广西电网有限责任公司电力科学研究院 一种基于在线交互式web动态防御的内容混淆方法
CN115756480A (zh) * 2022-11-07 2023-03-07 中国科学院信息工程研究所 一种安卓应用加固方法、系统及设备

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105468970A (zh) * 2015-11-27 2016-04-06 西北大学 一种基于防御网的Android应用防篡改方法及系统
CN106778103A (zh) * 2016-12-30 2017-05-31 上海掌门科技有限公司 一种安卓应用程序防逆向破解的加固方法、系统及解密方法
CN109359468A (zh) * 2018-08-23 2019-02-19 阿里巴巴集团控股有限公司 漏洞检测方法、装置及设备
CN111555872A (zh) * 2020-04-30 2020-08-18 平安科技(深圳)有限公司 一种通信数据处理方法、装置、计算机系统及存储介质
WO2021218088A1 (zh) * 2020-04-30 2021-11-04 平安科技(深圳)有限公司 一种通信数据处理方法、装置、计算机系统及存储介质
CN115473702A (zh) * 2022-08-23 2022-12-13 广西电网有限责任公司电力科学研究院 一种基于在线交互式web动态防御的内容混淆方法
CN115756480A (zh) * 2022-11-07 2023-03-07 中国科学院信息工程研究所 一种安卓应用加固方法、系统及设备

Also Published As

Publication number Publication date
CN116522343A (zh) 2023-08-01

Similar Documents

Publication Publication Date Title
Sun et al. Monet: a user-oriented behavior-based malware variants detection system for android
US7779472B1 (en) Application behavior based malware detection
RU2589862C1 (ru) Способ обнаружения вредоносного кода в оперативной памяти
US7836504B2 (en) On-access scan of memory for malware
US7577848B2 (en) Systems and methods for validating executable file integrity using partial image hashes
US8661541B2 (en) Detecting user-mode rootkits
RU2617654C2 (ru) Система и способ формирования набора антивирусных записей, используемых для обнаружения вредоносных файлов на компьютере пользователя
US20070039048A1 (en) Obfuscating computer code to prevent an attack
US7607122B2 (en) Post build process to record stack and call tree information
Alzahrani et al. An analysis of conti ransomware leaked source codes
US10528729B2 (en) Methods and systems for defending against cyber-attacks
Yücel et al. Imaging and evaluating the memory access for malware
Sun et al. Blender: Self-randomizing address space layout for android apps
Banescu et al. Software-based protection against changeware
Brierley et al. Persistence in Linux-based IoT malware
CN110717181B (zh) 基于新型程序依赖图的非控制数据攻击检测方法及装置
Kelec et al. A proposal for addressing security issues related to dynamic code loading on android platform
Kilic et al. Blind format string attacks
CN116522343B (zh) 一种Native函数防御攻击的方法及装置
Pan et al. PMCAP: a threat model of process memory data on the windows operating system
Rodríguez et al. A tool to compute approximation matching between windows processes
US11436331B2 (en) Similarity hash for android executables
Detken et al. Software-design for internal security checks with dynamic integrity measurement (DIM)
US8788845B1 (en) Data access security
Cabaj et al. The impact of malware evolution on the analysis methods and infrastructure

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