码迷,mamicode.com
首页 > 移动开发 > 详细

Android 逆向初探(一)

时间:2016-12-16 22:20:20      阅读:313      评论:0      收藏:0      [点我收藏+]

标签:span   选择   trustzone   设备驱动   腾讯   arm   rate   font   sdk   

   逆向分析是一门技术,也是一门艺术。

  由于Web安全相对于二进制安全,更容易入门,所以在最早的时候选择了相对简单的路。但随着接触这一行的时间变长,感觉局限于 Web 而抵触二进制实在太狭隘,所以我决定投入到Android安全的学习研究中。 

0x1  安卓安全的大致细分 

  应用层Apk逆向、安卓设备框架、内核驱动等逆向、基于安卓的硬件产品逆向等。

    1)移动APP漏洞审计挖掘

    APP接口安全。把App看作web的前端页面来分析,就会有web相关的一些漏洞,比如逻辑漏洞,注入,xss漏洞等。但是除此之外移动APP有它自己的特点,自然会引入一些独特的问题,例如安卓里的组件漏洞、敏感信息泄露这些。

    2)移动应用逆向、加固、破解 

    这部分大致是PC平台的扩展,现在流行的第三方加固方案有:邦邦加固、爱加密、娜迦、腾讯、360加固等,不过加密水平参差不齐,有些还是很好破解的。这块也是黑产聚集地,例如重打包、破解的利益链条。

    3)平台攻防、平台漏洞挖掘、平台加固方案(例如ARM TrustZone)  

    漏洞挖掘包括Android、iOS系统和芯片、设备及驱动本身的各种漏洞挖掘,例如权限提升漏洞等,KeenTeam就做的这块。有些时候系统本身漏洞不好挖,就挖各种设备驱动的漏洞,柿子捡软的捏。

    4)反病毒木马(检测以及杀毒)      

    和PC类似。

那么我目前学习的内容就是Android的破解加固相关。

0x2 如何学习安卓逆向

  学习java基础,最好有Android开发基础,比如熟悉四大组件,NDK开发等。

  学习c语言基础,了解常用的函数。

  学习了解常见的apk内文件格式(dex,xml,so)

  学习常用Java,Android开发工具的使用(Eclipse,Android Studio)

  学习常用Android逆向工具的使用(Android Killer,Jeb,apktool,jadx,Ida Pro)

  学习了解smali语言,能够进行一定的编辑和修改

  学习了解Arm语法

  学习网络抓包,了解常用抓包工具的使用,BurpSuite,Fidller

  了解常用的加解密算法和编码,Aes,Rsa,Des,Tea,Base64,md5

  常用的安卓程序调试与反调试手段-调试器检测与反检测/脱壳/反混淆

0x3 常用的破解手段

  通过敏感字段,直接搜索关键点进行爆破

  算法分析,尝试还原算法

  网络验证,尝试网络抓包篡改数据

  静态分析

  动态调试

  Xposed,cydiasubstrate对关键点进行hook

0x4 如何定位关键代码

  1)信息反馈法。指先运行程序,然后根据程序运行时给出的反馈信息作为突破口寻找关键代码。

  2)特征函数法。搜索Android SDK 中提供的相关API 函数。

  3)顺序查看法。 逐行向下分析代码。

  4)代码注入法。 属于动态调试方法,手动修改apk文件的反汇编代码,加入Log输出,配合LogCat 查看程序执行到特定点时的状态数据。

  5)栈跟踪法。属于动态调试方法,输出运行时的栈跟踪信息,然后查看栈上的函数调用序列来理解方法的执行流程。

  6)Method Profiling 。属于动态调试方法,主要用于热点分析和性能优化,该功能除了可以记录每个函数占用的CPU时间外,还能够跟踪所有的函数调用关系。

 

 

Android 逆向初探(一)

标签:span   选择   trustzone   设备驱动   腾讯   arm   rate   font   sdk   

原文地址:http://www.cnblogs.com/tyomcat/p/6188171.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!