首页
论坛
课程
招聘
[原创]阿里早期加固代码还原4.4-6.0
2017-1-6 22:59 17453

[原创]阿里早期加固代码还原4.4-6.0

2017-1-6 22:59
17453
分析的样本是alictf2014 EvilAPK第三题,网上的脱壳方法都是在mmap等函数下断点dump解密的dex,但是不懂原理,想知道加固的原理,不然下次一改还是不会。
  用jeb打开apk就是一个StubApplication的空壳,核心方法还是在onCreate和attachBaseContext方法里面,只需要将这2个方法逆向就可以知道加固的原理,通过分析,加固核心点还是动态加载dex,首先用RC4解密算法解密asset目录下的cls.jar还原出真正的dex,然后用mmap将dex映射内存,使用openDexFile加载dex,就会得到cookie,然后用这个cookie设置Application类中的某些成员。
  开始提供的代码只适用于android5.0以下,2014年的样本在android5+跑不起来,这次再接再厉,在android4.4-6.0平台加固可以实现通杀,7.0还没测试,不知道现在厂商用的是什么加固方法,希望给学逆向的同学一些帮助。  

  附件提供了还原libmobisec.so的C语言代码,解密后dump出来的dex,并且可以用自己写的StubApplication通过jni来动态加载这个dex由于代码没有对dex中的资源做处理,生成的apk需要将除了StupAppliation的类去掉,并且public.xml中的内容要和dump.dex中的public.xml对应

第五届安全开发者峰会(SDC 2021)议题征集正式开启!

上传的附件:
收藏
点赞1
打赏
分享
最新回复 (43)
雪    币: 6952
活跃值: 活跃值 (498)
能力值: ( LV7,RANK:110 )
在线值:
发帖
回帖
粉丝
jltxgcy 活跃值 2 2017-1-7 08:59
2
0
很不错,最近也逆向了这个,不过没有写成代码,楼主真是太棒了,写成代码了。楼主也可以看下近期阿里的壳子,原理都一样,只不过内部符号都去掉了,而且加了混淆,就很难分析明白了,我现在还卡在这里。
雪    币: 196
活跃值: 活跃值 (37)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
qqsunqiang 活跃值 2017-1-8 21:34
3
0
谢谢楼主的分享。mark。
雪    币: 34948
活跃值: 活跃值 (152618)
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
linhanshi 活跃值 2017-1-8 22:20
4
0
support!
雪    币: 64
活跃值: 活跃值 (56)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
AqCxBoM 活跃值 2017-1-9 00:28
5
0
厉害了我的哥,有兴趣一起研究新技术吗
雪    币: 1702
活跃值: 活跃值 (607)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
lynnux 活跃值 2017-1-9 09:22
6
0
厉害了word,能分享出来就是好样的!
雪    币: 22
活跃值: 活跃值 (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
backerchen 活跃值 2017-1-9 09:27
7
0
支持!支持!
雪    币: 216
活跃值: 活跃值 (38)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
SANCDAYE 活跃值 2017-1-9 10:03
8
0
运行直接崩了啊.dalvik下。4.4.4的系统
雪    币: 233
活跃值: 活跃值 (576)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
寒号鸟二代 活跃值 3 2017-1-9 10:16
9
0
工程生成的apk要将其中除了StubAppliation的类删除,res目录下的public.xml中的资源id要跟dump.dex中的public.xml相同
雪    币: 216
活跃值: 活跃值 (38)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
SANCDAYE 活跃值 2017-1-9 10:20
10
0
嗯,好的,多谢哈,最近我也在研究
雪    币: 233
活跃值: 活跃值 (576)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
寒号鸟二代 活跃值 3 2017-1-9 10:38
11
0
jni里面这段代码判断Dalvik写反了
            jstring vm_version = (*env)->NewStringUTF(env, "java.vm.version");
            jobject v32 = (*env)->CallStaticObjectMethod(env, mySystem, system_getProperty, vm_version);
            const char* runtime_version = (*env)->GetStringUTFChars(env, v32, 0);
            LOGI("---- vmVersionStr:%s", runtime_version);
            double d=atof(runtime_version);
            
            if(d>2)
              isDalvik=0;
            else
              isDalvik=1;
雪    币: 18
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
wingsbupt 活跃值 2017-1-9 11:08
12
0
楼主这是全静态破解么?
雪    币: 1
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
bhwxf 活跃值 2017-1-9 18:58
13
0
很棒
雪    币: 33
活跃值: 活跃值 (271)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
繁华皆成空 活跃值 2017-1-10 09:01
14
0
楼主厉害,可以研究研究加固的实现了
雪    币: 13
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
狂奔的鸡骨架 活跃值 2017-1-10 09:10
15
0
mark
雪    币: 38
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
trackway 活跃值 2017-1-10 13:13
16
0
楼主nice,学习一下
雪    币: 2
活跃值: 活跃值 (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
黑夜破解 活跃值 2017-1-13 12:06
17
0
你不是说以后不说话了吗,怎么又说话了
雪    币: 43
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
小目 活跃值 2017-1-21 09:31
18
0
厉害,学习了
雪    币: 737
活跃值: 活跃值 (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
知花香 活跃值 2017-2-6 09:07
19
0
mark下下
雪    币: 356
活跃值: 活跃值 (17)
能力值: ( LV7,RANK:110 )
在线值:
发帖
回帖
粉丝
Caln 活跃值 2 2017-2-7 15:21
20
0
查找 codeOff 的代码好像有点问题, function 没有 include ?
把部分代码复制到 header.h 之后好了,另外,u4 使用 unsigned int 我这里不够长,换成 long 才行
雪    币: 220
活跃值: 活跃值 (10)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
kingdog 活跃值 2017-2-7 16:17
21
0
mark了
雪    币: 38
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
trackway 活跃值 2017-2-7 16:19
22
0
不是我说你,你看帖子就是不认真。我是说不回答了,不是不说话。这个又不是提问帖,我感谢一下不算
雪    币: 12
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
hiltercn 活跃值 2017-2-8 13:47
23
0
最好研究下libsecuritysdkx-3.1.45以后的版本,能静态还原他的全量混淆就算厉害了。
雪    币: 6
活跃值: 活跃值 (20)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
xautzbl 活跃值 2017-2-8 14:41
24
0
mark
雪    币: 67
活跃值: 活跃值 (21)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
spydh 活跃值 2017-2-9 15:44
25
0
mark 厉害
游客
登录 | 注册 方可回帖
返回