[Android] hook 和 inject 的区别与联系

来源:互联网 发布:淘宝多肉种子哪家好 编辑:程序博客网 时间:2024/05/29 14:38

      信息安全中有一 完整性的概念,指的是程序或数据不能被攻击者恶意篡改。而根据篡改时刻的不同,有两类方式来破坏应用的完整性:静态和动态。

       在安卓上,静态的篡改方式是反编译apk,修改或添加代码后重打包,用户只要安装了这个修改过的apk,运行时攻击者的代码就会被加载到进程空间。
这种可以称为是  静态注入(inject)

        动态的篡改方法就是hook。如果我要篡改代码,那么我要实现的就是在程序将要执行某段逻辑的时候控制它去执行我的代码,这个行为就叫hook。

       一个运行时的程序表现形式是进程,代码跟数据都放在自己的进程里面。那么问题来了,操作系统隔离了进程,我的代码在我的进程里,别人的代码在别人的进程里,别人的进程是不能跳到我的进程来执行我的代码的,这怎么办呢,所以要先想办法把代码注入到别人的进程里。动态注入方法在安卓上与Linux的共享库注入是类似的,这种方法网上用的最多的应该是看雪的古河发布的libinject。另外还有Xposed,它采取了一种特殊的注入方法,是动静结合的。


作者:匿名用户
链接:https://www.zhihu.com/question/28710950/answer/45171362
来源:知乎
2 0