首页
社区
课程
招聘
[原创]菜鸟之2015MSC解题思路
2015-1-28 17:38 27265

[原创]菜鸟之2015MSC解题思路

2015-1-28 17:38
27265
刚接到阿里MM电话,声音好甜哦
只有前三题的,也只能靠图片博一博大家的眼球了。
前言
2个多月前,也就是11月中旬去深圳玩了一趟,在同学的带领下,花了2天在腾讯内部感受他们的环境和工作氛围,加班的很多,感觉他也确实很幸苦。回来之后,第一天晚上没睡着,感觉别人都在玩命,而我却在潇洒。于是便买了一本移动安全的书,扎扎实实得学了两个月。尽管挫折很多,多次想放弃,在此就要谢谢我的小伙伴们了,因为之前PC端朋友们的鼓励和移动端朋友们耐心解答我这个新手的问题,我坚持了下来。参加这次比赛在我看来我只是抱着一种学习的心态来看看,多亏有上天眷顾,幸运获奖。下面就分享下比赛中题目的解题思路。
第一题:
1.Apktools反编译之后定位到MainActivity中的onCreate函数,发现关键跳:

2.往上看发现了:

v4 v2 v5 都是Log出来的,打开DDMS。输入123看log:

发现enPassword为123对应的加密字符串,pw其实就是正确的密码了。
为了找到pw所对应的字符串作为输入,输入0123456789ABCDEF再次log出来。

对照可以知道,只要输入“581026”对应的就是正确的pw了。
第二题:
1.Apktools反编译之后可看到:

关键函数就是这个SecurityCheck了,这个函数在so里面。
2.去反调试
由于这个程序用IDA附加后跑根本跑不起来,所以需要跟一下流程。
在Jni_Onload函数下好断点,动态调试。
分析后发现nop这个call可以过反调试:

3.在SecurityCheck函数段首F2,输入“123456”触发断点,F8单步分析到这里;


R2存放正确的password:


R0为输入的password:

然后下面CMP R3,R1 之后就是关键跳了。
看到R2前面的提示,很明显了。
输入“aiyou,bucuoo”
提示密码正确,第二题就是这样了。
第三题:
1.Apktools反编译,发现内容加载了一个so。应该是早期Ali的一个壳子。
2.IDA附加跑程序,发现会退出,又是反调试,那就需要去掉反调试。
到了第三题,为了保险起见,直接在ptrace下断点好了,IDA载入libmobisec.so
找到ptrace函数的引用:


在2个函数段首下好断点。IDA附加:

断下来首先停在这个函数:

找到段尾的出栈操作的Hex 把第二句替换掉,实际上也就达到了nop掉整个call的效果。但是这个函数nop掉会出错,可能还与其他call有关联,毕竟是一个大call。

接着试一下另外一个函数,F9就会断在第二个函数了如图:

把第二行改成让它直接POP出去如下:

然后程序就能跑起来了,直接F9跑起来,这个时候代码已经全部解密了。
在16进制窗口找到:

这是1个odex的头,我们从dex.035开始往后翻,找到一段全为0的区域(因为区块中间都是会有一大段00 00 00,就把前面的dump下来,如果不行,继续往下翻,这样就可以把解密的dex dump出来了。再用baksmali和smali进行转换一下,就可以得到脱壳后的dex原始文件了。用JEB查看:


如图所示,重点就是b类和e类了。
然后就是几种思路了:
1.把anti-debug代码去掉重打包。
2.Hook anti-debug的函数,让它们“闲着”。
3.用其他绕过去
把脱壳后的dex重打包签名,安装好,准备动态调试。
主要方法就是JEB里面静态分析与动态调试smali代码相结合的方式。
首先静态分析可以知道一下内容:


因为我比较懒,就用Eclipse来调试Smali了,走了几遍,发现了SendEmptyMessage后面的参数为0才是正确的。所以往下找分析如下:


s5的算法:
31x+y=3618
x+y=168
解出来就是s5
然后在Eclipse的变量窗口中找到v_51的值为“7e1p”:

所以“s57e1p”就是正确的字符串密码了。
在e类的table中一一对应好,所以真正的密码为:
“... _____ ____. . ..___ .__.”。

写得比较简洁,过程还是比较长的,最后的算法要绕过层层判断才能深入内部,得到7e1p的值。
最后感谢各位一起玩耍的小伙伴了,有你们世界真精彩!剩下的就是做世间最难做的一件事了----“坚持”,再坚持2个月就奖自己一台电脑好了。加油加油,等着好了。
Ericky
2015.1.26

[培训]《安卓高级研修班(网课)》月薪三万计划,掌 握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

上传的附件:
收藏
点赞1
打赏
分享
最新回复 (55)
雪    币: 233
活跃值: (285)
能力值: ( LV12,RANK:270 )
在线值:
发帖
回帖
粉丝
QEver 5 2015-1-28 17:41
2
0
有图有真相
雪    币: 7
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
fanfu 2015-1-28 17:48
3
0
前排强势插入支持~!~!
雪    币: 1185
活跃值: (458)
能力值: ( LV13,RANK:360 )
在线值:
发帖
回帖
粉丝
Ericky 6 2015-1-28 17:50
4
0
qEVER大牛,最近也在没事玩 自己写壳,多给点思路(资料)学习学习嘛
雪    币: 233
活跃值: (285)
能力值: ( LV12,RANK:270 )
在线值:
发帖
回帖
粉丝
QEver 5 2015-1-28 17:55
5
0
不会写壳,对壳也没啥研究。
搞破解还是刚刚入门而已~~离大牛还有一段距离
你只要能自己搞一套代码混淆机制就行了,壳什么的都是浮云。
雪    币: 188
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
JackJoker 2015-1-28 18:04
6
0
前来学习楼主心得。
雪    币: 228
活跃值: (60)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
enimey 2015-1-28 18:05
7
0
顶顶,支持一下
雪    币: 1185
活跃值: (458)
能力值: ( LV13,RANK:360 )
在线值:
发帖
回帖
粉丝
Ericky 6 2015-1-28 18:20
8
0
哈哈,很早就看你参加PC端比赛了,不必自谦。
对,混淆是王道,不过既然是写壳子,基本的东西也要有的。
顺便再问下,android的VM的思路?
雪    币: 25
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
巅烽 2015-1-28 18:23
9
0
楼主的帖必须是精华啊
雪    币: 25
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
hahads 2015-1-28 18:26
10
0
给力,新手学习中~
雪    币: 6090
活跃值: (599)
能力值: ( LV4,RANK:45 )
在线值:
发帖
回帖
粉丝
君君寒 2015-1-28 18:44
11
0
恩,真是不错啊 ,终于明白怎么搞了,原先的断点没下好 对dex也不了解
楼主的帖必须是精华啊
雪    币: 693
活跃值: (108)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
zyqqyz 1 2015-1-28 19:48
12
0
顶起,也来学习一番
雪    币: 270
活跃值: (97)
能力值: ( LV8,RANK:140 )
在线值:
发帖
回帖
粉丝
代码疯子 3 2015-1-28 19:59
13
0
支持好帖,学习!
雪    币: 76
活跃值: (13)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
mingxuan三千 2015-1-28 20:04
14
0
围观学习
雪    币: 47
活跃值: (25)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
yagamiRQF 1 2015-1-28 20:13
15
0
学习了,感谢楼主大大~
雪    币: 1298
活跃值: (137)
能力值: ( LV5,RANK:75 )
在线值:
发帖
回帖
粉丝
BlackTrace 2015-1-28 20:32
16
0
能给点资料吗,大神
雪    币: 1185
活跃值: (458)
能力值: ( LV13,RANK:360 )
在线值:
发帖
回帖
粉丝
Ericky 6 2015-1-28 20:39
17
0
谢谢大家了~动力又足了~
雪    币: 1185
活跃值: (458)
能力值: ( LV13,RANK:360 )
在线值:
发帖
回帖
粉丝
Ericky 6 2015-1-28 20:40
18
0
论坛里就有很多资料
雪    币: 1298
活跃值: (137)
能力值: ( LV5,RANK:75 )
在线值:
发帖
回帖
粉丝
BlackTrace 2015-1-28 20:51
19
0
能给个具体的路线吗?很想学习
雪    币: 21
活跃值: (169)
能力值: ( LV9,RANK:330 )
在线值:
发帖
回帖
粉丝
cqccqc 2015-1-28 20:54
20
0
很详细。  支持!
雪    币: 157
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
sygaoming 2015-1-28 20:55
21
0
理解第二题了!
雪    币: 459
活跃值: (3522)
能力值: ( LV5,RANK:69 )
在线值:
发帖
回帖
粉丝
小菜鸟一 2015-1-28 21:03
22
0
图文并茂,精华
雪    币: 1185
活跃值: (458)
能力值: ( LV13,RANK:360 )
在线值:
发帖
回帖
粉丝
Ericky 6 2015-1-28 21:06
23
0
先看非虫的那本书吧
雪    币: 367
活跃值: (42)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
DarkNess0ut 2015-1-28 21:12
24
0
这教程才有意义
雪    币: 1298
活跃值: (137)
能力值: ( LV5,RANK:75 )
在线值:
发帖
回帖
粉丝
BlackTrace 2015-1-28 21:46
25
0
嗯嗯,谢谢大神了、
游客
登录 | 注册 方可回帖
返回