CN113641426A - 一种安卓端基于源码修改的脱壳查找与实现方法及系统 - Google Patents
一种安卓端基于源码修改的脱壳查找与实现方法及系统 Download PDFInfo
- Publication number
- CN113641426A CN113641426A CN202111008543.4A CN202111008543A CN113641426A CN 113641426 A CN113641426 A CN 113641426A CN 202111008543 A CN202111008543 A CN 202111008543A CN 113641426 A CN113641426 A CN 113641426A
- Authority
- CN
- China
- Prior art keywords
- function
- shelling
- source code
- dex file
- memory
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4488—Object-oriented
- G06F9/449—Object-oriented method invocation or resolution
-
- 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/53—Decompilation; Disassembly
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/74—Reverse engineering; Extracting design information from source code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/75—Structural analysis for program understanding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明提供了一种安卓端基于源码修改的脱壳查找与实现方法,所述方法包括以下步骤:步骤S1、InMemoryDexClassLoader源码用于加载内存中的dex文件,继承自BaseDexClassLoader构造函数;步骤S2、查看BaseDexClassLoader构造函数的dex文件相关信息,构造一个DexPathList实现方法;步骤S3、在DexPathList实现方法中构造出dex文件,并将java语言的buffer属性转换成MemoryMap内存映射;步骤S4、在cookie安卓端数据的创建和转换过程中会出现完整的dex文件,在此过程中在DexFile函数的OpenCommon方法中找到完整dex文件在内存中的起止地址和大小,进行脱壳;本发明能够实现基于DEX动态加载过程中出现完整Dex文件的动态内存脱壳。
Description
技术领域
本发明涉及计算机技术领域,特别是一种安卓端基于源码修改的脱壳查找与实现方法及系统。
背景技术
在安卓端,进行非法应用样本取证分析的时候,往往会遇到样本进行了加固处理,所以带了壳,使得分析人员无法完整得到样本的源码。需要对样本进行脱壳之后才能得到完整的代码。脱壳分为两种方式,脚本脱壳和自编写源码脱壳。
脚本脱壳的话,优点是简单便捷,过程简单;缺点是样本会检测脚本工具,编写的脚本不一定会生效。
自编写源码的话,缺点是过程繁琐,尤其是源码同步编译刷机过程耗时会很长。优点是,编写源码进行脱壳,编写一次就能针对绝大多少加固应用进行代码脱壳,而且由于是在源码上进行脱壳处理,所以不存在有检测会检测到脱壳,隐蔽高效。
发明内容
为克服上述问题,本发明的目的是提供一种能够实现基于DEX动态加载过程中出现完整Dex文件的动态内存脱壳的实现方法。
本发明采用以下方案实现:一种安卓端基于源码修改的脱壳查找与实现方法,所述方法包括以下步骤:
步骤S1、InMemoryDexClassLoader源码用于加载内存中的dex文件,继承自BaseDexClassLoader构造函数;
步骤S2、查看BaseDexClassLoader构造函数的dex文件相关信息,构造一个DexPathList实现方法;
步骤S3、在DexPathList实现方法中构造出dex文件,并将java语言的buffer属性转换成MemoryMap内存映射;
步骤S4、在cookie安卓端数据的创建和转换过程中会出现完整的dex文件,在此过程中在DexFile函数的OpenCommon方法中找到完整dex文件在内存中的起止地址和大小,进行脱壳,从而实现基于DEX动态加载过程中出现完整Dex文件的动态内存脱壳。
进一步的,所述步骤S1进一步具体为:InMemoryDexClassLoader源码继承自BaseDexClassLoader构造函数,用于从安卓端内存中加载dex文件。
进一步的,所述步骤S2进一步具体为:在BaseDexClassLoader构造函数中调用DexPathList实现方法,在DexPathList实现方法中调用makeInMemoryDexElements方法创建Element数组,makeInMemoryDexElements实现方法构造了DexFile函数。
进一步的,所述步骤S3进一步具体为:DexFile函数会调用openInMemoryDexFile函数;openInMemoryDexFile函数中会调用createCookieWithDirectBuffer函数和createCookieWithArray函数,createCookieWithDirectBuffer函数和createCookieWithArray函数会返回CreateSingleDexFileCookie函数;CreateSingleDexFileCookie函数会调用CreateDexFile函数;通过CreateSingleDexFileCookie函数去创建对应的cookie安卓端数据。
进一步的,所述步骤S4进一步具体为:CreateDexFile函数会调用DexFile::Open函数;DexFile::Open函数会调用OpenCommon方法;OpenCommon方法出现Dex文件,并且传入了MemoryMap内存映射,找到完整dex文件在内存中的起止地址和大小,进行脱壳,从而实现基于DEX动态加载过程中出现完整Dex文件的动态内存脱壳。
本发明还提供了一种安卓端基于源码修改的脱壳查找与实现系统,包括加载模块、查看模块、转换模块和脱壳模块,所述加载模块,即InMemoryDexClassLoader源码用于加载内存中的dex文件,继承自BaseDexClassLoader构造函数;所述查看模块,即查看BaseDexClassLoader构造函数的dex文件相关信息,构造一个DexPathList实现方法;所述转换模块,即在DexPathList实现方法中构造出dex文件,并将java语言的buffer属性转换成MemoryMap内存映射;所述脱壳模块,即在cookie安卓端数据的创建和转换过程中会出现完整的dex文件,在此过程中在DexFile函数的OpenCommon方法中找到完整dex文件在内存中的起止地址和大小,进行脱壳,从而实现基于DEX动态加载过程中出现完整Dex文件的动态内存脱壳。
进一步的,所述加载模块进一步具体为:InMemoryDexClassLoader源码继承自BaseDexClassLoader构造函数,用于从安卓端内存中加载dex文件。
进一步的,所述查看模块进一步具体为:在BaseDexClassLoader构造函数中调用DexPathList实现方法,在DexPathList实现方法中调用makeInMemoryDexElements方法创建Element数组,makeInMemoryDexElements实现方法构造了DexFile函数。
进一步的,所述转换模块进一步具体为:所述步骤S3进一步具体为:DexFile函数会调用openInMemoryDexFile函数;openInMemoryDexFile函数中会调用createCookieWithDirectBuffer函数和createCookieWithArray函数,createCookieWithDirectBuffer函数和createCookieWithArray函数会返回CreateSingleDexFileCookie函数;CreateSingleDexFileCookie函数会调用CreateDexFile函数;通过CreateSingleDexFileCookie函数去创建对应的cookie安卓端数据。
进一步的,所述脱壳模块进一步具体为:所述步骤S4进一步具体为:CreateDexFile函数会调用DexFile::Open函数;DexFile::Open函数会调用OpenCommon方法;OpenCommon方法出现Dex文件,并且传入了MemoryMap内存映射,找到完整dex文件在内存中的起止地址和大小,进行脱壳,从而实现基于DEX动态加载过程中出现完整Dex文件的动态内存脱壳。
本发明的有益效果在于:本发明能够完美实现绝大部分加固应用的脱壳处理,并且脱壳拿到的Dex文件很完整,便于逆向分析人员的进一步分析。而且可以完美避开加固应用对反调试、防止内存dump这些措施,站在一个新高度对这些应用降维打击;从技术上来说,脱壳点的查找方法适用于现在安卓的全部版本,同样是适用于未来的安卓版本,所以说实现了安卓端的版本的兼容性;而且脱壳方法是从源码编写角度出发,相当于是从安卓系统人员开发角度而不是从逆向分析人员的角度出发,从逆向开发转变成正向开发;而且使用我脱壳方法制作的脱壳系统,具有通用性,就是说对所有加固应用都适用,而且不需要额外编写脱壳脚本。
附图说明
图1是本发明的方法流程示意图。
图2是本发明的系统原理框图。
具体实施方式
下面结合附图对本发明做进一步说明。
请参阅图1所示,本发明的一种安卓端基于源码修改的脱壳查找与实现方法,所述方法包括以下步骤:
步骤S1、InMemoryDexClassLoader源码用于加载内存中的dex文件,继承自BaseDexClassLoader构造函数;
步骤S2、查看BaseDexClassLoader构造函数的dex文件相关信息,构造一个DexPathList实现方法;
步骤S3、在DexPathList实现方法中构造出dex文件,并将java语言的buffer属性转换成MemoryMap内存映射;
步骤S4、在cookie安卓端数据的创建和转换过程中会出现完整的dex文件,在此过程中在DexFile函数的OpenCommon方法中找到完整dex文件在内存中的起止地址和大小,进行脱壳,从而实现基于DEX动态加载过程中出现完整Dex文件的动态内存脱壳。
下面通过一具体实施例对本发明作进一步说明:
本方法的核心是基于DEX动态加载过程中出现完整Dex文件的动态内存脱壳。所以需要将整个dex动态加载过程理清,找出这个过程能够完整出现dex文件的地方,将这些地方作为脱壳点来进行脱壳。对于8.0以后的dex动态加载,新增了InMemoryDexClassLoader源码这种类加载器。意思就是从内存中加载dex文件。它是BaseDexClassLoader函数的子类,从构造函数来看,它确实是用来加载内存中的dex文件的。然后可以从他的父类也就是BaseDexClassLoader的构造函数入手,这个类的构造函数直接用ByteBuffer数组构造了一个DexPathList实现方法,就是说这个类的构造函数中会出现和dex文件相关信息。DexPathList实现方法的构造函数中,调用了makeInMemoryDexElements方法去创建Element数组,然后makeInMemoryDexElements直接构造了DexFile函数,而在DexFile的构造函数中,调用了createCookieWithArray方法,走到了native层。在该方法中,将java语言的buffer属性转成了native层的一个MemoryMap内存映射,并且通过CreateSingleDexFileCookie函数去创建对应的cookie安卓端数据。这个方法里调用了CreateDexFile去创建一个DexFile函数,并且调用ConvertDexFilesToJavaArray将其转换成java层需要的cookie安卓端数据。在该方法中,调用了DexFile函数的Open方法,并且传入了MemoryMap内存映射。Open方法里调用了OpenCommon方法,最终会调用DexFile的构造函数。
具体说明:InMemoryDexClassLoader源码继承自BaseDexClassLoader函数,所以查看BaseDexClassLoader构造函数。里面出现this.pathList=new DexPathList(this,librarySearchPath)。查看DexPathList()这个函数的实现方法。然后对于DexPathListDexPathList()这个函数的实现代码,里面出现this.dexElements=makeInMemoryDexElements(dexFiles,suppressedExceptions)方法,这里包含Dex文件,所以查看makeInMemoryDexElements()这个函数的实现方法实现源码。在makeInMemoryDexElements方法中出现DexFile dex=new DexFile(buf)这个代码。明确了Dex文件的初始化,所以查看DexFile函数,然后DexFile函数会调用openInMemoryDexFile函数,具体为:DexFile(ByteBuffer buf)throws IOException{mCookie=openInMemoryDexFile(buf)...},然后openInMemoryDexFile中会调用createCookieWithDirectBuffer函数和createCookieWithArray函数,具体例调用为:private static Object openInMemoryDexFile(ByteBuffer buf)throws IOException{if(buf.isDirect()){return createCookieWithDirectBuffer(buf,buf.position(),buf.limit());}else{return createCookieWithArray(buf.array(),buf.position(),buf.limit());}},两个函数都在JNI层,虽然函数名不同,但是两个函数都会共同返回CreateSingleDexFileCookie函数。CreateSingleDexFileCookie函数中会调用CreateDexFile函数。具体调用为:static jobject CreateSingleDexFileCookie(JNIEnv*env,std::unique_ptr<MemMap>data){std::unique_ptr<const DexFile>dex_file(CreateDexFile(env,std::move(data)));...}。进入CreateDexFile函数,他会调用DexFile::Open函数,具体调用为:static const DexFile*CreateDexFile(JNIEnv*env,std::unique_ptr<MemMap>dex_mem_map){...std::unique_ptr<const DexFile>dex_file(DexFile::Open(location,0,std::move(dex_mem_map),/*verify*/true,/*verify_location*/true,&error_message));...}进入DexFile::Open函数,发现有个函数方法会明确出现Dex文件的起始地址和大小。函数为:std::unique_ptr<DexFile>dex_file=OpenCommonmap->begin(),map->Size(),location,location_checksum,kNoOatDexFile,verify,verify_checksum,error_msg);
所以这个函数是个很好的脱壳点,因为这个流程出现的所有函数在加载APK的时候都会被调用。所以只需要在这个里面添加脱壳方法,然后编译源码,将得到的ROM刷到手机上。
脱壳方法:
在APK启动的时候,当OpenCommon函数被调用的时候,根据拿到的Dex文件的起始地址和文件大小,使用系统的open函数和write函数将dex文件写到手机sdcard目录下。
对于某个应用,使用了加固措施。使用反编译软件打开之后看到的是壳的源代码。想要分析它的源代码而不是壳的源代码。使用frida(hook框架)进行脚本脱壳,编写完脚本运行的时候发现这个加固应用存在frida的反调试措施。所以还需要额外写个脚本过掉frida的反调试措施,这个时候就显得很麻烦了。所以直接使用添加了脱壳代码Rom的手机安装运行APK,然后将在sdcard目录下脱壳成功的dex文件从手机中拷贝到电脑上,使用反编译软件打开,然后就可以得到这个APK的完整源码了。然后,刷了这个脱壳源代码Rom的手机还能脱其他的加固应用的壳,不需要额外写脱壳脚本。
本发明适用于所有安卓端所有加固应用脱壳。
源码版本选定:8.0.原因:
考虑源码版本、源码同步到本地和源码编译速率。对于安卓和安卓10、11来说。源码比安卓8来说大了不少,特别是11,同步到本地500G左右,而且考虑到国内网络情况,9.0版本一下的源码是最好的选择。然后考虑到现在的安卓已经进入几年的ART虚拟机时代了,所以5.0以下的不考虑。再者5.0和6.0版本过老,所以也不考虑。最后是7.0,安卓7.0的源码编译环境比8.0的源码编译环境严苛很多,在编译的时候会报很多莫名其妙的错误。所以最后选择8.0.
脱壳点查找方案:
android 8.0以后首次引入InMemoryDexClassLoader(一种从内存中之界加载类的模式),而且InMemoryDexClassLoader过程并不会生成oat文件。所以就算加固产品禁止dex2oat流程,也会走InMemoryDexClassLoader,而且流程中出现的dex文件的起始地址和大小都是可以dump的,也就是说可以从内存中将完整的dex动态脱壳得到。
请参阅图2所示,本发明还提供了一种安卓端基于源码修改的脱壳查找与实现系统,包括加载模块、查看模块、转换模块和脱壳模块,所述加载模块,即InMemoryDexClassLoader源码用于加载内存中的dex文件,继承自BaseDexClassLoader构造函数;所述查看模块,即查看BaseDexClassLoader构造函数的dex文件相关信息,构造一个DexPathList实现方法;所述转换模块,即在DexPathList实现方法中构造出dex文件,并将java语言的buffer属性转换成MemoryMap内存映射;所述脱壳模块,即在cookie安卓端数据的创建和转换过程中会出现完整的dex文件,在此过程中在DexFile函数的OpenCommon方法中找到完整dex文件在内存中的起止地址和大小,进行脱壳,从而实现基于DEX动态加载过程中出现完整Dex文件的动态内存脱壳。
所述加载模块进一步具体为:InMemoryDexClassLoader源码继承自BaseDexClassLoader构造函数,用于从安卓端内存中加载dex文件。
所述查看模块进一步具体为:在BaseDexClassLoader构造函数中调用DexPathList实现方法,在DexPathList实现方法中调用makeInMemoryDexElements方法创建Element数组,makeInMemoryDexElements实现方法构造了DexFile函数。
所述转换模块进一步具体为:所述步骤S3进一步具体为:DexFile函数会调用openInMemoryDexFile函数;openInMemoryDexFile函数中会调用createCookieWithDirectBuffer函数和createCookieWithArray函数,createCookieWithDirectBuffer函数和createCookieWithArray函数会返回CreateSingleDexFileCookie函数;CreateSingleDexFileCookie函数会调用CreateDexFile函数;通过CreateSingleDexFileCookie函数去创建对应的cookie安卓端数据。
所述脱壳模块进一步具体为:所述步骤S4进一步具体为:CreateDexFile函数会调用DexFile::Open函数;DexFile::Open函数会调用OpenCommon方法;OpenCommon方法出现Dex文件,并且传入了MemoryMap内存映射,找到完整dex文件在内存中的起止地址和大小,进行脱壳,从而实现基于DEX动态加载过程中出现完整Dex文件的动态内存脱壳。
以上所述仅为本发明的较佳实施例,凡依本发明申请专利范围所做的均等变化与修饰,皆应属本发明的涵盖范围。
Claims (10)
1.一种安卓端基于源码修改的脱壳查找与实现方法,其特征在于,所述方法包括以下步骤:
步骤S1、InMemoryDexClassLoader源码用于加载内存中的dex文件,继承自BaseDexClassLoader构造函数;
步骤S2、查看BaseDexClassLoader构造函数的dex文件相关信息,构造一个DexPathList实现方法;
步骤S3、在DexPathList实现方法中构造出dex文件,并将java语言的buffer属性转换成MemoryMap内存映射;
步骤S4、在cookie安卓端数据的创建和转换过程中会出现完整的dex文件,在此过程中在DexFile函数的OpenCommon方法中找到完整dex文件在内存中的起止地址和大小,进行脱壳,从而实现基于DEX动态加载过程中出现完整Dex文件的动态内存脱壳。
2.根据权利要求1所述的一种安卓端基于源码修改的脱壳查找与实现方法,其特征在于:所述步骤S1进一步具体为:InMemoryDexClassLoader源码继承自BaseDexClassLoader构造函数,用于从安卓端内存中加载dex文件。
3.根据权利要求1所述的一种安卓端基于源码修改的脱壳查找与实现方法,其特征在于:所述步骤S2进一步具体为:在BaseDexClassLoader构造函数中调用DexPathList实现方法,在DexPathList实现方法中调用makeInMemoryDexElements方法创建Element数组,makeInMemoryDexElements实现方法构造了DexFile函数。
4.根据权利要求1所述的一种安卓端基于源码修改的脱壳查找与实现方法,其特征在于:所述步骤S3进一步具体为:DexFile函数会调用openInMemoryDexFile函数;openInMemoryDexFile函数中会调用createCookieWithDirectBuffer函数和createCookieWithArray函数,createCookieWithDirectBuffer函数和createCookieWithArray函数会返回CreateSingleDexFileCookie函数;CreateSingleDexFileCookie函数会调用CreateDexFile函数;通过CreateSingleDexFileCookie函数去创建对应的cookie安卓端数据。
5.根据权利要求1所述的一种安卓端基于源码修改的脱壳查找与实现方法,其特征在于:所述步骤S4进一步具体为:CreateDexFile函数会调用DexFile::Open函数;DexFile::Open函数会调用OpenCommon方法;OpenCommon方法出现Dex文件,并且传入了MemoryMap内存映射,找到完整dex文件在内存中的起止地址和大小,进行脱壳,从而实现基于DEX动态加载过程中出现完整Dex文件的动态内存脱壳。
6.一种安卓端基于源码修改的脱壳查找与实现系统,其特征在于:包括加载模块、查看模块、转换模块和脱壳模块,所述加载模块,即InMemoryDexClassLoader源码用于加载内存中的dex文件,继承自BaseDexClassLoader构造函数;所述查看模块,即查看BaseDexClassLoader构造函数的dex文件相关信息,构造一个DexPathList实现方法;所述转换模块,即在DexPathList实现方法中构造出dex文件,并将java语言的buffer属性转换成MemoryMap内存映射;所述脱壳模块,即在cookie安卓端数据的创建和转换过程中会出现完整的dex文件,在此过程中在DexFile函数的OpenCommon方法中找到完整dex文件在内存中的起止地址和大小,进行脱壳,从而实现基于DEX动态加载过程中出现完整Dex文件的动态内存脱壳。
7.根据权利要求6所述的一种安卓端基于源码修改的脱壳查找与实现系统,其特征在于:所述加载模块进一步具体为:InMemoryDexClassLoader源码继承自BaseDexClassLoader构造函数,用于从安卓端内存中加载dex文件。
8.根据权利要求6所述的一种安卓端基于源码修改的脱壳查找与实现系统,其特征在于:所述查看模块进一步具体为:在BaseDexClassLoader构造函数中调用DexPathList实现方法,在DexPathList实现方法中调用makeInMemoryDexElements方法创建Element数组,makeInMemoryDexElements实现方法构造了DexFile函数。
9.根据权利要求6所述的一种安卓端基于源码修改的脱壳查找与实现系统,其特征在于:所述转换模块进一步具体为:所述步骤S3进一步具体为:DexFile函数会调用openInMemoryDexFile函数;openInMemoryDexFile函数中会调用createCookieWithDirectBuffer函数和createCookieWithArray函数,createCookieWithDirectBuffer函数和createCookieWithArray函数会返回CreateSingleDexFileCookie函数;CreateSingleDexFileCookie函数会调用CreateDexFile函数;通过CreateSingleDexFileCookie函数去创建对应的cookie安卓端数据。
10.根据权利要求6所述的一种安卓端基于源码修改的脱壳查找与实现系统,其特征在于:所述脱壳模块进一步具体为:所述步骤S4进一步具体为:CreateDexFile函数会调用DexFile::Open函数;DexFile::Open函数会调用OpenCommon方法;OpenCommon方法出现Dex文件,并且传入了MemoryMap内存映射,找到完整dex文件在内存中的起止地址和大小,进行脱壳,从而实现基于DEX动态加载过程中出现完整Dex文件的动态内存脱壳。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111008543.4A CN113641426A (zh) | 2021-08-31 | 2021-08-31 | 一种安卓端基于源码修改的脱壳查找与实现方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111008543.4A CN113641426A (zh) | 2021-08-31 | 2021-08-31 | 一种安卓端基于源码修改的脱壳查找与实现方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113641426A true CN113641426A (zh) | 2021-11-12 |
Family
ID=78424611
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111008543.4A Pending CN113641426A (zh) | 2021-08-31 | 2021-08-31 | 一种安卓端基于源码修改的脱壳查找与实现方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113641426A (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105574411A (zh) * | 2015-12-25 | 2016-05-11 | 北京奇虎科技有限公司 | 一种动态脱壳方法、装置和设备 |
WO2016078130A1 (zh) * | 2014-11-18 | 2016-05-26 | 刘鹏 | 一种防逆向apk文件的动态加载方法 |
CN106203120A (zh) * | 2016-07-15 | 2016-12-07 | 北京邮电大学 | 一种针对Android加固应用的多点Hook逆向方法 |
CN106648755A (zh) * | 2016-11-29 | 2017-05-10 | 北京奇虎科技有限公司 | 一种在安卓art环境中动态加载dex的方法及装置 |
CN112948819A (zh) * | 2019-12-10 | 2021-06-11 | 中国电信股份有限公司 | 应用文件脱壳方法和装置、计算机可读存储介质 |
-
2021
- 2021-08-31 CN CN202111008543.4A patent/CN113641426A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016078130A1 (zh) * | 2014-11-18 | 2016-05-26 | 刘鹏 | 一种防逆向apk文件的动态加载方法 |
CN105574411A (zh) * | 2015-12-25 | 2016-05-11 | 北京奇虎科技有限公司 | 一种动态脱壳方法、装置和设备 |
CN106203120A (zh) * | 2016-07-15 | 2016-12-07 | 北京邮电大学 | 一种针对Android加固应用的多点Hook逆向方法 |
CN106648755A (zh) * | 2016-11-29 | 2017-05-10 | 北京奇虎科技有限公司 | 一种在安卓art环境中动态加载dex的方法及装置 |
CN112948819A (zh) * | 2019-12-10 | 2021-06-11 | 中国电信股份有限公司 | 应用文件脱壳方法和装置、计算机可读存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109976761B (zh) | 软件开发工具包的生成方法、装置及终端设备 | |
CN108027722B (zh) | 在编译和部署中动态更新应用 | |
US10146522B1 (en) | Live code updates | |
CN102402427B (zh) | 一种Java应用程序的更新方法及装置 | |
CN107291480B (zh) | 一种函数调用方法及装置 | |
CN107171825B (zh) | 一种终端的重复日志过滤方法 | |
CN108229148B (zh) | 一种基于Android虚拟机的沙箱脱壳方法及系统 | |
JPH0836488A (ja) | ダイナミック・パッチングを使用するランタイム・エラー・チェック方法と装置 | |
US10191753B2 (en) | Generating verification metadata and verifying a runtime type based on verification metadata | |
CN111740948B (zh) | 数据包发布方法、动态更新方法、装置、设备及介质 | |
US7966600B2 (en) | Distributed resource understanding tool management | |
CN112506492B (zh) | 一种支持动态场景配置的可视化埋点方法 | |
US20070180433A1 (en) | Method to enable accurate application packaging and deployment with optimized disk space usage | |
US6513153B1 (en) | Automatically integrating and executing application software modules | |
CN112230988A (zh) | 接口文档的生成方法、装置、计算机设备和存储介质 | |
US20080141219A1 (en) | Multiple inheritance facility for java script language | |
CN110554998A (zh) | 一种通过替换函数内部指令的钩子方法、装置、终端及存储介质 | |
CN111596970B (zh) | 动态库延迟加载方法、装置、设备和存储介质 | |
CN113641426A (zh) | 一种安卓端基于源码修改的脱壳查找与实现方法及系统 | |
US9058184B2 (en) | Run time generation and functionality validation of device drivers | |
CN113688031B (zh) | 一种基于字节码增强技术的测试定位方法 | |
CN113568603B (zh) | 组件对象创建及接口方法调用方法、终端及存储装置 | |
CN113590179B (zh) | 插件检测方法、装置、电子设备及存储介质 | |
CN115220873A (zh) | 一种在Android系统中运行Open Harmony应用的方法 | |
US20110321009A1 (en) | Implementing encryption via aspect oriented programming |
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 |