CN114995793A - 安全计算机代码以及用于从原始计算机代码创建安全计算机代码的系统、方法和存储介质 - Google Patents
安全计算机代码以及用于从原始计算机代码创建安全计算机代码的系统、方法和存储介质 Download PDFInfo
- Publication number
- CN114995793A CN114995793A CN202210191381.0A CN202210191381A CN114995793A CN 114995793 A CN114995793 A CN 114995793A CN 202210191381 A CN202210191381 A CN 202210191381A CN 114995793 A CN114995793 A CN 114995793A
- Authority
- CN
- China
- Prior art keywords
- code
- domain
- parameters
- translated
- signature
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 215
- 230000006870 function Effects 0.000 description 10
- 230000008569 process Effects 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 6
- 238000004891 communication Methods 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 238000004590 computer program Methods 0.000 description 3
- 230000036541 health Effects 0.000 description 3
- 230000009466 transformation Effects 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000035755 proliferation Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
- 239000011800 void material Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
- G06F21/54—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by adding security routines or objects to programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/31—Programming languages or programming paradigms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/14—Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/554—Detecting local intrusion or implementing counter-measures involving event detection and direct action
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/572—Secure firmware programming, e.g. of basic input output system [BIOS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/577—Assessing vulnerabilities and evaluating computer system security
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
- G06F21/6245—Protecting personal data, e.g. for financial or medical purposes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/447—Target code generation
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Computing Systems (AREA)
- Medical Informatics (AREA)
- Databases & Information Systems (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- Stored Programmes (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
公开了用于从原始计算机代码创建安全计算机代码的系统、方法和存储介质。安全计算机代码从原始计算机代码创建,并且具有在原始计算机代码的第一代码域和第二代码域之间的安全接口,第一代码域包括第一编码语言的代码,第二代码域包括第二编码语言的代码,第一代码域与第二代码域分开编译。示例性实现可以:标识在第一代码域中定义的、在第二代码域中声明的代码方法;在第二代码域中创建具有与所述代码方法的签名相对应的签名的对应代码方法;并且在第一代码域中创建经转换的代码方法。
Description
技术领域
本公开涉及安全计算机代码以及用于从原始计算机代码创建安全计算机代码的系统、方法和存储介质。
背景技术
在智能电话或其他用户设备上执行的移动应用的激增已经导致由这样的设备对敏感数据的传输和处理的增加。例如,诸如银行业、保险和其他金融应用之类的“金融科技”应用通常需要由移动用户设备在用户设备的原生环境中处理敏感的个人和金融信息。类似地,诸如远程医疗和健康信息门户之类的“健康科技”应用导致敏感的健康信息由移动用户设备来处理。当然,可能存在具有各种物理和操作系统安全级别的各种用户设备,并且用户设备通常由潜在的攻击者可访问(例如,不在防火墙后面)。因此,对于希望以未经授权的方式获取敏感信息和/或获取其他内容的攻击者来说,这样的设备通常是有吸引力的攻击目标。“安全软件”的概念在试图阻止攻击者利用相对不安全的设备方面已经变得非常流行,。
AndroidTM操作系统是在全世界的智能手机和其他移动设备上最常见的操作系统。AndroidTM应用以APK或AAB文件的格式交付,其中文件中包含两个主要的代码域。一个是DEX域,其包括从一些支持的语言(诸如Java和Kotlin)编译的代码段。另一个是原生(native)域,包括从一些支持的语言(诸如C和C++)编译的原生代码段。
如图1中图示的,100是DEX域,102是DEX域中的原生函数声明。该方法在原生域101中定义,并且可以根据诸如Java原生接口(JNI)之类的协议来调用。DEX域和原生域之间的接口104对攻击者来说是清楚的。例如,假设一个AndroidTM应用足球游戏,其中足球大小在原生域中设置,并在DEX域中使用。可能存在名为Java_com_xyz_myApp_GetBallSize的原生函数,在DEX域中调用该原生函数来改变球的大小。黑客可以容易地通过接口查看数据流,以查明该方法的参数和返回。一旦查明了参数和返回,攻击者就可以容易地改变球的大小,而无需进行改变的许可。在该示例中,攻击者可以容易地确定参数和返回,因为DEX域和原生域之间的接口是清楚的。这当然只是一个简单的示例。然而,对于更敏感/有价值的内容,可以以类似的方式利用该接口。此外,尽管上述示例涉及AndroidTM操作系统,但是每当在各种计算环境中的域之间调用函数时,都存在类似的问题。由代码实现的功能通常被称为“方法”,并且为了清楚起见,在本文中也被称为“代码方法”。
发明内容
所公开的实现使得软件域之间的接口更加安全,并且不太可能成为成功攻击的目标。本公开的一个方面涉及一种系统,该系统被配置用于通过保护原始计算机代码的第一代码域和第二代码域之间的接口来从原始计算机代码创建安全计算机代码,第一代码域包括第一编码语言的代码,并且第二代码域包括第二编码语言的代码,第一代码域与第二代码域分开编译。
用于创建受保护代码的系统可以包括由机器可读指令配置的一个或多个硬件处理器。(一个或多个)处理器可以被配置为标识在第一代码域中定义的、在第二代码域中声明的代码方法。该代码方法可以具有包括初始参数和返回的签名。(一个或多个)处理器可以被配置为在第二代码域中创建具有与该代码方法的签名相对应的签名的对应代码方法。该对应代码方法的参数中的至少一个可以被转换并作为经转换的参数存储在数组中。所述(一个或多个)处理器可以被配置为在第一代码域中创建经转换的代码方法。经转换的代码方法可以包括经转换的参数。经转换的代码方法可以由对应代码方法通过接口调用,并且可以访问数组。经转换的代码方法可以被配置为调用该方法,接收原始参数,并将经转换的参数作为编码参数返回。
本公开的另一方面涉及一种用于通过保护原始计算机代码的第一代码域和第二代码域之间的接口来从原始计算机代码创建安全计算机代码的方法,第一代码域包括第一编码语言的代码,第二代码域包括第二编码语言的代码,第一代码域与第二代码域分开编译。
该方法可以包括标识在第一代码域中定义的、在第二代码域中声明的代码方法。该代码方法可以具有包括初始参数和返回的签名。该方法可以包括在第二代码域中创建具有与该代码方法的签名相对应的签名的对应代码方法。对应代码方法的参数中的至少一个可以被转换并作为经转换的参数存储在数组中。该方法可以包括在第一代码域中创建经转换的代码方法。经转换的代码方法可以包括经转换的参数。经转换的代码方法可以由对应代码方法通过接口调用,并且可以访问数组。经转换的代码方法可以被配置为调用该方法,接收原始参数,并将经转换的参数作为编码的参数返回。
本公开的又一方面涉及一种在其上体现指令的非暂时性计算机可读存储介质,所述指令由一个或多个处理器可执行,以执行从原始计算机代码创建安全计算机代码的方法。该方法可以包括标识在第一代码域中定义的、在第二代码域中声明的代码方法。代码方法可以具有包括初始参数和返回的签名。该方法可以包括在第二代码域中创建具有与该代码方法的签名相对应的签名的对应代码方法。该对应代码方法的参数中的至少一个可以被转换并作为经转换的参数存储在数组中。该方法可以包括在第一代码域中创建经转换的代码方法。经转换的代码方法可以包括经转换的参数。经转换的代码方法可以由对应代码方法通过接口调用,并且可以访问数组。经转换的代码方法可以被配置为调用该方法,接收原始参数,并将经转换的参数作为编码的参数返回。
本公开的又一方面是一种其上存储有数据结构的计算机可读存储介质,包括从原始计算机代码创建的安全计算机代码,并且在原始计算机代码的第一代码域和第二代码域之间具有安全接口,第一代码域包括第一编码语言的代码,第二代码域包括第二编码语言的代码,第一代码域与第二代码域分开编译。
数据结构包括在第一代码域中定义的、在第二代码域中声明的代码方法,该代码方法具有包括初始参数和返回的签名。第二代码域中的对应代码方法具有与该代码方法的签名相对应的签名,其中对应代码方法的参数中的至少一个被转换并且作为经转换的参数被存储在数组中。第一代码域中的经转换的代码方法包括经转换的参数。对应代码方法包括通过接口对经转换的代码方法的调用,并且可以访问数组,经转换的代码方法被配置为调用代码方法,接收原始参数,并且将经转换的参数作为编码的参数返回。
在参考附图考虑以下描述和所附权利要求时,本技术的这些和其他特征和特性,以及结构的相关元件的操作方法和功能以及部件的组合和制造的经济性将变得更加显而易见,所有这些都形成本说明书的一部分,其中相同的参考标号在各个附图中指定对应的部件。然而,应当明确地理解,附图仅仅是为了说明和描述的目的,并且不旨在作为对本发明的限制的定义。如在说明书和权利要求中所使用的,单数形式的“一”、“一个”和“该”包括复数指示物,除非上下文另有明确规定。
附图说明
图1示意性地图示了示出两个代码域之间的接口的一部分代码;
图2是根据一个或多个实现的被配置用于从原始计算机代码创建安全计算机代码的计算系统的框图;
图3是根据一个或多个实现的用于从原始计算机代码创建安全计算机代码的方法的流程图;
图4a是表示根据一个或多个实现的特定示例的安全代码的示意图;
图4b是用于获得图4a的示例中的安全代码的不安全代码的关系的示意图;
图4c是图4a的示例的安全代码的关系的示意图;
图5是具有根据一个或多个实现被保护的用户设备的计算系统的框图。
具体实施方式
所公开的实现转换了两个软件域之间的接口,诸如DEX域和原生AndroidTM域,使得接口以使攻击者难以查明相关代码方法的实际参数和返回的方式被混淆。例如,在原生域中定义并在DEX域中调用的方法名可能被改写,并且原生代码方法的参数和返回被转换。众所周知,文件名改写(filename mangling)过程已知为一种翻译文件名以用于在操作系统级别处的兼容性的机制。众所周知,当文件系统上的文件名以与访问它的操作系统不兼容的形式出现时,会使用改写技术。例如,当Windows机器试图访问Unix服务器上的文件并且该文件的文件名包含在Windows中无效的字符时,在计算机网络上发生这样的改写。所公开的实现利用已知的改写概念用于不同目的。
在所公开的实现中,对于在第一域中声明的每个现有原生代码方法,创建具有相同签名(方法名、参数和返回)或相似签名的对应代码方法。利用随机方案和随机尺度/偏差转换参数和返回。经转换的参数和返回存储在一个数组中。该数组被传递给下面定义的DEX域中的新的经转换方法。在调用新的经转换方法之后,它对来自数组的返回进行解码。对应的经转换方法声明具有统一的数组参数,而没有任何返回。新的经转换方法在原生域中被调用。利用统一的参数定义经转换方法,其调用原始方法。经转换方法可以:
• 从统一参数接收回原始参数和返回
• 利用解码的参数调用原始方法;以及
• 利用随机方案和随机尺度/偏差对返回进行编码。
图2图示了根据一个或多个实现的被配置用于从原始计算机代码创建安全计算机代码的计算机系统200。在一些实现中,系统200可以包括一个或多个计算平台202。(一个或多个)计算平台202可以被配置为根据客户端/服务器架构和/或其他架构与一个或多个远程计算平台204通信。(一个或多个)远程计算平台204可以被配置为经由(一个或多个)计算平台202和/或根据对等架构和/或其他架构来与其他客户端计算平台通信。用户可以经由(一个或多个)远程计算平台204访问系统200。可替代地,(一个或多个)计算平台202可以体现在用户设备中。下面描述的(一个或多个)计算平台202的功能可以由服务器设备、客户端设备或者一个或多个服务器设备和一个或多个客户端设备的任何组合来完成。
(一个或多个)计算平台202可以由机器可读指令206来配置。机器可读指令206可以包括一个或多个指令模块。所述指令模块可以包括计算机程序模块。所述指令模块可以包括代码方法标识模块208、代码方法创建模块210、代码方法存储模块212和/或其他指令模块中的一个或多个。
代码方法标识模块208可以被配置为解析在两个或更多个域中定义的原始代码,并且标识在第一代码域中定义的、在第二代码域中声明的代码方法。该过程可以通过利用任何已知的代码分析技术来完成。例如,这样的技术和工具在如下中公开:Mariem Graa,Nora Cuppens-Boulahia,Frederic Cuppens和Jean-Louis Lanet的“Tracking Explicitand Control Flows in Java and Native Android Apps Code”;https://silo.tips/download/tracking-explicit-and-control-flow-in-Java-and-native-Android-apps-code,http://www.fengguow.com/resources/papers/JN-safccs18.pdf。
代码方法可以包括m个参数和n个返回。代码方法可以具有签名,其包括参数和返回的方法、数量和数据类型。
代码方法创建模块210可以被配置为在第二代码域中创建具有与由代码方法标识模块208标识的代码方法的签名相对应的签名的对应代码方法。该对应代码方法可以具有与代码方法的签名相同或相似的签名。作为非限制性示例,该对应代码方法的签名可以具有与代码方法相同的方法名、参数和返回。
代码方法创建模块210可以由人类编码员通过例如远程编码计算设备来控制,或者可以通过可执行代码来自动化。对应代码方法的参数中的至少一个可以被转换并存储在数组中,诸如下面描述的图4的数组424,作为经转换的参数。该数组可以有x个元素。数组中随机选择的占位符可以用于存储经编码的参数。
代码方法创建模块210还可以被配置为在第一代码域中创建经转换的代码方法。作为非限制性示例,经转换的代码方法可以被配置为调用该方法,接收原始参数,并将经转换的参数作为经编码的参数返回。经转换的代码方法可以包括经转换的参数。经转换的代码方法可以由对应代码方法通过接口调用,并且可以访问数组。代码方法存储模块212可以被配置为将对应代码方法、经转换的代码方法和数组存储在非暂时性计算机存储介质上。在安全代码中,通过第一域和第二域之间的接口仅传送经转换的参数,从而增加了接口的安全性。
在一些实现中,经编码的参数可以包括随机偏差。在一些实现中,第一编码语言和第二编码语言可以是不同的编码语言。在一些实现中,第一代码域可以是android原生域。在一些实现中,第二代码域可以是DEX域。在一些实现中,m、n和x可以是整数。在一些实现中,x可以大于m加n
应当理解,尽管模块在图2中被图示为在单个处理单元内实现,但是在(一个或多个)处理器218包括多个处理单元的实现中,模块中的一个或多个可以远离其他模块实现。由本文中描述的不同模块提供的功能的描述出于说明性目的,而不旨在是限制性的,因为模块中的任何一个可以提供比所描述的更多或更少的功能。例如,可以去除一个或多个模块,并且其部分或全部功能可以由其他模块提供。作为另一个示例,(一个或多个)处理器218可以被配置为执行一个或多个附加模块,所述一个或多个附加模块可以执行归属于模块208、210和/或212之一的功能中的一些或全部。
图3图示了根据一个或多个实现的用于从原始计算机代码创建安全计算机代码的方法300。在一些实现中,方法300可以利用未描述的一个或多个附加操作来完成,和/或不用所讨论的操中的作一个或多个来完成。此外,据其在图3中图示并在下面描述方法300的操作的顺序不旨在是限制性的,除非明确照此指示。
在一些实现中,方法300可以在一个或多个处理设备中(例如,数字处理器、模拟处理器、设计成处理信息的数字电路、设计成处理信息的模拟电路、状态机和/或用于以电子方式处理信息的其他机构)实现。所述一个或多个处理设备可以包括响应于电子存储在电子存储介质上的指令来执行方法300的一些或所有操作的一个或多个设备。所述一个或多个处理设备可以包括通过硬件、固件和/或软件配置为专门设计用于执行方法300的一个或多个操作的一个或多个设备。例如,该方法可以由图2的计算系统200实现。
在步骤1中,操作302可以包括标识在第一代码域中定义的、在第二代码域中声明的代码方法。该代码方法可以具有包括初始参数和返回的签名。操作302可以由通过机器可读指令配置的一个或多个硬件处理器来执行,所述机器可读指令包括与代码方法标识模块208相同或相似的模块。
在步骤2中,操作304可以包括在第二代码域中创建经转换的代码方法声明,其具有数组作为参数、void作为返回以及改写的方法名。操作304可以由通过机器可读指令配置的一个或多个硬件处理器来执行,所述机器可读指令包括与代码方法创建模块210相同或相似的模块。
在步骤3中,操作306可以包括在第二代码域中将代码方法声明改变为具有相同签名的代码方法定义。例如,代码方法声明:
可以在第二域中改变为以下内容:
根据一个或多个实现,操作306可以由通过机器可读指令配置的一个或多个硬件处理器来执行,所述机器可读指令包括与代码方法创建模块210相同或相似的模块。
在步骤4中,操作308可以包括将经转换的代码段添加到由操作306创建的代码方法定义中,创建数组,将经转换的参数随机放置到数组中,以及将经转换的代码方法的调用添加到由操作306创建的代码方法定义中。作为示例,第二域中的所得到的代码方法定义可以如下设置:
在步骤5中,操作310可以包括在第一代码域中创建在操作304中声明的代码方法定义,这调用在第一代码域中定义的原始代码方法。例如,结果可以是第一域中的如下的新的代码方法定义:
在步骤6中,操作312可以包括将经转换的代码段和原始代码方法的调用添加到由操作310在第一代码域中创建的代码方法定义中。例如,可以在第一域中创建如下的新的方法定义:
通过上述操作创建的安全代码可以存储在非暂时性计算机可读介质中,并由计算机硬件处理器执行,从而提高执行代码的设备的安全级别。
在DEX域和AndroidTM原生域中创建安全计算机代码的示例如下所述。然而,所公开的实现可以应用于各种代码域。如上所述,该示例基于在游戏中设置球的大小的功能。原始代码包括在DEX域中声明并且在原生AndroidTM域中定义的原生代码方法。在该示例中,原生代码方法取得两个整数参数,并且返回一个整数。然而,代码方法可以使用任何数量和类型的参数。
在该示例中,对DEX域中的原生方法的调用如下:
在该示例中,DEX域中的原生方法声明如下:
在该示例中,该方法在原生域中定义如下:
在原始代码中,域之间的接口是不安全的,并且因此攻击者可以很容易地确定参数和返回。因此,接口呈现了对原始代码的相对容易的攻击点。现在将通过伪代码的示例来说明上面公开的实现的步骤。
与getBallSize的原始原生方法具有相同签名的对应DEX域方法被创建,如下所述:
对应方法的签名(例如,参数和名称)与原生方法相同。然而,在DEX方法中,转换被应用于参数以获得经转换的参数。例如,可以将任何一个或多个已知转换应用于这些参数。例如,参数和/或返回可以根据具有不同尺度和偏差的有限、线性MBA和多MBA转换方案进行编码。
创建数组来保存所有参数和返回。优选地,该数组还包括用于“虚拟值”(dummies)的字段,其可以被随机选取以混淆参数和返回。该数组可以定义如下:
数组intLocalArray包括两个经转换的实参(argument,p1和p2)和一些随机虚拟值。新的原生方法,经转换的方法NewMangledNativeMethod,可以利用数组调用
返回的结果保存在数组intLocalArray中,并且被解码:
新的对应的经转换原生方法可以在DEX域中声明,其将数组作为参数,并且没有返回:
在原生域中,创建调用名为Java_com_xyz_myApp_GameState_getBallSize(JNIEnv *env, jobject thisObj, jint i, jint j)的原始原生方法的原生方法的定义。原始原生方法可以在共享库文件(诸如. so文件)中定义,并且因此原始原生方法的源代码可能不可用:
最后,改变原来在dex域中调用的原生方法名。例如,在上面的示例中,方法名Java_com_xyz_myApp_GameState_getBallSize可以被改变为Java_com_xyz_myApp_GameState_hash123。注意,新的方法名仅在新生成的转换方法中被调用。
一些事情可能需要同步,使得在DEX域和原生域这两者中均正确地进行编码和解码。所生成数组中参数和返回的随机性在DEX域和原生域中都是共享的。假设原始原生方法存在3个参数(p1,p2,p3)和1个返回(r1)。可以创建具有8个元素的数组,并且可以为p1、p2、p3和r1随机选择4个占位符。例如,从数组的{1,2,3,4,5,6,7,8}中选择{3,5,7,1}的位置,作为如下重新呈现的JSON数据结构:
在代码生成阶段期间,JSON信息在DEX域和原生域之间共享,以便正确地放置/选取适当的实参。用于编码和解码参数和返回的方案和尺度/偏差在DEX域和原生域中是共享的,并且可以从例如上面列出的编码方案中选择。通常,对于每个方案的每个尺度存在scale_inv,以便正确地对实参进行编码/解码。尺度(scale)和scale_inv的关系为:
尺度常数和对应的scale_inv可以成对生成,尺度可以分布在DEX域中用于编码,并且对应的scale_inv可以分布在原生域中用于解码。可替代地,scale可以分布在原生域中用于编码,并且对应的scale_inv可以分布在dex域中用于解码。下面是一个扩展为包含scale/scale_inv/bias信息的JSON文件示例:
在代码生成阶段期间,JSON信息可以在DEX域和原生域之间共享,以便正确地编码/解码正确的实参和返回。根据DEX域和原生域之间的接口,Android应用中的所得到代码如下:
DEX域:
原生域:
图4a图示了在应用安全特征之后的安全代码样本400,其中Dex域和原生域之间的接口(即,函数FbW92ZU5hdGl2ZQ)被转换。请注意,函数名被改变,参数被转换,并且返回被转换。
图4b图示了在应用安全特征之前,即根据原始代码,两个代码域之间的关系。图4c图示了在应用安全特征之后,即根据安全代码,两个代码域之间的关系。可以看出,所得到的安全应用包括两个域之间的被模糊的接口。换句话说,攻击者不能轻易查明通过接口传递的参数和返回的真实值。
图5图示了根据所公开的实现的包括执行安全代码的用户设备520a的计算系统500。服务器502包括电子存储装置516,电子存储装置516包括将被传输到用户设备520a和520b并由其处理的有价值/敏感的内容或其他数据。例如,所述传输可以通过互联网进行。例如,服务器502可以与金融机构相关联,并且敏感信息可以是账号。如图5所示,用户设备510a包括两个代码域,域1 522和域2 524。从域2 524调用的方法530可以将敏感账号作为参数进行处理。然而,在域2 524中使用对应方法532和在域1 522中使用经转换的方法534导致账号参数在通过接口526在域之间传输时被模糊。原始代码方法533是不受保护的方法。如上所述,数组525可以以随机方式存储参数和返回,并且可以在域1 522和域2 524之间共享
在一些实现中,(一个或多个)计算平台202和(一个或多个)远程平台204可以经由一个或多个电子通信链路可操作地链接。例如,这样的电子通信链路可以至少部分地经由诸如互联网和/或其他网络的网络来建立。应当领会,这不旨在是限制性的,并且本公开的范围包括其中(一个或多个)计算平台202和(一个或多个)远程计算平台204可以经由一些其他通信介质可操作地链接或者可以集成到单个平台或设备中的实现。
给定的远程计算平台204可以包括被配置为执行计算机程序模块的一个或多个处理器。计算机程序模块可以被配置为使得与给定远程计算平台204相关联的用户能够与计算平台202对接和/或提供本文中归属于(一个或多个)远程计算平台204的其他功能。作为非限制性示例,给定的远程计算平台204可以包括台式计算机、膝上型计算机、手持式计算机、平板计算平台、智能手机、游戏控制台和/或其他计算平台中的一个或多个。可以包括系统200外部的信息源、参与系统200的外部实体和/或其他资源的外部资源也可以通过网络耦合到系统200。
(一个或多个)计算平台202可以包括电子存储装置116、一个或多个处理器218和/或其他组件。(一个或多个)计算平台202可以包括通信线路或端口,以使得能够实现与网络和/或其他计算平台的信息交换。图1中的(一个或多个)计算平台202的图示不旨在是限制性的。(一个或多个)计算平台202可以包括多个硬件、软件和/或固件组件,它们一起操作以提供本文中归属于(一个或多个)计算平台202的功能。例如,(一个或多个)计算平台202可以由作为(一个或多个)计算平台202一起操作的计算平台云来实现。
电子存储装置216可以包括以电子方式存储信息的非暂时性存储介质。电子存储装置116的电子存储介质可以包括与(一个或多个)计算平台202集成(即,基本上不可移动)提供的系统存储装置和/或经由例如端口(例如,USB端口、火线端口等)或驱动器(例如,磁盘驱动器等)可移动地连接到计算平台202的可移动存储装置中的一个或两个。电子存储装置216可以包括光学可读存储介质(例如,光盘等)、磁可读存储介质(例如,磁带、磁硬盘驱动器、软盘驱动器等)、基于电荷的存储介质(例如,EEPROM、RAM等)、固态存储介质(例如,闪存驱动器等)和/或其他电子可读存储介质中的一个或多个。电子存储装置216可以包括一个或多个虚拟存储资源(例如,云存储、虚拟专用网和/或其他虚拟存储资源)。电子存储装置216可以存储软件算法、由(一个或多个)处理器218确定的信息、从(一个或多个)计算平台202接收的信息、从(一个或多个)客户端计算平台204接收的信息和/或使得(一个或多个)计算平台202能够如本文所述起作用的其他信息。
(一个或多个)处理器218可以被配置为在(一个或多个)计算平台202中提供信息处理能力。这样,(一个或多个)处理器218可以包括数字处理器、模拟处理器、设计成处理信息的数字电路、设计成处理信息的模拟电路、状态机和/或用于以电子方式处理信息的其他机构中的一个或多个。尽管(一个或多个)处理器218在图2中被示为单个实体,但是这仅仅是为了说明的目的。在一些实现中,(一个或多个)处理器118可以包括多个处理单元。这些处理单元可以在物理上位于同一设备内,或者(一个或多个)处理器218可以表示协同操作的多个设备的处理功能。(一个或多个)处理器118可以被配置为执行模块208、210和/或212和/或其他模块。(一个或多个)处理器218可以被配置为通过软件执行图2的模块和/或其他模块;硬件;固件;软件、硬件和/或固件的某种组合;和/或用于配置(一个或多个)处理器218上的处理能力的其他机构。如本文所使用的,术语“模块”可以指代执行归属于该模块的功能的任何组件或组件集。这可以包括在执行处理器可读指令期间的一个或多个物理处理器、处理器可读指令、电路、硬件、存储介质或任何其他组件。
尽管基于当前被认为是最实用和优选的实现方式,出于说明的目的详细描述了本技术,但是应当理解,这样的细节仅仅是出于该目的,并且该技术不限于所公开的实现,而是相反,旨在覆盖在所附权利要求的精神和范围内的修改和等同布置。例如,应当理解,本技术考虑到,在尽可能的程度上,任何实现的一个或多个特征可以与任何其他实现的一个或多个特征相组合。
Claims (12)
1.一种通过保护原始计算机代码的第一代码域和第二代码域之间的接口来从原始计算机代码创建安全计算机代码的方法,第一代码域包括第一编码语言的代码,第二代码域包括第二编码语言的代码,第一代码域与第二代码域分开编译,所述方法包括:
标识在第一代码域中定义的、在第二代码域中声明的代码方法,所述代码方法具有包括初始参数和返回的签名;
在所述第二代码域中创建具有与所述代码方法的签名相对应的签名的对应代码方法,其中所述对应代码方法的参数中的至少一个被转换并作为经转换的参数存储在数组中;
在所述第一代码域中创建经转换的代码方法,所述经转换的代码方法包括经转换的参数,所述经转换的代码方法由对应代码方法通过所述接口调用,并且可以访问所述数组;和
其中所述经转换的代码方法被配置为调用所述方法,接收所述初始参数,并将经转换的参数作为经编码的参数返回。
2.根据权利要求1所述的方法,其中所述经编码的参数包括随机偏差。
3.根据权利要求1或2所述的方法,其中第一编码语言和第二编码语言是不同的编码语言。
4.根据权利要求3所述的方法,其中所述第一代码域是android原生域,并且其中所述第二代码域是DEX域。
5.根据前述权利要求中任一项所述的方法,其中对应代码方法的签名具有与所述代码方法相同的方法名、参数和返回。
6.根据前述权利要求中任一项所述的方法,其中所述代码方法包括m个参数和n个返回,并且其中所述数组具有x个元素,其中m是整数,其中n是整数,其中x是整数,并且其中x大于m加n;和
其中数组中随机选择的占位符用于存储经编码的参数。
7.根据权利要求6所述的方法,其中所述数组在第一域和第二域之间共享。
8.根据前述权利要求中任一项所述的方法,其中对应代码方法具有与代码方法的签名相同的签名。
9.根据前述权利要求中任一项所述的方法,进一步包括在非暂时性计算机存储介质上存储对应代码方法、经转换的代码方法和数组。
10.一种包括由机器可读指令配置的一个或多个硬件处理器系统,用于执行前述权利要求中任一项的方法。
11.一种具有在其上体现的指令的非暂时性计算机可读存储介质,所述指令由一个或多个处理器可执行,以实行权利要求1至9中任一项所述的方法。
12.其上存储有数据结构的计算机可读存储介质,包括从原始计算机代码创建的安全计算机代码,并且具有原始计算机代码的第一代码域和第二代码域之间的安全接口,第一代码域包括第一编码语言的代码,第二代码域包括第二编码语言的代码,第一代码域与第二代码域分开编译,所述数据结构包括:
在第一代码域中定义的、在第二代码域中声明的代码方法,所述代码方法具有包括初始参数和返回的签名;
第二代码域中的具有与所述代码方法的签名相对应的签名的对应代码方法,其中所述对应代码方法的参数中的至少一个被转换并作为经转换的参数存储在数组中;
第一代码域中的经转换的代码方法,所述经转换的代码方法包括经转换的参数;
其中所述对应代码方法包括通过接口对经转换的代码方法的调用,并且可以访问数组;和
其中经转换的代码方法被配置为调用所述代码方法,接收原始参数,并且将经转换的参数作为经编码的参数返回。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP21160028.3A EP4053722B1 (en) | 2021-03-01 | 2021-03-01 | Secured computer code and systems, methods, and storage media for creating the secured computer code from original computer code |
EP21160028.3 | 2021-03-01 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114995793A true CN114995793A (zh) | 2022-09-02 |
Family
ID=74853552
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210191381.0A Pending CN114995793A (zh) | 2021-03-01 | 2022-03-01 | 安全计算机代码以及用于从原始计算机代码创建安全计算机代码的系统、方法和存储介质 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11947665B2 (zh) |
EP (1) | EP4053722B1 (zh) |
CN (1) | CN114995793A (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020070918A1 (ja) * | 2018-10-05 | 2020-04-09 | 日本電信電話株式会社 | 変換装置及び変換プログラム |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2304552B1 (en) * | 2008-05-23 | 2019-11-06 | Irdeto B.V. | System and method for generating white-box implementations of software applications |
KR101074624B1 (ko) * | 2008-11-03 | 2011-10-17 | 엔에이치엔비즈니스플랫폼 주식회사 | 브라우저 기반 어뷰징 방지 방법 및 시스템 |
US10120663B2 (en) * | 2014-03-28 | 2018-11-06 | Intel Corporation | Inter-architecture compatability module to allow code module of one architecture to use library module of another architecture |
EP3270310B1 (en) * | 2016-07-11 | 2020-06-10 | Afirma Consulting & Technologies, S.L. | Mobile device applications security protection based on personalization and secured code domains pairing |
EP3506100A1 (en) * | 2017-12-28 | 2019-07-03 | GuardSquare NV | Automated software application verification system |
US11550583B2 (en) * | 2020-11-13 | 2023-01-10 | Google Llc | Systems and methods for handling macro compatibility for documents at a storage system |
-
2021
- 2021-03-01 EP EP21160028.3A patent/EP4053722B1/en active Active
-
2022
- 2022-02-25 US US17/681,169 patent/US11947665B2/en active Active
- 2022-03-01 CN CN202210191381.0A patent/CN114995793A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
EP4053722B1 (en) | 2023-11-29 |
US20220277073A1 (en) | 2022-09-01 |
EP4053722A1 (en) | 2022-09-07 |
US11947665B2 (en) | 2024-04-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20180157808A1 (en) | System and method for code obfuscation of application | |
Pappas et al. | CloudFence: Data flow tracking as a cloud service | |
CN104462959B (zh) | 一种安卓应用的加固保护方法、服务器和系统 | |
US10409966B2 (en) | Optimizing and protecting software | |
US20170116410A1 (en) | Software protection | |
CN111143869B (zh) | 应用程序包处理方法、装置、电子设备及存储介质 | |
CN103530535A (zh) | 一种Android平台应用程序保护的加脱壳方法 | |
US20150294114A1 (en) | Application randomization | |
CN105579955A (zh) | 应用控制流模型 | |
US11755724B2 (en) | Securing software routines | |
CN109891415B (zh) | 针对未经授权的客户端应用程序保护Web服务器 | |
EP3035228B1 (en) | Code integrity protection by computing target addresses from checksums | |
WO2017026738A1 (ko) | 어플리케이션의 코드를 보호하기 위한 시스템 및 방법 | |
US11372969B1 (en) | Randomized canary and shadow stack for JIT-ROP defense | |
CN110210211A (zh) | 一种数据保护的方法和计算设备 | |
CN114995793A (zh) | 安全计算机代码以及用于从原始计算机代码创建安全计算机代码的系统、方法和存储介质 | |
WO2023031679A1 (en) | Systems and methods for inhibiting exploitations in runtime environments | |
US8250178B2 (en) | Protecting client-side code | |
KR101622514B1 (ko) | 서버에 대한 웹 요청들의 위조의 방지 | |
JP2018005915A (ja) | アプリケーションパッケージを提供する方法およびシステム、アプリケーションを実行する方法およびシステム | |
EP4167111B1 (en) | Method and apparatus for preparing unique software | |
EP4396711A1 (en) | Systems and methods for inhibiting exploitations in runtime environments | |
Heinl | Android security: Creation of a virtual learning environment | |
Mathivanan | Android Security: Exploration and Exploitation of weakness in Android's Dalvik Executables | |
Kuba et al. | Sealed grid with downloadable services |
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 |