人工客服

获取报价

获取资料

方案定制

项目合作

售后服务

咨询热线

400-608-6677 转810
返回顶部

您的位置:首页 - 无人机反制

分享一种Andorid资源加载技术

2019-03-25 2310 神州明达-小明

申明,本着技术交流,不喜勿喷
 
此技术可用于App资源加密,资源动态加载,比如so加密替换、jar包替换、res文件替换、dex文件替换。Apk自身权限内所有文件都可通过此技术替换(系统访问部份除外)。
 
App本质是一个zip压缩包。
 
Android App中资源大概分为 dex、assert目录、res目录、values目录、lib目录、以及其它自定义目录,如下图:

 
程序访问asserts目录时通过AssetManager访问,多数通过java类访问。
 
Apk本质是一个zip压缩包,有的程序也可以通过Fopen/open直接读取apk(比如某狗music)。
 
这里以Android 4.4.4源码分析为例:
 
我们简单看一看Android中resource对象加载资源方式。
 

 
AssetManger.open调用openAsset
 

 
打开4.4.4_r1\frameworks\base\core\jni\android_util_AssetManager.cpp

根据系统源码openAsset实现在android_content_AssetManager_openAsset
 

 
Android-4.4.4_r1\frameworks\base\libs\androidfw\AssetManager.cpp

openAsset调用AssetManger->open方法
 

 
Assetmanger->open调用openNonAssetInPathLocked

openNonAssetInPathLocked调用openAssetFromZipLocked
 
调用openNonAssetInPathLocked,主要功能获取操作apk的pzip对象,通过
 

得到ZipFileRO,简单看下ZipFileRo 成员方法open直接调用libc中的open
 
/frameworks/base/libs/androidfw/ZipFileRO.cpp

 
总结:
 
这里简单的分析了部份Android资源加载过程,既然知道加载过程,就可以在文件操作上下功夫。例如hook libc中的native相关函数,在其中做加解密过虑操作,就能实现资源加密替换的功能。许多加固厂商会对文件做加密操作,或者对文件做保护,也是通过类似原理。
 
上文中还提到,系统在加载资源的过程中会调用很多函数,从java层到native层,整个过程每个环节都能做加解密。
 
注:此技术可对apk中apk本身所操作所有文件做加解密,不能加密系统访问的文件。

喜欢
分享
咨询

评论

全部评论0

神州明达- 为您的信息安全负责
  • 24小时发货

  • 7天退换货

  • 1年保修期

  • 免费提供方案

填写信息,获取定制方案

友情链接: 手机信号屏蔽柜
  • 400-608-6677 转810    
  • 北京市密云区古北口镇古御路外街11号
  • postmaster@szmid.com
  • 投诉电话:4006086677转700

北京神州明达高科技有限公司 备案号:京ICP备12008205号-5    技术支持:神州明达

.
0.065697s