zoukankan      html  css  js  c++  java
  • android安全学习、工具库、框架

      在介绍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攻防

  • 相关阅读:
    常用编码格式算法
    js显示当前时间
    客户端和服务器端乱码问题
    常用的小技巧
    开发jsp中常用标签
    java中的反射
    java中的单例设计模式
    java中的枚举类
    关于继承时构造方法的问题
    TCP三次握手和四次握手全过程 为什么要三次握手而不是二次握手?
  • 原文地址:https://www.cnblogs.com/vendanner/p/4795722.html
Copyright © 2011-2022 走看看