【BackGround】:
随着Android设备上的隐私安全问题越来越被公众重视,恶意软件对用户隐私,尤其是对电话、短信等私密信息的威胁日益突出,各大主流安全软件均推出了自己的隐私行为监控功能,在root情况下能有效防止恶意软件对用户隐私的窃取,那么这背后的技术原理是什么?我们怎么拦截恶意软件调用短信,通讯录或者你的隐私照片?此涉及到ContentProvider那一章节,感兴趣的同学可以观看http://429899791.iteye.com/blog/2205792
调用这些API在Java层和Dalvik层(安卓虚拟机)是不好调用的,因为这些层没有提供Hook,那么只能在Native原生层的调用了。
那么看到这里肯定会想什么是Hook,ee也有这样的疑问,所以需要查的资料越来越多,那么这里由我来总结给大家:
【什么是Hook】:
android安全可以从三个层面考虑,一次是java虚拟机层,native层,还有linux kernel层,本次hook api是属于native层的。hook api之后就可以使得程序对原有系统函数的调用改为对我们自己编写的函数的调用,这既可以作为一种攻击手段,又可以在维持程序运行的情况下更新程序等等。
这样想来如果我们把打电话HOOK一下,那么调用的函数将替换成我们,然后点击拨打以后,打出的电话号码也是我们指定的号码,比如说ee想追一个男神,去攻击他的手机(当然前提是偷偷装上我们的app)那么无论他打给谁都会打到我这里,是不是功能很强大呢?其实这里讲的是网络安全,但是ee总是想去攻击别人,不过攻击与防护是相辅相成的,只有学好了怎么攻击,才会想好怎么防护。
【如何做】:讲到这里肯定会想如何做的问题:在Native层面,我认为可行的方案是对电话、短信的运行库so进行Hook(比如系统运行库\system\lib\libreference-ril.so或\system\lib\libril.so),如果注入自己的so到上述进程后,并通过dlopen()和dlsym()获取原有API地址,替换原有API地址为自己so中的API地址就可以达到Hook的目的。
那么清楚Hook是什么了么,就是“狸猫换太子”,下次有面试官问到你你就这样说,不过希望你能把原理讲清。
========================================================================
【关于Xpose框架】:
讲了一大堆Hook,那么Xpose框架是干什么的呢?Xposed框架是一款可以在不修改APK的情况下影响程序运行的框架服务,通过替换/system/bin/app_process程序控制zygote进程,使得app_process在启动过程中会加载XposedBridge.jar这个jar包,从而完成对Zygote进程及其创建的虚拟机的劫持。
妈妈呀,又是一堆新名词,怎么办?一个字“查”!!
Xposed框架实现Hook的原理介绍
Zygote是 Android 的核心,每运行一个 app,Zygote 就会 fork 一个虚拟机实例来运行 app,Xposed Framework 深入到了 Android 核心机制中,通过改造 Zygote 来实现一些很牛逼的功能。Zygote 的启动配置在/init.rc 脚本中,由系统启动的时候开启此进程,对应的执行文件是/system/bin/app_process,这个文件完成类库加载及一些函数调用的工作。
当系统中安装了 Xposed Framework 之后,会对 app_process 进行扩展,也就是说,Xposed Framework 会拿自己实现的 app_process 覆盖掉 Android 原生提供的 app_process 文件,当系统启动的时候,就会加载由 Xposed Framework 替换过的进程文件,并且,XposedFramework 还定义了一个 jar 包,系统启动的时候,也会加载这个包:
/data/data/de.robv.android.xposed.installer/bin/XposedBridge.jar
好,看到这里我大概了解了Xpose和Hook是相互协作的,首先由Xposed FrameWork 去买通Zygote皇宫守卫,然后Hook偷偷潜入皇宫进行“狸猫换太子”见不得人的勾当。
===========================================================================================
原理就讲到这里现在我们开始做准备工作
Xposed框架运行的条件
1.RootedDevice / Emulator (已 root 的手机或者模拟器)
2.XposedInstaller (Xposed 安装程序下载)
3.HookingAndroid App (要被Hook的目标App)
Xposed 框架安装器可以看成是个Xposed 框架的管理工具,我们要自己编写包含xpose框架的app然后添加到XposedInstaller里面进行管理,同时我们的hook代码已经写好了要对哪个app里面的哪个函数进行攻击狸猫换太子,所以你也不要妄想你能攻击到像QQ微信这样安功能强大的app所以自己编写一低档app来个自己攻击自己的实现吧。
理论课讲到这里,下一节课,开始实战!!!!
相关推荐
xpose安卓手机框架
XPOse框架源码..基本内容都是全的 可以看下SO和HOOK模块工作原理
适用于安卓模拟器的xpose版本
NULL 博文链接:https://429899791.iteye.com/blog/2347353
Xpose客户端 欢迎使用xpose社交照片新闻应用程序。 储存库 服务器回购: : 客户端回购: : 实时链接: : 概括 作为摄影和摄影爱好者,xpose可以用同样的心态来满足用户的需求。 xpose是新闻摄影的平台,可将...
原理 原理就是去hook libart.so里面的art::DexFile::OpenMemory,然后再把内存中的dex写到文件中去。就是这么简单,最主要的就是hook的时机,大部分的壳都是在attachBaseContext这个方法里面去完成代码的解密。...
用于系统框架。搞好了可以改颜色什么的。。。还可以吧我还在用
2017.12.29日:包含XposedBridgeApi-54.jar,4.0.3-4.4的apk文件和5.0及以上的apk文件
Xpose-用于NONMEM的基于S / R的总体PK / PD模型构建辅助工具。
1.3.8.1版360加固保Xposed插件编写教程,1.3.8.1版是2018/04/02发布的
JustTrustMe是Github上的一个开源工程,他是一个Xposed模块,用来禁止SSL证书验证。以下是其简介。 JustTrustMe:An xposed module that disables SSL certificate checking. This is useful for auditing an ...
这是一个最为简单的Xposed监听模型,主要是搭建好相应的Xposed框架,进行简单的监听。模型当中需要的文件已经齐全,所需要的SDK为Android10。
XPOSED框架是一个强大的库,可以用来实现各种有趣的功能。在这个框架的基础上,可以开发出很多好玩的应用程序,比如自动抢红包、防止消息撤回、朋友圈防删除、修改运动步数、自动点赞朋友圈等。...
安卓xposed-v90.2-sdk26-beta3-topjohnwu.zip
刷xposed卡米,解决办法 1.重启手机按住电源+音量加进入rec 2.解压出来选择对应版本放在根目录 3.重启手机到rec安装对应版本的卸载包,自动重启 4.等待几分钟你的手机就可以正常开机了
XMonkey 基于Xposed Hook 做有效的 fuzz 、mock 同时结合Android Monkey,适用于真机/模拟器的APP 容错测试 安装 安装xposed installer及xmonkey apk,并激活xmonkey 功能 Monkey 开启 Enable XMonkey ...
安装 “对话框取消”、“HiddenCore Module”、“RootCloak”三个模块。进行隐藏xposed。
xposed3.15版本安装包+xposed89版离线安装框架文件+JustTrustMe.apk
Xamarin摆用Xamarin和C#编写Xposed模块该项目仍在开发中,但可以正常使用-您可以立即尝试! 我只在VirtualXposed上进行测试。 如果它在Xposed上不起作用,请帮助我修复它。局限性将其启用为Xposed模块后,将无法...
DSE 前夕开坑,作死不带怕的哇哈哈哈(不,我没疯!) 视乎难度&DSE进度/结果&时间&我手机装不装得上Xposed 随时可能弃坑