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

最新文章

  1. Mysql 中 show full processlist
  2. Entity FrameWork 365日系列文章源码研究 (1)
  3. JavaScript DOM 编程艺术·setInterval与setTimeout的动画实现解析
  4. poj 2513 Colored Sticks trie树+欧拉图+并查集
  5. Android之NDK开发
  6. 解决android:theme="@android:style/Theme.NoDisplay" 加入这句话后程序不能运行
  7. mysql 命令行操作
  8. awk文本处理--二维数组使用一例
  9. docker network
  10. ural1126 Magnetic Storms
  11. 剑指Offer——知识点储备-故障检测、性能调优与Java类加载机制
  12. 一个特殊的SQL Server阻塞案例分析
  13. FloatingWindow 悬浮窗开源项目总结
  14. 利用kali破解wifi密码
  15. [luogu3391][bzoj3223]文艺平衡树【splay】
  16. c/c++ 大于等于 大于 时间效率比较
  17. 周强201771010141《面向对象程序设计(java)》第六周学习总结
  18. PHP中的一些常用函数
  19. 使用swoole编写简单的echo服务器
  20. 你真的了解 Unicode 和 UTF-8 吗?

热门文章

  1. Java 开发工具
  2. Java I/O流 01
  3. linux安装uwsgi,报错问题解决
  4. 鹅厂二面,nginx回忆录
  5. 一起来学习LiteOS中断模块的源代码
  6. 将表单数据转换成json字符串
  7. JMeter扩展Java请求实现WebRTC本地音视频推流压测脚本
  8. beego 框架用的页面样式模板
  9. 时间&空间(complexity)
  10. HTML的基础语法