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 ...
随机推荐
- SQL注入绕过waf的一万种姿势
绕过waf分类: 白盒绕过: 针对代码审计,有的waf采用代码的方式,编写过滤函数,如下blacklist()函数所示: 1 ........ 2 3 $id=$_GET['id']; 4 5 $ ...
- CVE-2019-2618 任意文件上传
漏洞描述:CVE-2019-2618漏洞主要是利用了WebLogic组件中的DeploymentService接口,该接口支持向服务器上传任意文件.攻击者突破了OAM(Oracle Access Ma ...
- hive学习笔记之一:基本数据类型
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
- .net 程序员的centos命令总结
1,ssh相关 在初始化一台云服务器的时候,第一件事情就是去把该关的门都关上,首先第一关就是禁用root登录,禁用密码登录,顺便改一下远程登录端口,让登录都通过ssh密钥对来进行,阿里云里有密钥对管理 ...
- android分析之Condition
Condition的含义是条件变量,其实现依赖于系统,一般都要配合Mutex使用,使用步骤为:给mutex上锁(Lock),调用wait等待"条件"发生,如果没有发生则re-wai ...
- 归并排序(JAVA语言)
public class merge { public static void main(String[] args) { // TODO Auto-generated method stub int ...
- P1223_排队接水(JAVA语言)
思路 根据短作业优先平均等待时间最短的常识(默默感叹一句操作系统没白学),将Ti从小到大排序后,计算平均等待时间输出 //水题 题目描述 有n个人在一个水龙头前排队接水,假如每个人接水的时间为Ti,请 ...
- Java系列教程-SpringMVC教程
SpringMVC教程 1.SpringMVC概述 1.回顾MVC 1.什么是MVC MVC是模型(Model).视图(View).控制器(Controller)的简写,是一种软件设计规范. 是将业务 ...
- Android Studio 之 RadioButton
•任务 如何通过 RadioButton 实现如图所示的界面? •基本用法 RadioButton 单选按钮,就是只能够选中一个,所以我们需要把 RadioButton 放到 RadioGroup 按 ...
- windows平台rust安装
1.安装目录环境变量 RUSTUP_HOME D:\WorkSoftware\Rust\cargo CARGO_HOME D:\WorkSoftware\Rust\rustup 2.安装下载加速环境变 ...