CN108446186B - 从加壳Android应用程序中恢复Dex源文件的方法 - Google Patents

从加壳Android应用程序中恢复Dex源文件的方法 Download PDF

Info

Publication number
CN108446186B
CN108446186B CN201810089811.1A CN201810089811A CN108446186B CN 108446186 B CN108446186 B CN 108446186B CN 201810089811 A CN201810089811 A CN 201810089811A CN 108446186 B CN108446186 B CN 108446186B
Authority
CN
China
Prior art keywords
dex
source file
dexfile
field
shelled
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
CN201810089811.1A
Other languages
English (en)
Other versions
CN108446186A (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.)
Zhongshi Ruian Beijing Network Technology Co ltd
National Computer Network and Information Security Management Center
Original Assignee
Zhongshi Ruian Beijing Network Technology Co ltd
National Computer Network and Information Security Management Center
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 Zhongshi Ruian Beijing Network Technology Co ltd, National Computer Network and Information Security Management Center filed Critical Zhongshi Ruian Beijing Network Technology Co ltd
Priority to CN201810089811.1A priority Critical patent/CN108446186B/zh
Publication of CN108446186A publication Critical patent/CN108446186A/zh
Application granted granted Critical
Publication of CN108446186B publication Critical patent/CN108446186B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1479Generic software techniques for error detection or fault masking
    • G06F11/1489Generic software techniques for error detection or fault masking through recovery blocks
    • 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

Landscapes

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

Abstract

本发明涉及一种从加壳Android应用程序中恢复Dex源文件的方法,包括以下步骤:步骤1、定位目标程序的DexFile结构体在内存中的地址,其中,所述目标程序为待恢复Dex源文件对应的加壳的Android应用程序;步骤2、根据所定位的地址获取目标程序对应的DexFile Header结构体;步骤3、循环遍历并加载DexFile Header结构体中所有映射的字段;步骤4、对所加载的DexFile Header结构体内的字段进行重组和修复,从而从所述目标程序中恢复Dex源文件。本发明可以有效地从加壳Android应用程序中提取出Dex源文件,适用于多种Android应用加固方案,具有通用性,且方法简单有效,便于实施和维护。

Description

从加壳Android应用程序中恢复Dex源文件的方法
技术领域
本发明涉及计算机技术领域,尤其涉及一种从加壳Android应用程序中恢复Dex源文件的方法。
背景技术
Android(安卓)是当前常用的手机操作系统,Android系统的广泛使用带来了Android应用程序的繁荣,但同时也给攻击者更多的攻击机会。加壳程序通常采用各种方法来隐藏Dex源文件,防止恶意攻击者破解Dex源文件,其中,Dex源文件指的是原始的可执行文件。加壳程序还使用代码混淆技术来阻止对内部逻辑的分析。加壳程序一方面可以保护Android应用程序不被修改和重新加壳;但另一方面,攻击者也会使用加壳程序来加强恶意软件,以避免基于指纹的检测,使得难以对恶意软件进行安全分析。
传统的脱壳方法主要采用将已加载的Dex数据直接从内存转储到磁盘中以恢复原来的Dex源文件的方法。但是,一部分加壳程序会将Dex源文件重新加载到不连续的内存区域,并修改指向数据的相关指针,导致转储的Dex源文件格式不正确。此外,还有些加壳程序会故意破坏Dex中结构数据,如果不加修复,会导致静态分析工具无法解析。现有的脱壳方法通过内存插桩的方式进行脱壳,但脱壳逻辑完全在Android内核层实现,开发效率极低,通用性不高,并且很难及时灵活应对新的加壳技术,因此如何发明一种通用的从加壳Android应用程序中恢复Dex源文件的方法成为亟待解决的技术问题。
发明内容
本发明所要解决的技术问题在于,提供一种从加壳Android应用程序中恢复Dex源文件的方法,可以有效地从加壳Android应用程序中提取出Dex源文件,适用于多种Android应用加固方案,具有通用性,且方法简单有效,便于实施和维护。
为了解决上述技术问题,本发明提供了一种从加壳Android应用程序中恢复Dex源文件的方法,包括以下步骤:
步骤1、定位目标程序的DexFile结构体在内存中的地址,其中,所述目标程序为待恢复Dex源文件对应的加壳的Android应用程序;
步骤2、根据所定位的地址获取目标程序对应的DexFile Header结构体;
步骤3、循环遍历并加载DexFile Header结构体中所有映射的字段;
步骤4、对所加载的DexFile Header结构体内的字段进行重组和修复,从而从所述目标程序中恢复Dex源文件。
进一步的,所述方法还包括,步骤5、采用进程注入的方式加载脱壳机,启动目标程序,通过所述脱壳机执行所述步骤1至步骤4。
进一步的,所述步骤5还包括,通过修改内核启动逻辑,进行透明的进程注入,从而在Java层加载脱壳机;
启动目标程序,跳转到Native层,通过所述脱壳机执行所述步骤1至步骤4。
进一步的,所述步骤5中,所述在Java层加载脱壳机包括:
在Java框架中的ApplicationThread的bindApplication函数内,通过System.loadLibrary函数加载并初始化脱壳机程序。
进一步的,所述步骤5还包括,在Java层加载脱壳机,启动目标程序,采用JNI方法跳转到Native层,所述JNI指的是JAVA本地调用;
在所述Native层采用C++获取DexFile结构体在内存中的地址。
进一步的,所述步骤1包括:在所述目标程序动态运行时,通过进程注入的方式,进入到应用的进程空间,获取环境上下文,在所述进程空间内,定位DexFile结构体在内存中的地址。
进一步的,所述步骤1还包括:
在Native层采用dlopen函数加载libart.so动态库,然后通过dlsym函数获得art::Thread::CurrentFromDbd函数在内存中的地址,并获取当前线程;
所述当前线程对象中的art::JavaVMExt::DecodeGlobal函数将Java对象转换成内核层art::mirror::Class对象;
从所述art::mirror:Class对象中提取dex_cache_变量,所述dex_cache_变量指向整个DexFile结构体,从而定位DexFile结构体在内存中的地址。
进一步的,所述步骤3中,循环遍历并加载DexFileHeader结构体中的所有映射的字段包括;string_ids字段,type_ids字段,type_ids字段,proto_ids字段,field_ids字段,method_ids字段和class_defs字段,其中,
所述string_ids字段检索并获取Dex源文件中所有的字符串数据;
所述type_ids字段检索并获取Dex源文件中所有的数据类型数据;
所述proto_ids字段检索并获取Dex源文件中所有的原型数据;
所述field_ids字段检索并获取Dex源文件中所有的成员变量数据;
所述method_ids字段检索并获取Dex源文件中所有的函数定义;
所述class_defs字段检索并获取Dex源文件中类描述符,然后通过Java层函数Class.forName加载所有的Java类定义。
进一步的,所述步骤4包括:
创建新的用于放置加载后的字段内存区域,结构解析成DexFile对象,记为DexCopy;
Dex文件中的每一个类通过Java层的Class.forName函数加载,然后返回到Native层修复,对每一个DexFile Header结构体内的字段,进行修复,并复制到所DexCopy中,从而还原出连续的、可被解析的Dex源文件。
进一步的,所述步骤4中,所述修复过程包括:修复魔数、修复字段偏移以及修复错误指令。
根据本发明又一方面,提供一种控制器,其包括存储器与处理器,所述存储器存储有计算机程序,所述程序在被所述处理器执行时能够实现所述方法的步骤。
根据本发明又一方面,提供一种计算机可读存储介质,用于存储计算机指令,所述指令在由一计算机或处理器执行时实现所述方法的步骤。
本发明与现有技术相比具有明显的优点和有益效果。借由上述技术方案,本发明一种从加壳Android应用程序中恢复Dex源文件的方法可达到相当的技术进步性及实用性,并具有产业上的广泛利用价值,其至少具有下列优点:
(1)本发明所述方法能够有效地从加壳Android应用程序中提取出目标程序对应的Dex源文件,适用于多种Android应用加固方案,具有通用性,且方法简单有效,便于实施和维护。
(2)本发明对于加壳的恶意应用,提供了一种还原其代码,方便进行特征分析的途径,促进安卓加固行业的研究与发展。
(3)本发明所述方法通过修改内核启动逻辑,实现透明的进程注入,与现有的内核插桩脱壳方式相比,本发明对内核的修改极少,脱壳机通过进程注入的方式加载,与内核低耦合,因此在对脱壳机进行升级时,不需要重启系统和重新编译内核,只需要替换脱壳机即可,开发效率极高。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其他目的、特征和优点能够更明显易懂,以下特举较佳实施例,并配合附图,详细说明如下。
附图说明
图1为本发明一实施例提供从加壳Android应用程序中恢复Dex源文件的方法流程图;
图2为本发明一实施例提供的从加壳Android应用程序中恢复Dex源文件系统架构示意图;
图3为本发明一实施例提供的从加壳Android应用程序中恢复Dex源文件的进程注入示意图;
图4为本发明一实施例提供的从加壳Android应用程序中恢复Dex源文件的字段遍历和修复示意图。
具体实施方式
为更进一步阐述本发明为达成预定发明目的所采取的技术手段及功效,以下结合附图及较佳实施例,对依据本发明提出的一种从加壳Android应用程序中恢复Dex源文件的方法的具体实施方式及其功效,详细说明如后。
本发明实施例提供了一种从加壳Android应用程序中恢复Dex源文件的方法,适用于任意一种加固技术的加壳应用,如图1所示,包括以下步骤:
步骤1、定位目标程序的DexFile结构体在内存中的地址,其中,所述目标程序为待恢复Dex源文件对应的加壳的Android应用程序;
步骤2、根据所定位的地址获取目标程序对应的DexFile Header结构体;
步骤3、循环遍历并加载DexFileHeader结构体中所有映射的字段;
步骤4、对所加载的DexFile Header结构体内的字段进行重组和修复,从而从所述目标程序中恢复Dex源文件。
所述方法还包括,步骤5、在目标程序启动前,采用进程注入的方式加载脱壳机,然后启动目标程序,待脱壳机启动后,通过所述脱壳机执行所述步骤1至步骤4。
具体地,所述步骤5中,通过修改内核启动逻辑,实现透明的进程注入,从而在Java层加载脱壳机;启动目标程序,跳转到Native层,通过所述脱壳机执行所述步骤1至步骤4。
作为示例,在所述步骤5中,所述在Java层加载脱壳机包括:
在Java框架中的ApplicationThread的bindApplication函数内,通过System.loadLibrary函数加载并初始化脱壳机程序。
所述步骤5还包括,在Java层加载脱壳机,启动目标程序,采用JNI方法跳转到Native层,所述JNI指的是JAVA本地调用;
在所述Native层采用C++获取DexFile结构体在内存中的地址,通过遍历DexFileHeader结构体中所有的字段,可获取Dex源文件的所有代码。
作为示例,本方法基于Android最新的运行环境ART(Android Runtime),在程序运行时动态脱壳,采用进程注入方式运行脱壳机。常规ptrace注入方式可以轻易被壳程序识破,因此本方法通过修改内核启动逻辑,达到透明注入的目的,从而避开加壳程序反调试检测。
DexFileHeader结构体中记录了Dex源文件的框架,包含以下映射表:string_ids,type_ids,type_ids,proto_ids,field_ids,method_ids,class_defs。因此,所述步骤3中,循环遍历并加载DexFileHeader结构体中的所有映射的字段包括;string_ids字段,type_ids字段,type_ids字段,proto_ids字段,field_ids字段,method_ids字段和class_defs字段,通过循环遍历DexFileHeader结构体中所有的字段,可获取Dex源文件的所有代码,具体地:
所述string_ids字段检索并获取Dex源文件中所有的字符串数据;
所述type_ids字段检索并获取Dex源文件中所有的数据类型数据;
所述proto_ids字段检索并获取Dex源文件中所有的原型数据;
所述field_ids字段检索并获取Dex源文件中所有的成员变量数据;
所述method_ids字段检索并获取Dex源文件中所有的函数定义;
所述class_defs字段检索并获取Dex源文件中类描述符,然后通过Java层函数Class.forName加载所有的Java类定义。
所述步骤4包括:
创建新的用于放置加载后的字段内存区域,结构解析成DexFile对象,记为DexCopy;
Dex文件中的每一个类通过Java层的Class.forName函数加载,然后返回到Native层修复,对每一个DexFileHeader结构体内的字段,进行修复,并复制到所DexCopy中,从而还原出连续的、可被解析的Dex源文件,最后转存到磁盘中,所述磁盘可以为手机SD卡等。
所述步骤4中,所述修复过程包括:修复魔数、修复字段偏移以及修复错误指令。
上述方法在内核层和应用层的系统架构示意图如图2所示,基于上述方法,以一具体示例进行说明,如图3所示,首先,当Zygote为应用创建内存,完成一系列初始化工作之后,在Java框架中ApplicationThread的bindApplication函数内,通过System.loadLibrary函数加载并初始化脱壳机程序,然后通过JNI调用,在Native层运行C++代码实现的脱壳程序。其中,Zygote是一个虚拟机进程,同时也是一个虚拟机实例的孵化器,每当系统要求执行一个Android应用程序,Zygote就会Fork出一个子进程来执行该应用程序。Zygote进程是在系统启动时产生的,它会完成虚拟机的初始化,库的加载,预置类库的加载和初始化等等操作。
如图4所示,脱壳程序在Native层,获得DexFile结构体后,按照其结构,遍历DexFile头中所有的字段。复制一片内存区域,解析成DexFile对象,记为DexCopy。遍历过程中,Dex文件中的每一个类通过Java层的Class.forName函数加载,然后返回到Native层修复,接着将内存中的数据拷贝到DexCopy,修复字段偏移,错误指令。遍历结束之后,修复DexCopy中魔数、校验码。最后将DexCopy内存中的数据写入到磁盘,完成脱壳。
本发明实施例还提供一种控制器,其包括存储器与处理器,所述存储器存储有计算机程序,所述程序在被所述处理器执行时能够实现所述方法的步骤。
本发明实施例还提供一种计算机可读存储介质,用于存储计算机指令,所述指令在由一计算机或处理器执行时实现所述方法的步骤。
本发明所述方法能够有效地从加壳Android应用程序中提取出目标程序对应的Dex源文件,适用于多种Android应用加固方案,例如阿里、百度、梆梆、爱加密、娜迦、360、腾讯等加固厂商的加固方案,具有通用性,且方法简单有效,便于实施和维护。本发明对于加壳的恶意应用,提供了一种还原其代码,方便进行特征分析的途径,促进安卓加固行业的研究与发展。此外,本发明所述方法通过修改内核启动逻辑,实现透明的进程注入,与现有的内核插桩脱壳方式相比,本发明对内核的修改极少,脱壳机通过进程注入的方式加载,与内核低耦合,因此在对脱壳机进行升级时,不需要重启系统和重新编译内核,只需要替换脱壳机即可,开发效率极高。
以上所述,仅是本发明的较佳实施例而已,并非对本发明作任何形式上的限制,虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明,任何熟悉本专业的技术人员,在不脱离本发明技术方案范围内,当可利用上述揭示的技术内容作出些许更动或修饰为等同变化的等效实施例,但凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化与修饰,均仍属于本发明技术方案的范围内。

Claims (5)

1.一种从加壳Android应用程序中恢复Dex源文件的方法,其特征在于:包括以下步骤:
步骤1、定位目标程序的DexFile结构体在内存中的地址,其中,所述目标程序为待恢复Dex源文件对应的加壳的Android应用程序;
具体步骤包括:在所述目标程序动态运行时,通过进程注入的方式,进入到应用的进程空间,获取环境上下文,在所述进程空间内,定位DexFile结构体在内存中的地址;
还包括:在Native层采用dlopen函数加载libart.so动态库,然后通过dlsym函数获得art::Thread::CurrentFromDbd函数在内存中的地址,并获取当前线程;
所述当前线程对象中的art::JavaVMExt::DecodeGlobal函数将Java对象转换成内核层art::mirror::Class对象;
从所述art::mirror:Class对象中提取dex_cache_变量,所述dex_cache_变量指向整个DexFile结构体,从而定位DexFile结构体在内存中的地址;
步骤2、根据所定位的地址获取目标程序对应的DexFile Header结构体;
步骤3、循环遍历并加载DexFile Header结构体中所有映射的字段;
所述的所有映射的字段包括;string_ids字段,type_ids字段, proto_ids字段,field_ids字段,method_ids字段和class_defs字段,其中,
所述string_ids字段检索并获取Dex源文件中所有的字符串数据;
所述type_ids字段检索并获取Dex源文件中所有的数据类型数据;
所述proto_ids字段检索并获取Dex源文件中所有的原型数据;
所述field_ids字段检索并获取Dex源文件中所有的成员变量数据;
所述method_ids字段检索并获取Dex源文件中所有的函数定义;
所述class_defs字段检索并获取Dex源文件中类描述符,然后通过Java层函数Class.forName加载所有的Java类定义;
步骤4、对所加载的DexFile Header结构体内的字段进行重组和修复,从而从所述目标程序中恢复Dex源文件;具体步骤包括:
创建新的用于放置加载后的字段内存区域,结构解析成DexFile对象,记为DexCopy;
Dex文件中的每一个类通过Java层的Class.forName函数加载,然后返回到Native层修复,对每一个DexFile Header结构体内的字段,进行修复,并复制到所DexCopy中,从而还原出连续的、可被解析的Dex源文件;
所述修复包括:修复魔数、修复字段偏移以及修复错误指令。
2.根据权利要求1所述的从加壳Android应用程序中恢复Dex源文件的方法,其特征在于:
所述方法还包括,步骤5、采用进程注入的方式加载脱壳机,启动目标程序,通过所述脱壳机执行所述步骤1至步骤4。
3.根据权利要求2所述的从加壳Android应用程序中恢复Dex源文件的方法,其特征在于:
所述步骤5还包括,通过修改内核启动逻辑,进行透明的进程注入,从而在Java层加载脱壳机;
启动目标程序,跳转到Native层,通过所述脱壳机执行所述步骤1至步骤4。
4.根据权利要求3所述的从加壳Android应用程序中恢复Dex源文件的方法,其特征在于:
所述步骤5中,所述在Java层加载脱壳机包括:
在Java框架中的ApplicationThread的bindApplication函数内,通过System.loadLibrary函数加载并初始化脱壳机程序。
5.根据权利要求3所述的从加壳Android应用程序中恢复Dex源文件的方法,其特征在于:
所述步骤5还包括,在Java层加载脱壳机,启动目标程序,采用JNI方法跳转到Native层,所述JNI指的是JAVA本地调用;
在所述Native层采用C++获取DexFile结构体在内存中的地址。
CN201810089811.1A 2018-01-30 2018-01-30 从加壳Android应用程序中恢复Dex源文件的方法 Active CN108446186B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810089811.1A CN108446186B (zh) 2018-01-30 2018-01-30 从加壳Android应用程序中恢复Dex源文件的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810089811.1A CN108446186B (zh) 2018-01-30 2018-01-30 从加壳Android应用程序中恢复Dex源文件的方法

Publications (2)

Publication Number Publication Date
CN108446186A CN108446186A (zh) 2018-08-24
CN108446186B true CN108446186B (zh) 2022-05-13

Family

ID=63191189

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810089811.1A Active CN108446186B (zh) 2018-01-30 2018-01-30 从加壳Android应用程序中恢复Dex源文件的方法

Country Status (1)

Country Link
CN (1) CN108446186B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111813641B (zh) * 2020-06-19 2024-05-17 北京字节跳动网络技术有限公司 崩溃信息收集的方法、装置、介质和设备
CN113885885A (zh) * 2021-10-21 2022-01-04 广州链安科技有限公司 基于动态执行多点插桩的安卓安装包批量自动化脱壳平台

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105740708A (zh) * 2016-01-28 2016-07-06 博雅网信(北京)科技有限公司 一种基于Java反射机制的安卓应用自动脱壳方法
CN106022130A (zh) * 2016-05-20 2016-10-12 中国科学院信息工程研究所 加固应用程序的脱壳方法及装置

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6085233A (en) * 1995-12-29 2000-07-04 Pankosmion, Inc. System and method for cellular network computing and communications
KR101832594B1 (ko) * 2016-02-18 2018-02-26 라인 가부시키가이샤 중간 언어 파일의 로딩 속도 개선을 위한 방법 및 시스템
CN106203120B (zh) * 2016-07-15 2019-03-05 北京邮电大学 一种针对Android加固应用的多点Hook逆向方法
CN107392018B (zh) * 2017-06-30 2020-09-15 阿里巴巴集团控股有限公司 应用程序脱壳方法及装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105740708A (zh) * 2016-01-28 2016-07-06 博雅网信(北京)科技有限公司 一种基于Java反射机制的安卓应用自动脱壳方法
CN106022130A (zh) * 2016-05-20 2016-10-12 中国科学院信息工程研究所 加固应用程序的脱壳方法及装置

Also Published As

Publication number Publication date
CN108446186A (zh) 2018-08-24

Similar Documents

Publication Publication Date Title
US11061833B2 (en) Apparatus and method for handling page protection faults in a computing system
TWI696950B (zh) 用於偵測在計算設備上執行的應用軟體的高階功能的方法,及其系統和電腦程式
Ligh et al. The art of memory forensics: detecting malware and threats in windows, linux, and Mac memory
US8479174B2 (en) Method, computer program and computer for analyzing an executable computer file
CN107480476B (zh) 一种基于ELF感染的Android本地层指令编译虚拟化加壳方法
US8458674B2 (en) Method and apparatus for handling exceptions during binding to native code
WO2017067175A1 (zh) 一种加载elf文件的方法、装置、设备和计算机存储介质
RU2628921C1 (ru) Система и способ выполнения антивирусной проверки файла на виртуальной машине
EP3009935B1 (en) System and method of transfer of control between memory locations
JP2012079130A (ja) デバッグ支援プログラム、デバッグ支援装置、及びデバッグ支援方法
US9417988B2 (en) Tracking subclasses of and operations performed by generic objects in a computer system
WO2023178857A1 (zh) 一种面向深度嵌入式系统的函数地址空间布局随机化方法
US10311233B2 (en) Generic unpacking of program binaries
US10261895B2 (en) System and method for transferring execution of a computer program
CN110663082B (zh) 数据处理系统和方法
CN108446186B (zh) 从加壳Android应用程序中恢复Dex源文件的方法
US20140196019A1 (en) Method and Apparatus for Substituting Compiler Built-in Helper Functions with Machine Instructions
Rodríguez et al. A tool to compute approximation matching between windows processes
White Identifying the unknown in user space memory
CN110909347A (zh) 一种基于Mcsema的Remill库栈污染分析方法及装置
Sylve Towards real-time volatile memory forensics: frameworks, methods, and analysis
Stüttgen On the viability of memory forensics in compromised environments
Pridgen Exploiting Generational Garbage Collection: Using Data Remnants to Improve Memory Analysis and Digital Forensics
TW201926033A (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