首页
社区
课程
招聘
[原创]ALICTF2014 evilAPK400完整脱壳分析
2014-9-30 00:28 49410

[原创]ALICTF2014 evilAPK400完整脱壳分析

2014-9-30 00:28
49410
收藏
免费 4
打赏
分享
最新回复 (52)
雪    币: 576
活跃值: (1148)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
hkfans 3 2014-11-13 14:21
26
0
楼主好人啊。。这文章很精彩。。让我们这种菜鸟认识了安卓壳的基本原理
雪    币: 236
活跃值: (55)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
piratelzs 2014-11-18 17:45
27
0
下载了,学习下先,感谢分享~~
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
ilovetufu 2014-11-19 09:46
28
0
楼主威武、360加固保有办法搞定没有?
雪    币: 134
活跃值: (158)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
川美 2015-1-5 15:18
29
0
感谢深夜放福利
雪    币: 188
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
JackJoker 2015-1-5 15:43
30
0
楼主威武,下载学习。
雪    币: 36
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
guxing罗 2015-1-5 15:55
31
0
支持下。。。。。。。。。。。。。
雪    币: 206
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
cheapyu 2015-1-5 20:05
32
0
第三方加固怎么解啊
雪    币: 274
活跃值: (88)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
dunwin 2015-1-6 11:35
33
0
支持   ·
雪    币: 8
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
sylyw 2015-1-7 14:48
34
0
大神的文章,学习学习。。
雪    币: 205
活跃值: (10)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
qihuan风云 2015-1-22 16:56
35
0
学习一下
雪    币: 25
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
jieniruyan 2015-2-3 00:32
36
0
标记学习,感谢分享思路
雪    币: 87
活跃值: (110)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
kevinjian 2015-2-3 22:05
37
0
感谢分享,后排支持
雪    币: 123
活跃值: (95)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
wxjgeorge 1 2015-2-10 13:14
38
0
威武!学习
雪    币: 47
活跃值: (43)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
chitcrazy 2015-3-2 16:24
39
0
可能下面我提的问题比较菜,很渴望得到作者及各位大神的热心解答,在看完了这片脱壳分析的帖子之后,做了尝试,看了作者的文档分析,觉得非常好,并且看了好两天,但是有些谜团仍然没有揭开,下面是我得问题?
   分析过程的遗留问题:
1.到底函数的头在哪里,是不是在JNI_Onload呢,但到底是从哪里开始跳转向KeyFunction的呢?
(这个过程是怎么执行得呢),在一开始得Application中得几个native方法是怎么执行得呢?
2.ali:isDalvik这个变量到底指代的是什么呢,在arm汇编中这些临时变量的值在哪里呢?为什么要取ali:isDalvik的第一个字节来判断是否为0呢,这个到底代表什么??
3.r0=struct1,可是为什么struct1中0x8偏移处又保存的是cls.jar的绝对地址了呢,前面分析的时候是把内存中读到的1024个字节数据的收地址放在了struct1中0x8偏移处阿,怎么现在成了cls.jar的绝对地址呢,这个1024个字节到底是什么东西???
4.在查找内存加载函数的时候,首先是找到libdvm.so的位置,然后再在libdvm.so中查找相应的内存加载函数,这里就是查找openDexFile函数(这是针对4.0以上的情况),但是分析汇编代码的时候,为什么看到作者是这么写的,先通过dlsym获取dvm_dalvik_system_DexFile这个符号,然后再通过lookup这个函数来查找openDexFile这个函数呢(当然,这里都是针对4.0以上 的情况来说的)
雪    币: 65
活跃值: (112)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
mccoysc 2015-3-2 17:01
40
0
欢迎参加ALICTF 2015
雪    币: 29
活跃值: (499)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
万抽抽 2 2015-3-2 20:43
41
0
学习逆向,多百度/google,多学习相关理论知识还是很有必要的。从你的问题来看,相关理论知识不是很了解,建议花点时间充充电  
第一个问题:这方面的知识不是一两句能说清楚的,不过你可以从google或linker源码中找到答案,简要一句话就是“so文件的init段中的函数(如果有的话)是在加载完so之后第一时间执行的,比jni_onload早”,而你说的函数的头,就是init段里面的函数~~
第二个问题ali:isDalvik是一个全局变量,它是在ali::init_classes函数里面进行初始化的,至于“为什么要取ali:isDalvik的第一个字节来判断是否为0”,是因为在这个init_classes函数里面设定了ali:isDalvik的第一个字节为0,来表示处于DVM运行环境~因为整个加固都是基于DVM的。
第三个问题:可能是我的描述不准确,将“绝对地址”改为“绝对路径”你应该就不会迷糊了~~~
至于第四个问题:我建议你多看看dlopen dlsym机制之后再回想一下,这个真的不是个问题~~

共勉~
雪    币: 29
活跃值: (499)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
万抽抽 2 2015-3-2 20:44
42
0
亲,你确定我也可以参加?
雪    币: 47
活跃值: (43)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
chitcrazy 2015-3-3 09:49
43
0
谢谢万大神的悉心教导,确实发现你指出的一些关键点,我也总结了下:
之前虽然看过linker这方面的一些东西,但是发现是一些皮毛,没有很深入地去与实际场景比较,因此造成现在出现这种疑难杂症,我同时也发现自己对源码地阅读还是处于第一个阶段,比较粗浅,所以以后以后一定多多努力!
这些问题困扰了我挺长时间的,再次谢谢你的诚挚解答啊,以后有问题可能还要多向你讨教,谢谢!
雪    币: 201
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
sellenw 2015-3-6 11:26
44
0
研究一下。
雪    币: 190
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
Matrix 2015-5-12 18:10
45
0
喜欢这种
雪    币: 1
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
逯岩枯松 2015-5-18 11:55
46
0
抽抽,威武
雪    币: 190
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
深圳海涛 2015-9-20 02:20
47
0
不错 最近我也在研究这个
雪    币: 28
活跃值: (101)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
川zi 2015-9-20 22:54
48
0
在其他地方看到wanchouchou感觉熟悉,原来在这里
雪    币: 42
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
northriver 2015-9-25 15:02
49
0
楼主能分享一下原版的apk文件吗,想复现一下。。。。
雪    币: 29
活跃值: (499)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
万抽抽 2 2015-9-26 00:42
50
0
这个时间过于久远,我也找不到了。你论坛里面搜搜看。
游客
登录 | 注册 方可回帖
返回