在介绍android工具之前,先理清android中出现的文件格式:

  java:android源码    class:java编译后生成;   dex: 由dx工具编译class而成,由dalvik执行;  

  smali:和dex的关系如同汇编代码和opcode;

  先看下,android源码到dex过程:java—>class—>dex===>这条路在android开发中,IDE负责搞定了

  dex到android过程:dex—>jar—>java===>这条路用来看java代码理解app执行流程,涉及到的工具dex2jar

  上面2条不是我们android安全的重点,如同pc端一样我们要看的是汇编即smali。看下涉及到smali的工具:

  baksmali:dex转化成smali===>java -jar baksmali-2.0.3.jar classes.dex;输出out文件夹

  smali:  smali转化成dex===>java -jar smali.jar out;把out文件夹里的smali文件编译成dex

  还是看个图吧

                            

  来来来,举个栗子:要修改android jar包里的内容。

    1 dx工具把jar包转换成dex文件

    2 baksmali 把dex文件输出到out文件夹,文件夹里包含众多smali文件

    3 找到你要修改的smali文件,

    4 利用smali把smali文件转到成dex文件

    5 dex2jar工具把dex转换成newjar包

    6 在newjar包中提取出修改过的smali文件对应的class文件,把class文件覆盖掉原来jar包中的class文件;结束

  解释下,为什么会有第6不这个奇葩操作。我发现直接经过上面的操作后newjar会变得很大(原本10k变为200k)且插入项目中无法编译,为什么会这样望知道朋友解答下。对于修改jar包实质是修改class文件:假设修改的calss文件没有import其他包大可以直接在jd-gui里复制出对应的java代码并修改,然后javac编译即可;但一般class都是有关联且在特定的包中,所以需要在环境(相应的目录)中编译。

  apk:dex文件格式;dex加载流程(dvm and ART);

  so:elf文件格式;so加载流程;

  和arm汇编知识待补充

  来看下分析工具:

  静态:

  androidKiller;JEB;

  动态:

  drozer:分析android app,我觉得这个动态有点名不副实。它分2步:分析app的manifest.xml查看是否有暴露的内容和操作,接着构造特殊的intent触发app,来查看app是否真的存在缺陷和漏洞。

  zjdroid:基于xposed的apk,hook很多重要的函数

  框架:

  xposed:替换app_main.cpp,把hookedMethod函数变成native函数,并最终由handlehookedMethod来处理,回调beforehookedmethod和afterhookedmethod

  adbi

  cydia substrate

android漏洞:

  

  

参考资料:

  1 安卓动态调试七种武器之长生剑 - Smali Instrumentation

  2 android trap攻防

android安全学习、工具库、框架的更多相关文章

  1. 2015最流行的Android组件、工具、框架大全(转)

    转自:2015最流行的Android组件.工具.框架大全 Android 是目前最流行的移动操作系统之一. 随着新版本的不断发布, Android的功能也日益强大, 涌现了很多流行的应用程序, 也催生 ...

  2. 2015最流行的Android组件、工具、框架大全

    Android 是目前最流行的移动操作系统之一. 随着新版本的不断发布, Android的功能也日益强大, 涌现了很多流行的应用程序, 也催生了一大批的优秀的组件. 本文试图将目前流行的组件收集起来以 ...

  3. Android Tools 开发工具库开源项目总结

    在Android开发中,我们不免会遇到使用一些工具库来简化我们的工具代码的编写,以下是本人之前star的开源项目,供大家参考: 一.android_testsuite 项目地址:https://git ...

  4. Android源代码学习之六——ActivityManager框架解析

    ActivityManager在操作系统中有关键的数据,本文利用操作系统源代码,逐步理清ActivityManager的框架,并从静态类结构图和动态序列图两个角度分别进行剖析,从而帮助开发者加强对系统 ...

  5. 【小超_Android】2015最流行的android组件、工具、框架大全(兴许)

    2015.07.07 FlyRefresh 创意Replace的Android实现,非常cool. fab-toolbar Material Design风格的FAB工具栏效果 MaterialVie ...

  6. android开发学习--网络请求框架RxJava+Retrofit

    看了好多的博客,终于弄清楚了Rxjava和Retrofit,给大家推荐几个不错的文章: https://gank.io/post/56e80c2c677659311bed9841 这个文章是只用Ret ...

  7. Android驱动学习-灯光系统总体框架

    Android的app访问硬件的大致流程可以分为一下几个步骤: 我们之前说过Android系统在添加新的硬件的时候需要添加一个接口java文件,通过jni来访问硬件. 这个java是我们自己实现的,我 ...

  8. Android 开源项目android-open-project工具库解析之(一) 依赖注入,图片缓存,网络相关,数据库orm工具包,Android公共库

    一.依赖注入DI 通过依赖注入降低View.服务.资源简化初始化.事件绑定等反复繁琐工作 AndroidAnnotations(Code Diet) android高速开发框架 项目地址:https: ...

  9. 【转载】Android开源:数据库ORM框架GreenDao学习心得及使用总结

    转载链接:http://www.it165.net/pro/html/201401/9026.html 最近在对开发项目的性能进行优化.由于项目里涉及了大量的缓存处理和数据库运用,需要对数据库进行频繁 ...

  10. Android高手速成--第二部分 工具库

    主要包括那些不错的开发库,包括依赖注入框架.图片缓存.网络相关.数据库ORM建模.Android公共库.Android 高版本向低版本兼容.多媒体相关及其他. 一.依赖注入DI 通过依赖注入减少Vie ...

随机推荐

  1. 使用 SVG transform rotate 解决画框中的数字跟随旋转的问题

    问题描述 在图片上画框标注数字,旋转画布后,数字随之旋转,可读性不强,要求修改成无论画布怎么旋转,数字都是正向显示~ 原交互图示: 解决方案 先看下 dom 的结构 然后看下下面简单的代码 // 获取 ...

  2. SnowNLP——获取关键词(keywords(1))

    一.SnowNLP的获取文本关键词 前面介绍了SnowNLP的获取关键词的方法,这里再重现一下 1 from snownlp import SnowNLP 2 # 提取文本关键词,总结3个关键词 3 ...

  3. SpringMVC-02 第一个SpringMVC程序

    SpringMVC-02 第一个SpringMVC程序 第一个SpringMVC程序 配置版 新建一个Moudle , springmvc-02-hello,确定依赖导入进去了 1.配置web.xml ...

  4. 聊一聊和Nacos 2.0.0对接那些事

    前言 nacos 2.0.0 已经发布了 alpha1, alpha2 和 beta 三个版本了,部分测试报告也已经出来了. Nacos2.0.0-ALPHA2 服务发现性能测试报告 Nacos 2. ...

  5. Celery:小试牛刀

    Celery是如何工作的? Celery 由于 其分布式体系结构,在某种程度上可能难以理解.下图是典型Django-Celery设置的高级示意图(FROM O'REILLY): 当请求到达时,您可以在 ...

  6. MySql历史与架构

    MySQL 逻辑架构

  7. c# DataGirdView动态刷新

    using MySql.Data.MySqlClient;using System; using System.Data; using System.Threading; using System.W ...

  8. 跨端开发技术 | 拼团商城项目同时开发app和小程序的要点

    此项目为拼团商城类型,主要功能包括商品分类.商品详情.商品搜索.拼团.订单管理等. 项目源码在 https://github.com/apicloudcom/group-ec 仓库的 widget 目 ...

  9. [倍增][换根DP]luogu P5024 保卫王国

    题面 https://www.luogu.com.cn/problem/P5024 分析 可以对有限制的点对之间的链进行在倍增上的DP数组合并. 需要通过一次正向树形DP和一次换根DP得到g[0][i ...

  10. 翻译 - ASP.NET Core 基本知识 - 配置(Configuration)

    翻译自 https://docs.microsoft.com/en-us/aspnet/core/fundamentals/configuration/?view=aspnetcore-5.0 ASP ...