• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Android > 浅谈Android应用保护(一):Android应用逆向的基本方法,浅谈android

浅谈Android应用保护(一):Android应用逆向的基本方法,浅谈android

作者:网友 字体:[增加 减小] 来源:互联网 时间:2017-05-26

网友通过本文主要向大家介绍了浅谈会计的基本职能,浅谈会计基本职能论文,浅谈合唱的基本训练,浅谈教师的基本素养,浅谈会计人员基本道德等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

浅谈Android应用保护(一):Android应用逆向的基本方法,浅谈android


对于未进行保护的Android应用,有很多方法和思路对其进行逆向分析和攻击。使用一些基本的方法,就可以打破对应用安全非常重要的机密性和完整性,实现获取其内部代码、数据,修改其代码逻辑和机制等操作。这篇文章主要介绍一些基本的应用逆向和分析方法,演示Android应用的代码机密性和完整性是如何被破坏,进而被应用攻击者所用的。

 

一、Dalvik层源码逆向

在dalvik层代码的分析中,(一般情况下,对于未进行防护的应用)在Dalvik层,我们只关心classes.dex的逆向分析。

 

classes.dex是APK运行时的代码,是由源代码编译成的可以在dalvik上运行的代码。Dalvik虚拟机类似java虚拟机,所以可以用类似java的class文件的反编译方法,反编译classes.dex为java代码。对于未被保护的应用,可以用此方法还原出大部分代码。

 

整个过程中,涉及的代码形式如下:

· 1.dex文件,APK的可执行文件。

· 2.smali文件,Dalvik VM内部执行的代码。

· 3.jar文件和java文件,根据dex文件转换成的java代码文件.。

 

 

用到的工具介绍:

· 1.smali/baksmali :dex可执行文件向smali字节码文件互相转换的工具,转换的过程不丢失信息。

· 2.dex2jar:dex文件转化成java的jar文件的工具。因为Dalvik虚拟机和Java虚拟机的差异,转换无法做到一一对应,会有信息丢失和代码的错误。(该工具是整个源码逆向中非常有意义的一步 )。

· 3.jd/jd-gui:java的jar文件反编译工具。

· 4.APK改之理(ApkIDE):Windows平台下一个集成了上述工具的有GUI的平台。

 

最终生成的java源码形式如图。此时Dalvik层源码的逆向已经完成,可以对应用进行进一步的准源码级别的分析。

 

二、Dalvik层代码篡改

Dalvik层的代码篡改主要发生在smali文件上。反编译出的java代码虽然易读,但已经丢失了部分信息,同时可能存在若干错误,基本上没办法再编译回可执行文件。同时dex二进制文件不具备可读性。所以一般情况下,只能在smali中的代码上进行修改,重新打包生成APK。

 

代码层的篡改,可以修改应用的逻辑流程,插入恶意代码、绕过关键的安全流程(注册、验证、付款),打印敏感数据等。篡改代码、重打包技术一般应用在破解软件的注册验证机制(AD block破解注册,海卓破广告VIP,MIUI收费主题破解),修改游戏的规则(微信飞机大战破解),应用的敏感API调用的监控(APIMonitor,通过Android重打包加固APK拦截软件行为)。

 

Dalvik层代码篡改的使用的一个比较著名的例子是:APIMonitor。

APIMonitor的工作原理是,反编译apk文件,遍历smali代码,搜索配置文件中配置的需要监控的Api,如果找到一个Api的调用,则分析其参数,然后调用droidbox包空间下对应的类的静态函数。这些静态函数实现都是解析参数,打印输出log信息。处理完毕后,重新编译生成apk。

 

三、Dalvik层代码的Hook

samli代码的篡改需要重新打包,新的包的签名和文件校验都和原有的包不同,可以被应用内的完整性检查模块识别,进而限制进一步的操作。解决这个问题的一个方法是,可以通过把自定义代码注入到应用的进程空间,实时的代码hook,不修改代码,实现对应用的代码逻辑的修改。

可以实现上述功能的的框架工具是xposed,和cyida substrate。xposed应用相对广泛。xposed的原理可以参考之前分享的文档《Xposed原理及实现》。

 

Xposed的应用比较有名的两个例子分别是

1.Zjdroid,通过hook系统挂载dex文件的函数,自动化脱掉大部分android的加密壳。

2.Xprivicy,通过hook大部分隐私函数的调用,监控或者阻断应用对隐私API的调用。

Dalvik层代码的hook会在第三篇文章中详细介绍。

 

四、本地.so文件的分析

本地.so文件一般提供敏感函数的封装。对于未被保护的.so文件,可以通过IDA进行静态分析和动态挂载调试。so文件的分析会在第四篇文章中详细介绍。

 

五、浅谈Android应用保护系列文章

浅谈Android应用保护(零):出发点和背景


作者:纳池@阿里移动安全,更多安全类技术文章,请点击阿里聚安全博客

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 浅谈Android应用保护(一):Android应用逆向的基本方法,浅谈android

相关文章

  • 2017-05-26Android版本和API Level对应关系,androidlevel
  • 2017-05-26Android框架设计模式(四)——Adapter Method
  • 2017-05-26android:ImageView选择本地图片并显示
  • 2017-05-26好玩的Handler,好玩Handler
  • 2017-05-26Android开发9:网络访问&Web服务开发,android开发9访问
  • 2017-05-26Android 代码动态改变View的属性
  • 2017-05-26【腾讯Bugly干货分享】深入源码探索 ReactNative 通信机制,buglyreactnative
  • 2017-05-26Android Studio下运行开源项目9GAG遇到的问题
  • 2017-05-26Android Studio发布应用
  • 2017-05-26Android 应用程序集成FaceBook 登录,androidfacebook

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 【方法总结】创建、读取、删除文件相关操作,读取删除文件
    • Android环境搭建和编写helloworld,androidhelloworld
    • 1.0 Android基础入门教程
    • android 所有焦点问题--Focus,android--focus
    • 搜索保存历史记录功能,保存历史记录功能
    • androd 获得wifi列表,androdwifi列表
    • Your project path contains non-ASCII characters,containsnon-ascii
    • 【android开发笔记】为Button的背景图片添加边框式样式效果,
    • android am命令以及hotkey文件的编写,
    • Android学习笔记(28):三种选择器DatePicker_TimePicker_NumberPicker剖析

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有