android全系统动态二进制分析--CopperDroid
1. 简介
CopperDroid通过直接监测System call,不但可以判断操作系统的一些动作(比如进程创建、文件创建),还可以判断进程内部的动作(比如短信发送,这种行为和android的对象有关),最终产生详细的、并且有意义的,有语义的行为信息。
2. android全系统动态二进制分析的难点
Android app的特性决定了我们很难依靠传统的基于system call的动态分析系统。比如:Android系统通过Binder进行进程内(IPC)和进程间(RPC)通信。仅仅依靠system call无法还原这些高级语义。
通过CopperDroid,我们证明了android app的行为,完全可以通过system calls构建出来。不管这些行为是来自于java还是来自于native code。我们只需要从system call向上构建IPC/RPC和android object等高级语义,就行了。
这个想法还是很具有挑战性的。
3. CopperDroid实现思路
CopperDroid使用了数据解码的技术,重新建立起复杂的android对象,这是CopperDroid的真实价值所在,包括:
- Automatic IPC Unmarshalling
- Value-based Data Flow Analysis
- Behavioral Reconstruction
其它同类工具,比如:Droidscope依赖于具体的android操作系统和dvm;taintdroid则依赖于DVM。CopperDroid对android操作系统和dvm没有依赖,这使得它更加通用。
CopperDroid的整体架构如下图:
3.1 Tracking System Call Invocations
CopperDroid通过对QEMU进行intrument,根据swi指令,跟踪system call。
3.2 Behavior Reconstruction
程序的任何行为都可以通过system call和它的参数描述出来。CopperDroid通过对ioctl这个system call的payload进行分析,还原程序的高层语义,如下图所示:
参考:CopperDroid - Automatic Reconstruction of Android Malware Behaviors
android全系统动态二进制分析--CopperDroid相关推荐
- 全系统动态污点分析-概要
全系统污点分析需要完成以下几点: 1. 标记某个来自I/O device的数据为污点 2. 可以监视全系统的执行,知道哪一块代码在传播了污点数据.要实现这一点,需要基于qemu. Qemu的动态翻译系 ...
- android 屏幕录制方案,ShareREC for Android全系统录屏原理解析
本文是Mob开发者平台技术副总监余勋杰基于MediaProjection实现Android全系统录屏功能的原理解析,包括了结合MediaRecorder和MediaCodec两套方案. 文 / 余勋杰 ...
- android 监测属性值变化,Android 的系统属性(SystemProperties)分析 | Bob's Blo...
以下分析以android 4.03为基础 前言 Android的系统属性相当于windows的注册表,由key和value组成,且都是核心系统的一个基本机制.相对于windows的注册表,Androi ...
- h5 神策埋点_神策Android全埋点方案分析
神策Android全埋点方案 原理简单分析: Activity生命周期通过监听Application.ActivityLifecycleCallbacks,fragment的生命周期 及一些点击事件则 ...
- Qualcomm 高通芯片组与Android音频系统缺陷测评分析
转自:http://www.soomal.com/doc/10100002164.htm Qualcomm高通公司是目前Android智能手机上最为知名的ARM架构的处理器和芯片方案硬件提供商,高通公 ...
- Android Trusty系统源码分析---启动和调度
什么是Trusty OS 为了应对开放系统的安全风险,Global Platform(GP)提出了可信执行环境的概念(TEE).TEE要求在设备上有一个能够与Rich OS(例如Android)并存, ...
- 打造一个实际的全系统污点分析系统--Towards Practical Taint Tracking
全系统动态污点分析的难点 典型的全系统污点分析都是基于QEMU(一个硬件仿真器)实现的.然而硬件仿真是很慢的,为了提升性能,现在的实现一般都只对和tagged data交互的代码使用仿真,这种方法可以 ...
- 反汇编和二进制分析工具清单
本附录列出了许多反汇编和二进制分析工具,包括逆向工程.反汇编API以及执行跟踪的调试器. C.1 反汇编工具 C.1.1 IDA Pro(Windows.Linux.macOS) IDA是行业标准的递 ...
- 动态二进制插桩的原理和基本实现过程(Pin/DynamoRIO/Frida)
英文原文全文 http://deniable.org/reversing/binary-instrumentation 译转自https://www.4hou.com/binary/13026.htm ...
最新文章
- Oracle 下 unpin 的cursor 才能被移除
- nohup 带参数_广州市西门子两通阀VVF42.40-25C+SKD62带断电
- 基于Bootstrap Ace模板+bootstrap.addtabs.js的菜单
- 对ASCII文件的操作
- 2016/08/24 CppCon 2015 Bjarne Stroustrup “Writing Good C++14
- XMPP协议简单介绍
- CF1534F:Falling Sand(tarjan、贪心、dp)
- igmp是哪个层协议_通俗易懂网络协议(IP)
- 加载elementor时出现问题_element ui 按需引入出现问题
- CMOS checksum error-Defaults loaded 故障解决办法
- Item 27 避免使用ICloneable接口
- Python学习(三)-----用户输入和while循环
- IDEA Mybatis xml中配置sql代码自动提示【必看】
- 肌电信号分析相关链接分享
- 通俗的解释机器学习的预测原理
- hdoj 1163 Eddy's digital Roots(数学问题,继续分析) .
- 跳过wifi认证直接上网
- 管理计算机域的内置账户怎么取消,取消普通域用户将计算机加入域的权限
- win8计算机关机时 重新配置windows 以后打印机不能用了,win8系统打印机发送打印任务后不打印自动消失的技巧介绍...
- 免费版采集器:谷歌后羿采集器
热门文章
- mfc做数独游戏_我终于在iPhone上找到了体验最好的数独游戏
- 华为鸿蒙开机不用广告,华为鸿蒙系统开机无广告:用户好评,友商品牌批评。只因树大招风...
- java x509certificate2_ASP.NET使用X509Certificate2出现一系列问题的解决方法
- loadrun Java 添加参数_loadrunner手动关联参数化问题总结
- comsol积分函数_如何在 COMSOL 软件中合并解
- androidstudio自带git用法_Android Studio使用Git版本控制github
- android8 通知呼吸灯_手机呼吸灯那么好用!为什么要取消它?没有呼吸灯真的好吗?...
- mysql数据表案例_mysql中库和表的简单操作案例
- 西安建筑科技大学安德学院计算机专业,【图片】【安德学院】身在建大,志在四方【西安建筑科技大学吧】_百度贴吧...
- java 蓝桥杯 求先序排列