2.png

Android虚拟机调试器原理与实现

本文主要讲解Android虚拟机动态调试背后涉及到的技术原理,除了JDWP协议细节,还包括任意位置断点、堆栈输出、变量值获取等基础调试功能的具体实现。另外本文提供了一款新的android动态调试工具——AVMDBG,提供调试API接口,支持python脚本扩展。作为android调试技术研究过程中的实验项目,AVMDBG功能尚不完善,开源出来仅供参考,如过有bug或其他疑问反馈欢迎提交issue。

一、Android动态调试方案

在讲解android动态调试实现之前,先回顾下针对apk进行动态调试常用的几种方法,比较下不同解决方案的特点和存在的问题:

1)smali插桩大法,反编译[……]

MORE

image5

Android Accessibility安全性研究报告

第一章    Accessibility简介

近期,360烽火实验室发现一款滥用Accessibility的木马,该木马具有浏览器地址栏劫持、搜索劫持、桌面点击劫持以及防卸载等系列恶意行为。本报告将结合我们对该木马的分析,从Accessbility的设计初衷、技术发展、滥用情况等角度研究Accessibility的安全性。

一、    设计意义

依据Android官方文档,考虑到一些用户不能很好地使用Android设备,比如由于视力、身体、年龄方面的限制,造成阅读内容、触控操作、声音信息等方面的获取困难,因此Android提供了Accessibility特性和服务帮助用户更好地使用And[……]

MORE

使用CodeInspect破解WiFi万能钥匙接口协议

在上篇文章中我已经使用CodeInspect对WiFi万能钥匙进行了演示分析,在大概分析了下它的代码后,我发现这款APP并没有做什么加固措施,导致接口很容易就可以被分析出来。事实上在去年网上就有针对WiFi万能钥匙接口协议的分析,在经过多次版本迭代后,新版的Wifi万能钥匙在安全性上似乎并没有太大的提升,虽然接口有一些变化,但是核心的加密算法却没有改变并且很容易被逆向。凭借CodeInspect,我很快的就分析出了它的代码逻辑,并且写了一个查询脚本,在文章后面会提到。

功能分析

我们首先来看一下Wifi万能钥匙的主界面,可以看到主界面有一个一键查询万能钥匙的按钮,这个按钮的功能是扫描附近的[……]

MORE

安卓动态调试七种武器之离别钩 – Hooking(下)

0x00 序

随着移动安全越来越火,各种调试工具也都层出不穷,但因为环境和需求的不同,并没有工具是万能的。另外工具是死的,人是活的,如果能搞懂工具的原理再结合上自身的经验,你也可以创造出属于自己的调试武器。因此,笔者将会在这一系列文章中分享一些自己经常用或原创的调试工具以及手段,希望能对国内移动安全的研究起到一些催化剂的作用。

目录如下:

安卓动态调试七种武器之长生剑 – Smali Instrumentation
安卓动态调试七种武器之孔雀翎 – Ida Pro
安卓动态调试七种武器之离别钩 – Hooking (上)
安卓动态调试七种武器之离别钩 – Hooking (下)[……]

MORE

Anti-debugging Skills in APK

0x00 时间相关反调试

通过计算某部分代码的执行时间差来判断是否被调试,在Linux内核下可以通过time、gettimeofday,或者直接通过sys call来获取当前时间。另外,还可以通过自定义SIGALRM信号来判断程序运行是否超时。

0x01 检测关键文件

(1)/proc/pid/status、/proc/pid/task/pid/status

在调试状态下,Linux内核会向某些文件写入一些进程状态的信息,比如向/proc/pid/status或/proc/pid/task/pid/status文件的TracerPid字段写入调试进程的pid[……]

MORE

安卓动态调试七种武器之离别钩 – Hooking(上)

0x00 序

随着移动安全越来越火,各种调试工具也都层出不穷,但因为环境和需求的不同,并没有工具是万能的。另外工具是死的,人是活的,如果能搞懂工具的原理再结合上自身的经验,你也可以创造出属于自己的调试武器。因此,笔者将会在这一系列文章中分享一些自己经常用或原创的调试工具以及手段,希望能对国内移动安全的研究起到一些催化剂的作用。

目录如下:

安卓动态调试七种武器之长生剑 – Smali Instrumentation

安卓动态调试七种武器之孔雀翎 – Ida Pro

安卓动态调试七种武器之离别钩 – Hooking (上)

安卓动态调试七种武器之离别钩 – H[……]

MORE

个推sdk协议PushDown漏洞报告

0x00序

应用程序通过集成第三方推送sdk来达到给客户端推送消息的功能。目前国内的推送sdk比较流行的是个推,据其官网介绍,个推第三方推送市场的占有率达90%以上,其典型客户包括新浪微博、去哪儿、虾米音乐等应用。
但由于个推协议的密码学设计存在严重缺陷,导致整个通信的安全性完全遭到破坏,所有推送流量都可以被解析,中间人可对推送内容进行任意更改,我们将此漏洞命名为 PushDown,下面对其进行详细介绍。

0x01影响和危害

截止至本文发布之日,个推sdk的版本更新至2.8.1.0(发布时间2016-03-01)。经测试确认,此版本及之前可找到的版本均存在该问题,因此PushD[……]

MORE

安卓动态调试七种武器之长生剑 – Smali Instrumentation

0x00 序

随着移动安全越来越火,各种调试工具也都层出不穷,但因为环境和需求的不同,并没有工具是万能的。另外工具是死的,人是活的,如果能搞懂工具的原理再结合上自身的经验,你也可以创造出属于自己的调试武器。因此,笔者将会在这一系列文章中(共7篇)分享一些自己经常用或原创的调试工具以及手段,希望能对国内移动安全的研究起到一些催化剂的作用。

0x01 长生剑

长生剑是把神奇的剑,为白玉京所配,剑名取意来自于李白的诗:“仙人抚我顶,结发受长生。”长生剑是七种武器系列的第一种武器,而笔者接下来所要介绍的调试方法也是我最早学习的调试方法,并且这种方法就像长生剑一样,简单并一直都有很好的效果。这[……]

MORE

从0到TrustZone(第二篇): QSEE提权漏洞及利用(CVE-2015-6639)

TrustZone-graphic.png

在本文中,我们讨论一下如何发现并利用一个漏洞,获取高通的安全可执行环境(QSEE)的代码执行权限。

相关阅读

从0到TrustZone第一篇:探究高通的 SEE(安全可执行环境)

QSEE攻击面

在上一篇文章中提到,高通的TrustZone实现启用“普通世界”操作系统向“安全环境”中的用户空间环境加载可信应用程序(名为trustlets),称之为QSEE。

QSEE通过发送特制的SMC调用(由“安全世界”内核处理)为“普通世界”提供服务。然而,由于SMC不能从用户模式调用,“普通世界”和trustlet的通信必须通过“普通世界”的操作系统内核。

但是,“[……]

MORE

从0到TrustZone第一篇:探究高通的 SEE(安全可执行环境)

在本篇文章中,我们将讨论高通安全执行环境(QSEE)。

之前讨论过,设备使用TrustZone的最主要的原因之一是它可以提供“可信执行环境(TEE)”,该环境可以保证不被常规操作系统干扰的计算,因此称为“可信”。

这是通过创建一个可以在TrustZone的“安全世界”中独立运行的小型操作系统实现的,该操作系统以系统调用(由TrustZone内核直接处理)的方式直接提供少数的服务。另外,TrustZone内核可以安全加载并执行小程序“Trustlets”,以便在扩展模型中添加“可信”功能。Trustlets程序可以为不安全(普通世界)的操作系统(本文指的是Android)提供安全的服[……]

MORE