首页
社区
课程
招聘
某地理位置模拟APP从壳流程分析到破解
发表于: 2017-4-16 10:42 7664

某地理位置模拟APP从壳流程分析到破解

2017-4-16 10:42
7664

工具与环境

Xposed

IDA 6.8

JEB 2.2.5

Fiddler2

010Editor

NEXUS 5  Android 4.4

好久不玩逆向怕调试器生锈,拿出来磨磨!

高手莫要见笑,仅供小菜玩乐,有不对或不足的地方还请多多指教,不胜感激!

0x00: 程序大概情况分析

在我们拿到一个APP准备破解时一般得安装运行,程序运行后须要注册用户,随便注册一个用户登录,以下是APP须要购买vip才能使用的大概情况。


通过简单的查看可以知道是要通过网络支付后才能使用VIP,可以使用Fiddler进行抓包分析,但是请求体与返回值都是加密了的,目前还看不懂。

JEB反编译app发现被加固了。

通过上面简单的分析后,该款应用为了防止被破解,主要做了以下几点防护。

利用第三方加固将app加固,网络验证是否为VIP权限。

通过第一部分的介绍,发现软件被加固了,接下来就是要脱掉壳才能更好地分析下去,挂上IDAJNI_Onload下断点,反调试主要有,获取rtld_db_dlactivity判断是否为空,过反调试将获取到的内容清零就成了、time时间比较,将返回值清零,过/proc/self/status反调试将open函数返回0,过/proc/net/tcp也是将open函数返回0,文件监控不用管,还有一处比较隐藏的反调试raise,直接将函数改成返回,代码如下。

以上就是过掉所有主要的反调试了!

过掉反调试后在Case 29 case33下好断点,代码如下:

下好断点后一直F9会发现主是逻辑就是获取解压函数(uncompressc)解压第二个so数据,解压后就是解密第二个SO了。接下来就是在内存中加载第二个SO并获取JNI_OnLoad函数。

获取到第二个SOJNI_OnLoad函数地址后走到Case 33处跳到第二个SOJNI_OnLoad去执行了,到此第一个SO的主要工作就基本完成了。

第二个SOJNI_OnLoad主要工作就是注册壳本身的 Native函数与被NativeonCreate函数。

下面是我通过hook注册函数打印出来的对应类的Native函数,在后面SO劫持会有说.

接下来就是解密原始DEX了,解密逻辑如下:

这时就可以将DEX数据dump出来,其实后面每个onCreate中也会出现明文的DEX

dump出来的dex通过JDE反编译后发现很多Activity中的onCreate函数变成了Native了,从上面打印的类与对应函数可以看得出。

在上面分析到注册Native函数时就对onCreate函数下好了断点,直接F9来到onCreate断下。

F8一直单步走到定位指令的地方。

比如 下面是dexOnCreate的指令,

读取上面的指令并解密。

解密后判断指令类型,获取执行须要的数据,每一种操作码(OPCode)都对应有一个处理逻辑(是一段代码,但不一定是函数),然后跳转到对应的处理逻辑去处理它,简单说一个正常没加壳的指令格式。

71 20  06 00  02 00  invoke-static {v2, v0}, int aurora.view.AuroraTest.Test2(int, java.lang.String)

71操作码

参数个数

0006 method idx

02参数V2

00参数 V0

对应Android官方指令表

但是加壳后的指令被变成了自己定义的了,我第一次想法是想通过分析加壳前与加壳后指令对应关系,只要找到足够多的指令就能将其还原,我简单加了两个apk测试,从第一个中找到了如下的指令对应关系。


[峰会]看雪.第八届安全开发者峰会10月23日上海龙之梦大酒店举办!

上传的附件:
收藏
免费 3
支持
分享
最新回复 (25)
雪    币: 1039
活跃值: (355)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
小三就是厉害,谢谢分享。
2017-4-16 12:34
0
雪    币: 1973
活跃值: (2030)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
nice  job
2017-4-16 13:01
0
雪    币: 124
活跃值: (125)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
难道不是少了012?
2017-4-16 15:47
0
雪    币: 3902
活跃值: (6030)
能力值: ( LV13,RANK:550 )
在线值:
发帖
回帖
粉丝
5
暗物质 难道不是少了012?[em_40]
不好意思,己更新。。
2017-4-16 19:43
0
雪    币: 43
活跃值: (170)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
膜拜dalao
2017-4-16 19:47
0
雪    币: 4597
活跃值: (4024)
能力值: ( LV8,RANK:138 )
在线值:
发帖
回帖
粉丝
7
2017-4-16 20:24
0
雪    币: 144
活跃值: (38)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
,哦也,安卓平台分析越来越成熟了
2017-4-16 20:58
0
雪    币: 18
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
厉害!分析的很全面!真的!
2017-4-17 09:59
0
雪    币: 1
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
怎么这么多,下载后怎么不能打开,大神
2017-4-17 10:06
0
雪    币: 18
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
下面那几个文件打不开啊
2017-4-17 10:16
0
雪    币: 93
活跃值: (136)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
先mark
2017-4-17 10:33
0
雪    币: 177
活跃值: (83)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
必须点赞
2017-4-17 12:13
0
雪    币: 3902
活跃值: (6030)
能力值: ( LV13,RANK:550 )
在线值:
发帖
回帖
粉丝
14
yipindashi 怎么这么多,下载后怎么不能打开,大神[em_1]
链接:  https://pan.baidu.com/s/1c2KiYsg  密码:  2rft
2017-4-17 12:15
0
雪    币: 44153
活跃值: (20205)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
15
由于软件作者联系了,帖子临时移会员区一段时间,等其更新再恢复到android版块。
2017-4-17 13:44
0
雪    币: 3902
活跃值: (6030)
能力值: ( LV13,RANK:550 )
在线值:
发帖
回帖
粉丝
16
kanxue 由于软件作者联系了,帖子临时移会员区一段时间,等其更新再恢复到android版块。
2017-4-17 14:48
0
雪    币: 1
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
想知道它定位是怎么做的。。能给代码吗。。新手。。
2018-2-23 14:46
0
雪    币: 20
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
三哥  拦截jni接口有什么办法呀  我没有头绪
2018-2-27 22:19
0
雪    币: 3902
活跃值: (6030)
能力值: ( LV13,RANK:550 )
在线值:
发帖
回帖
粉丝
19
一xOO 三哥 拦截jni接口有什么办法呀 我没有头绪
hook  dvmUseJNIBridge
2018-2-27 22:22
0
雪    币: 20
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
我是小三 hook dvmUseJNIBridge
我是说解密后得到每一条java指令,从so层调用java实现过程中有没有办法拦截获取java指令呀???我觉得这个办法好偷懒,但是自己找资料一无所获
2018-2-28 08:55
0
雪    币: 20
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
改过源码给findclass  callstatic这些函数加过log,不过觉得这种办法……
2018-2-28 09:02
0
雪    币: 163
活跃值: (1583)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
22
要是开发相应的HOOK代码工程,就更完美了
2018-2-28 11:14
0
雪    币: 159
活跃值: (3067)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
23
我是小三 hook dvmUseJNIBridge
意思在时间暂定内,,用地址下段?
2018-2-28 11:20
0
雪    币: 33
活跃值: (322)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
SO劫持非常有用  感谢
2018-3-3 21:21
0
雪    币: 2872
活跃值: (185)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
25
gaybc SO劫持非常有用 感谢

最后于 2018-10-30 11:46 被长泽雅美编辑 ,原因:
2018-3-4 00:05
0
游客
登录 | 注册 方可回帖
返回
//