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:
android漏洞:
参考资料:
1 安卓动态调试七种武器之长生剑 - Smali Instrumentation
android安全学习、工具库、框架的更多相关文章
- 2015最流行的Android组件、工具、框架大全(转)
转自:2015最流行的Android组件.工具.框架大全 Android 是目前最流行的移动操作系统之一. 随着新版本的不断发布, Android的功能也日益强大, 涌现了很多流行的应用程序, 也催生 ...
- 2015最流行的Android组件、工具、框架大全
Android 是目前最流行的移动操作系统之一. 随着新版本的不断发布, Android的功能也日益强大, 涌现了很多流行的应用程序, 也催生了一大批的优秀的组件. 本文试图将目前流行的组件收集起来以 ...
- Android Tools 开发工具库开源项目总结
在Android开发中,我们不免会遇到使用一些工具库来简化我们的工具代码的编写,以下是本人之前star的开源项目,供大家参考: 一.android_testsuite 项目地址:https://git ...
- Android源代码学习之六——ActivityManager框架解析
ActivityManager在操作系统中有关键的数据,本文利用操作系统源代码,逐步理清ActivityManager的框架,并从静态类结构图和动态序列图两个角度分别进行剖析,从而帮助开发者加强对系统 ...
- 【小超_Android】2015最流行的android组件、工具、框架大全(兴许)
2015.07.07 FlyRefresh 创意Replace的Android实现,非常cool. fab-toolbar Material Design风格的FAB工具栏效果 MaterialVie ...
- android开发学习--网络请求框架RxJava+Retrofit
看了好多的博客,终于弄清楚了Rxjava和Retrofit,给大家推荐几个不错的文章: https://gank.io/post/56e80c2c677659311bed9841 这个文章是只用Ret ...
- Android驱动学习-灯光系统总体框架
Android的app访问硬件的大致流程可以分为一下几个步骤: 我们之前说过Android系统在添加新的硬件的时候需要添加一个接口java文件,通过jni来访问硬件. 这个java是我们自己实现的,我 ...
- Android 开源项目android-open-project工具库解析之(一) 依赖注入,图片缓存,网络相关,数据库orm工具包,Android公共库
一.依赖注入DI 通过依赖注入降低View.服务.资源简化初始化.事件绑定等反复繁琐工作 AndroidAnnotations(Code Diet) android高速开发框架 项目地址:https: ...
- 【转载】Android开源:数据库ORM框架GreenDao学习心得及使用总结
转载链接:http://www.it165.net/pro/html/201401/9026.html 最近在对开发项目的性能进行优化.由于项目里涉及了大量的缓存处理和数据库运用,需要对数据库进行频繁 ...
- Android高手速成--第二部分 工具库
主要包括那些不错的开发库,包括依赖注入框架.图片缓存.网络相关.数据库ORM建模.Android公共库.Android 高版本向低版本兼容.多媒体相关及其他. 一.依赖注入DI 通过依赖注入减少Vie ...
随机推荐
- OpenGL中的坐标系统详细概括:包括Z缓冲
一: 首先就是关于几个坐标系统的概括: 局部坐标是对象相对于局部原点的坐标,也是物体起始的坐标. 下一步是将局部坐标变换为世界空间坐标,世界空间坐标是处于一个更大的空间范围的.这些坐标相对于世界的全局 ...
- 【Arduino学习笔记05】Arduino数字输入、输出和脉冲宽带调制 -- 小项目:彩色小台灯
基本功能: 长按控制按钮开机,长按控制按钮关机(>3s) 通过三个调节按钮调节灯的颜色,每一个按钮分别对应R,G,B值 模式切换:短按控制按钮切换模式(长亮模式/闪烁模式) 元器件清单: Ard ...
- 自己动手实现springboot运行时新增/更新外部接口
最近有个需求:需要让现有springboot项目可以加载外部的jar包实现新增.更新接口逻辑.本着拿来主义的思维网上找了半天没有找到类似的东西,唯一有点相似的还是spring-loaded但是这个东西 ...
- 微信小程序自定义Tabber,附详细源码
目录 1,前言 2,说明 3,核心代码 1,前言 分享一个完整的微信小程序自定义Tabber,tabber按钮可以设置为跳转页面,也可以设置为功能按钮.懒得看文字的可以直接去底部,博主分享了小程序代码 ...
- 选择 FreeBSD 而不是 Linux 的技术性原因1
Ports FreeBSD Ports 是一个惊人的工程壮举.NetBSD 的 pkgsrc (package source) 和 OpenBSD 的 ports collection 都源于 Fre ...
- Python装饰器(2)
上一篇介绍了装饰器的常规使用方法,即函数形式的装饰器.这篇文章中,进一步介绍类class跟装饰器的相关知识. [用装饰器来装饰类函数] 这是今天介绍的第一种使用场景,比较常见.因为目前好多的编程语言都 ...
- 1.认识numpy的数组
认识ndarray --ndarray:用于存储单一数据类型的多维数组 ndarray基础属性的认识 import numpy as np #将numpy简写为np方便调用 1.通过以下实例来认识ar ...
- java例题_01 不死神兔!
1 /*1 [程序 1 不死神兔] 2 题目:古典问题:有一对兔子,从出生后第 3 个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子对数为多少? 3 程 ...
- Python脚本打包成exe执行文件
需求 一个教辅目录结构检查工具,目录结构是[书籍]-[章节]-[题目|答案]-[*.jpg],后台有个异步处理的服务,需要强依赖这个目录结构. 书籍解析是单独的pipeline,日志对用户不可见,这里 ...
- ACNet:用于图像超分的非对称卷积网络
编辑:Happy 首发:AIWalker Paper:https://arxiv.org/abs/2103.13634 Code:https://github.com/hellloxiaotian/A ...