首页
论坛
课程
招聘
[原创]360加固之onCreate函数还原并重打包
2017-12-9 20:06 22801

[原创]360加固之onCreate函数还原并重打包

2017-12-9 20:06
22801

断断续续弄360的壳子搞了个把月,把这次的成果分享给大家。。。


在还原之前,我们需要一份360加固的指令映射表,感谢https://bbs.pediy.com/thread-222412.htm这篇文章提供的指令映射表,我对这个表进行了补全,包含所有的Dalvik opcode

struct DexCode {

u2  registersSize;           

u2  insSize;        

u2  outsSize;                

u2  triesSize;               

u4  debugInfoOff;      

u4  insnsSize;          

u2  insns[1];            

};


对于native onCreate函数的DexCode,前0x10个字节没有加密, 后面的insns被360加密了,我们需要做的就是将insns指令还原,

加密的insns指令以及解码insns指令的key值都是通过parse_tree这个函数得到的,其中第一个参数是一个全局变量,第二个参数是"类名->方法名"


虽然可以手动改变第二个参数为不同类的onCreate方法,来获取不同方法的加密指令insns,但是我分析的样本是360自家的一个App,共有49个native onCreate函数,手动弄很麻烦,


手动调用parse_tree函数

还原的核心思路就是手动调用parse_tree函数,

由于parse_tree函数是在360的第二个so里面,而且是通过内存加载的方式来加载这个so,这里我们来进行“ 二阶Hook ” 获取parse_tree函数地址


首先Hook dlopen函数得到libjiagu.so的基址,在new_dlopen函数中内存加载函数soMemLoader


在new_soMemLoader函数中,调用完原始函数后,表示第二个so已经内存加载完成,并且初始化了init和init_array函数,根据偏移获取parse_tree函数地址,获取第一个参数使用全局变量,但是我们需要保证这个全局变量指向的内容是初始化了的,所以我们可以继续在这里Hook JNI_OnLoad函数,等JNI_OnLoad执行完以后,保证全局变量所在的内存数据是正确的。


在new_JNI_OnLoad函数中,当JNI_OnLoad函数执行完以后,就开始还原所有的onCreate函数了。


手动调用parse_tree函数进行解密


还原过程中有几个坑需要注意

1.Try/Catch的处理

2.packed-switch,sparsed-switch,fill-data指令的处理


修复之后jeb和jadx可以完美地反编译onCreate函数了。


重打包

原始的Application其实保存在strEntryApplication = "com.qihoo360.crypt.entryRunApplication",在JNI_OnLoad中动态修改为原始的Application了,com/stub/StubApp的strEntryApplication成员

替换为com.qihoo.root.AuthApp

一般第一个activity都没变,但是我这个样本的启动activity不是原始的dex,而是360自带的一个dex,将类"com/stub/stub01/StartActivity"的成员mEntryActivity替换为com.qihoo.root.SplashActivity

还有一些小细节懒得说了。


不过360最新的dex vmp好像没用指令映射表,本文的方法应该可以适用最新版本以前的。。。



恭喜ID[飞翔的猫咪]获看雪安卓应用安全能力认证高级安全工程师!!

上传的附件:
收藏
点赞3
打赏
分享
最新回复 (23)
雪    币: 27
活跃值: 活跃值 (173)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
bluth 活跃值 2017-12-9 20:09
2
0
mark  赞
雪    币: 27
活跃值: 活跃值 (173)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
bluth 活跃值 2017-12-9 21:09
3
0
内存加载so
最后于 2018-4-7 11:31 被bluth编辑 ,原因:
雪    币: 384
活跃值: 活跃值 (412)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
铭天星 活跃值 2017-12-10 08:22
4
0
雪    币: 298
活跃值: 活跃值 (88)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
七少月 活跃值 2017-12-10 15:52
5
0
其实最新的也还是表,笑着哭
雪    币: 237
活跃值: 活跃值 (39)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
fsqddfg 活跃值 2017-12-10 17:28
6
0
雪    币: 10054
活跃值: 活跃值 (2186)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
tDasm 活跃值 2017-12-11 09:11
7
0
学习
雪    币: 262
活跃值: 活跃值 (455)
能力值: ( LV3,RANK:35 )
在线值:
发帖
回帖
粉丝
lfyyy 活跃值 2017-12-11 10:03
8
0
雪    币: 1147
活跃值: 活跃值 (871)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
gtict 活跃值 2017-12-11 10:49
9
0
雪    币: 1147
活跃值: 活跃值 (871)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
gtict 活跃值 2017-12-11 16:22
10
0
問下main.dex原文件來自哪里?来自原来的apk好像大小不对
雪    币: 202
活跃值: 活跃值 (1221)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
寒号鸟二代 活跃值 3 2017-12-11 16:59
11
0
gtict 問下main.dex原文件來自哪里?来自原来的apk好像大小不对
脱掉的原始dex
雪    币: 67
活跃值: 活跃值 (21)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
spydh 活跃值 2017-12-15 16:59
12
0

soMemLoader,parse_tree这两个函数是怎么跟出来的
雪    币: 229
活跃值: 活跃值 (51)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
初音未来 ㅤ 活跃值 2017-12-16 20:30
13
0
ZIP打不开
雪    币:
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
千秋月 活跃值 2017-12-16 22:39
14
0
膜拜
雪    币: 654
活跃值: 活跃值 (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
miyuecao 活跃值 2017-12-27 15:23
15
0
支持下高手
雪    币: 201
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
wx_Mr_杰先生 活跃值 2018-1-15 04:01
16
0
小白看不懂
雪    币: 34
活跃值: 活跃值 (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
vurtneye 活跃值 2018-1-21 17:42
17
0
 
雪    币: 34
活跃值: 活跃值 (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
vurtneye 活跃值 2018-1-21 18:17
18
0
同问  soMemLoader,parse_tree这两个函数是怎么跟出来的  谢谢
雪    币: 152
活跃值: 活跃值 (20)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
hbwazxf 活跃值 2018-1-22 21:36
19
0
看不太懂……MARK一下……。
雪    币: 85
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
lvwenzhuye 活跃值 2018-1-25 22:48
20
0
  谢谢分享
雪    币: 448
活跃值: 活跃值 (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
netbee 活跃值 2018-1-27 21:33
21
0
是在ida中调用吗?能不能详细说一下?进IDA  ,搞不定呀。。。
雪    币: 1
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
Aiello 活跃值 2018-2-25 04:11
22
0
很厉害了,多多分享,多多学习
雪    币: 2
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
daihoukun 活跃值 2018-4-6 18:02
23
0
小白没法用。。。
雪    币: 5
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
血皇影风 活跃值 2019-3-2 13:38
24
0
大佬360加固的指令映射表能发给我吗,我有急用
游客
登录 | 注册 方可回帖
返回