首页
论坛
课程
招聘
[原创]Android第二代加固(support 4.4-8.1)
2018-3-20 09:05 11738

[原创]Android第二代加固(support 4.4-8.1)

2018-3-20 09:05
11738

介绍

代码放在github上:https://github.com/woxihuannisja/Bangcle
第二代加固使用的是内存动态加载Dex,也就是不落地加载,可以将Dex加密放在Apk中,在内存中实现解密

兼容性

测试可以支持Andorid 4.4-8.1版本,目前还不能支持重写了Application类 的Apk

原理

Dalvik下的动态加载方法使用的是我这篇文章的方案 https://bbs.pediy.com/thread-215078.htm,
Art 下提供了2种方案,
方案一是 call libart下的OpenMemory函数,如何将java的mCookie和c层的cookie联系起来是一个难点,
方案二是 使用elf Hook来实现 ,由于在Nougat+上dlsym openMemory失败,还有dex_location和dex_cache_location的路径检查,使用方案一有些问题。

最后

Android二代加固尽管脱壳不是很难,但是这种技术还是一些加固厂商的基础,很多在这基础上添加保护so,以及类抽取等等功能。


[注意] 招人!base上海,课程运营、市场多个坑位等你投递!

最后于 2018-3-20 09:07 被寒号鸟二代编辑 ,原因:
收藏
点赞1
打赏
分享
最新回复 (18)
雪    币: 3476
活跃值: 活跃值 (233)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
不知世事 活跃值 1 2018-3-20 09:14
2
0
感谢楼主分享
雪    币: 33
活跃值: 活跃值 (271)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
繁华皆成空 活跃值 2018-3-20 09:42
3
0
看了下像是乐固的方案
雪    币: 233
活跃值: 活跃值 (577)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
寒号鸟二代 活跃值 3 2018-3-20 09:48
4
0
繁华皆成空 [em_13]看了下像是乐固的方案
方案二是参考的乐固,方案一好像是最快的方案
雪    币: 333
活跃值: 活跃值 (168)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
Rprop 活跃值 2018-3-20 23:43
5
0
内存加载,  8开始有InMemoryDexClassLoader可用;  如果采用HOOK方案,  可以考虑更底层的函数;  至于方案一的cookie联系,  可以考虑加载虚dex然后替换成真实的cookie返回
雪    币: 3491
活跃值: 活跃值 (482)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
smartdon 活跃值 1 2018-3-22 09:18
6
0
感谢楼主分享
雪    币: 102
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
猥琐菜鸟 活跃值 2018-3-22 11:07
7
0
楼主在吗?  你的代码编译通过不了?
雪    币: 233
活跃值: 活跃值 (577)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
寒号鸟二代 活跃值 3 2018-3-22 11:59
8
0
猥琐菜鸟 楼主在吗? 你的代码编译通过不了?
我用的ndk-r14b  编译的
雪    币: 102
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
猥琐菜鸟 活跃值 2018-3-23 16:47
9
0
4.4.2  系统会奔溃,能请教楼主吗?
雪    币: 114
活跃值: 活跃值 (103)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
lpcdma 活跃值 2018-3-23 17:56
10
0
       if(!g_isArt){
               jint  mCookie=mem_loadDex_dvm(env,(char*)szDexPath);
               LOGD("[+]Dalvik  dex  cookie  :0x%x",  mCookie);
               cookie_field  =  env->GetFieldID(DexFileClass,  "mCookie",  "I");
               //replace  cookie
               env->SetIntField(mini_dex_obj,  cookie_field,  mCookie);
               make_dex_elements(env,  classLoader,  mini_dex_obj);
       }
添加make_dex_elements(env,  classLoader,  mini_dex_obj);
elements4.x忘了设置,这样dex当与没加载
雪    币: 102
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
猥琐菜鸟 活跃值 2018-3-23 18:39
11
0
lpcdma if(!g_isArt){ jint mCookie=mem_loadDex_dvm(env,(char*)szDexPath); LOGD("[+]Dalvik dex co ...
谢谢大神,学习ing
雪    币: 2
活跃值: 活跃值 (340)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
saliey 活跃值 2018-3-24 11:13
12
0
还不支持重写了  Application  类的  apk,怎样能支持
雪    币: 6817
活跃值: 活跃值 (153)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
聖blue 活跃值 2018-4-1 22:33
13
0
雪    币: 70
活跃值: 活跃值 (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
yaneng 活跃值 2018-4-13 23:42
14
0
rrrfff 内存加载, 8开始有InMemoryDexClassLoader可用; 如果采用HOOK方案, 可以考虑更底层的函数; 至于方案一的cookie联系, 可以考虑加载虚dex然后替换成真实的cookie ...
兄台说的好像是数字加固方案
雪    币: 70
活跃值: 活跃值 (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
yaneng 活跃值 2018-4-16 16:32
15
0
水一贴,楼主么么哒
最后于 2018-4-16 16:36 被yaneng编辑 ,原因:
雪    币: 1115
活跃值: 活跃值 (195)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
fcguo 活跃值 2018-7-6 11:41
16
0
感谢楼主分享,显示已编译结束,一直处在Building resources中,等了好久了,还没有结束,不知是什么原因。
雪    币: 2645
活跃值: 活跃值 (384)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
Adench 活跃值 2019-2-15 10:45
17
0
针对于多个dex文件的加固,楼主是否比较好的方法
雪    币: 619
活跃值: 活跃值 (474)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
xiongcc 活跃值 2020-4-10 00:15
18
0
模拟dlopen和dlsym的逻辑,绕过了系统将阻止应用动态链接非公开 NDK库的限制。参考:https://tech.meituan.com/2017/07/20/android-remote-debug.html
雪    币: 146
活跃值: 活跃值 (263)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
学编程 活跃值 1 2020-7-23 14:41
19
0
嗯,看源码dalvik,那个mini_dex_obj没有初始化,为null.
游客
登录 | 注册 方可回帖
返回