android安全学习、工具库、框架
阅读原文时间:2023年07月13日阅读:1

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