专栏名称: 吾爱破解论坛
吾爱破解论坛致力于软件安全与病毒分析的前沿,丰富的技术版块交相辉映,由无数热衷于软件加密解密及反病毒爱好者共同维护,留给世界一抹值得百年回眸的惊艳,沉淀百年来计算机应用之精华与优雅,任岁月流转,低调而奢华的技术交流与探索却
目录
相关文章推荐
题材挖掘君  ·  光伏,标的公司大梳理(重点公司名单跟踪好) ·  22 小时前  
题材挖掘君  ·  光伏,标的公司大梳理(重点公司名单跟踪好) ·  22 小时前  
中国半导体论坛  ·  刚刚!华为突破! ·  昨天  
中国半导体论坛  ·  刚刚!华为突破! ·  昨天  
盘前一哥  ·  新目标,现在干! ·  5 天前  
盘前一哥  ·  新目标,现在干! ·  5 天前  
51好读  ›  专栏  ›  吾爱破解论坛

【Android 原创】android动态加载dex支持art

吾爱破解论坛  · 公众号  · 互联网安全  · 2017-03-17 15:33

正文

前提
首先思路参考了MultiDex,代码参考了某某早期加固。

总览


Davlikvm

Davlik 内存加载技术比较成熟,网上资料也比较多 
采用最简单的方法: 
实现下面这个系统方法:具体代码就不贴出来了


Dalvik_dalvik_system_DexFile_openDexFile_bytearray(const u4* args,JValue* pResult)


在这个过程中需要注意如何拿到gDvm.userDexFiles这个指针 :
解决方法:


void dvmInternalNativeShutdown()

{

    dvmHashTableFree(gDvm.userDexFiles);

}


Hook dvmHashTableFree方法然后调用dvmInternalNativeShutdown方法,通过dvmHashTableFree参数拿到指针(方法来自看雪论坛)通过这种方法可以实现简单的内存加载和对dex加密,具体实现方法可以参考代码
Art

art 内存加载技术网上资料不多,也没实现完整的。思路参考某某加固的早期代码。这样兼容性可能好一点。 
首先是通过反射调用DexFiel.loadDex方法


static public DexFile loadDex(String sourcePathName, String outputPathName,

        int flags) throws IOException


在调用loadDex之前hook下面这些方法


Hook::hookMethod(arthandle, "open", (void*)artmyopen, (void**)(&artoldopen));

    Hook::hookMethod(arthandle, "read", (void*)artmyread, (void**)(&artoldread));

    Hook::hookMethod(arthandle, "munmap", (void*)artmymunmap, (void**)(&artoldmunmap));

    Hook::hookMethod(arthandle, "mmap", (void*)artmymmap, (void**)(&artoldmmap));

    Hook::hookMethod(arthandle, "fstat", (void*)artmyfstat, (void**)(&artoldfstat));

    Hook::hookMethod(arthandle, "fork", (void*)artmyfork, (void**)(&artoldfork));

    Hook::hookMethod(arthandle, "execv", (void*)artmyexecv, (void**)(&artoldexecv));


在文件读取过程中做一些小动作,就可以实现dex文件简单的加密。这样也可以实现dex"不落地加载"。可能这种方法不太完美,但是相对来说可能稳定一点。兼容性也相对好一点。

使用方法:
目前集成工具暂时没做好。

demo:
给出一个测试demo:http://pan.baidu.com/s/1bpmtsUN
有任何问题可以私信我。也可以在github上提交崩溃日志

小结:
上面描述比较简单。整个过程还是比较复杂的,并且涉及到art dex2oat,代码有一定的参考价值。
工作量也是蛮大的。测试了4.4 、6.0、7.1 系统,其他机型没测试 
代码稍后整理将会开源:https://github.com/xiaobaiyey/dexload


--官方论坛

www.52pojie.cn

--推荐给朋友

公众微信号:吾爱破解论坛

或搜微信号:pojie_52

推荐文章
中国半导体论坛  ·  刚刚!华为突破!
昨天
中国半导体论坛  ·  刚刚!华为突破!
昨天
盘前一哥  ·  新目标,现在干!
5 天前
盘前一哥  ·  新目标,现在干!
5 天前
248游戏  ·  【推荐】你擅长勾心斗角吗?
7 年前
21世纪经济报道  ·  【夜读】穷人思维就是把钱看得太重
7 年前
深圳国家基因库  ·  甜咸党都看过来,粽子基因组“露馅儿”啦
7 年前