首页
社区
课程
招聘
[原创]android分析之路(一)
发表于: 2013-7-11 16:45 15130

[原创]android分析之路(一)

2013-7-11 16:45
15130

之前一段时间看了一下android开发,发现android还是挺有意思的,最近看了些android分析的资料,决定自己动手试试,本人比较菜,此贴纯属学习总结贴,请各位指教!
找了几个带有恶意代码的样本用于学习和分析。
首先,解压APK,我使用了apktool将APK文件解压成smali文件,另外还用zip解压工具解压了一份,一份用于看smali,一份再用dex2jar和xjad转成java文件,看java代码。


文件夹classes_dex2jar中存放的就是软件的java文件,将这些java文件加入sourceInsight中,这样方便查看。
第二,先从整体上看看这个项目,首先看的就是AndroidManifest.xml文件。其中主要注意一些敏感权限就行,比如发送短信,拨打电话,连接网络,但是这些也是作为一个查考。在文件中有两句话应该要提高警惕:

一个是在收到短信的时候有事件响应,另一个是去电时候有事件响应。
第三,开始java文件的分析,这里需要使用刚刚导入sourceInsight的那些文件了。
此时可以直接全文搜索关键字,如sms、Internet、url等敏感字眼,但是,有时可能没有用,这里作为学习,还是从入口函数开始:

可以看出在创建的时候就触发了很多自己实现的函数,接下来可以继续跟进函数,首先是load():

可以看出load()方法就已经侵犯了用户的隐私了,跟入上面花圈的函数,就会发现它读取了用户的SIM卡的信息,获取用户的手机号码等,并将这些信息存入Constants中,这里有个Constants.data是一个加密的字段,对于这种已经侵犯了隐私的软件,这种加密字段就非常可疑了,所以我是想通过反编译出来的函数来解密这个字段:

事实证明,反编译器不是万能的,有些东西还是出不来的,这个时候我有想到了smali文件,但是要将大量的smali转成java工作量太大,不合适,而且我还没有学习smali语法,所以。。。
不过静态调试不行,又想到了动态调试,如果可以下断点,或是输出就好了,这里我使用了smali注入的方法,直接将解密后的data值打印,找到Constants.smali文件,添加Log.d对应的语句:

添加完成之后,不着急打包,先继续分析一下,回到load方法,发现这个加密字段被作为JSON存放了起来,这里就提示我们要小心后面软件调用到的JSON。
回到入口,继续查看:


这里开始开启服务操作,之后启动MainService:

对于画线的方法,其实就是调用了ThreadOperationRun,这个在ThreadOperation.java中定义了,而这个ThreadOperationRun()没有做别的事情,就是在尝试发送短信,它调用了startRepeatTimer()、startSmsTimer、sendSms:



对于最后一个没有什么好说的了,就是发送短信,前面两个的话都有同一条语句:

而在MainReceiver中的OnReceiver(),我们可以轻易的找到,收到短信触发事件的语句:

之后就是获取电话号码,发送短信,删除短信的业务了:


注意startRepeatWaitTimer,它有一次启动了MainReceiver。现在就可以打包APK并签名安装了,用logcat可以看见刚刚加入的输出信息(我还在一些敏感函数前加了一些log,方便分析流程):


至此这个样本初步分析完成,样本中还有一些打电话和打开网页下载的地方,由于本人初学,smali语法还没有看,java文件又被破坏,所以暂时分析不了,等这几天看完后再分析之!
小弟初入android门庭,如有不对的地方,请各位大牛指正!
再次声明,这个就是学习笔记,不要喷哦~

附件:http://pan.baidu.com/share/link?shareid=3625277739&uk=3121684825


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 5
支持
分享
最新回复 (14)
雪    币: 5340
活跃值: (598)
能力值: (RANK:170 )
在线值:
发帖
回帖
粉丝
2
打LOG,的确是个不错的方法.另外IDA也是要用的,随着加密越来越厉害.反编译成java的可读性会越来越差
2013-7-11 19:56
0
雪    币: 149
活跃值: (41)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
多谢指点~~刚刚学习,那些东西还没有看到,非虫大侠的那本书刚刚到手,准备看看。
2013-7-11 19:58
0
雪    币: 108
活跃值: (44)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
4
我的ida为什么不能反编译.dex文件?
2013-7-11 20:09
0
雪    币: 271
活跃值: (3248)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
5
版本不够高吧
2013-7-11 20:18
0
雪    币: 149
活跃值: (41)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
6
6.1+的都可以。
下一个6.1的吧
2013-7-11 21:59
0
雪    币: 5340
活跃值: (598)
能力值: (RANK:170 )
在线值:
发帖
回帖
粉丝
7
一点点来吧.对于安卓来说,大家都是新手
2013-7-11 22:32
0
雪    币: 738
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
这是研究恶意扣费之类的吧?不错啊
2013-7-11 22:40
0
雪    币: 5340
活跃值: (598)
能力值: (RANK:170 )
在线值:
发帖
回帖
粉丝
9
对了,楼主把分析的文件当做附件传上来吧.好让其他网友对比分析
2013-7-11 22:44
0
雪    币: 271
活跃值: (3248)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
10
是呀 发上来,,我也刚弄,语法都不怎么会
2013-7-11 22:55
0
雪    币: 149
活跃值: (41)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
11
怎么操作?不会弄,告诉我一下,过几天回去了就上传附件
2013-7-12 16:02
0
雪    币: 5340
活跃值: (598)
能力值: (RANK:170 )
在线值:
发帖
回帖
粉丝
12
上传附件,或者你找个快盘,百度云盘之类的,上传上去,再分享链接到帖子里
2013-7-12 16:11
0
雪    币: 96
活跃值: (27)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
13
楼主有没有尝试过沙盒之类的动态分析方法。
2013-7-12 19:30
0
雪    币: 5340
活跃值: (598)
能力值: (RANK:170 )
在线值:
发帖
回帖
粉丝
14
http://hy.ijinshan.com 就可以直接动态跑并测试
2013-7-12 19:44
0
雪    币: 192
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
动态可以用droidbox,打log也可以,静态可以用ida
2013-7-15 11:22
0
游客
登录 | 注册 方可回帖
返回
//