【移动安全基础篇】——07、Android_Hook_cydia

1. Hook 钩子
对函数进行挂钩,可以影响整个函数的执行,挂上钩子之后,注入的代码可以接管整个函数,修改函数的参数或者返回值,甚至修改函数的行为等等。
2. Cydia 的 Demo 示例(兼容性问题,所以使用不普遍)
函数 Hook 的方法如下:
找到要挂钩的类,然后找到要挂钩的函数,最后对目标函数进行挂钩重写。
步骤:
(1)导入 lib 文件 substrate-api.jar
(2)AndroidManifest.xml 文件修改

(3)入口类编写

只需要知道类名就能钩上,而且是属于系统全局属性的钩子,基本不会被检测到,这是cydia 的特点之一。
3. Java 反射
Java 能够通过反射方法获取类和它的成员,反射相当于提供一些函数,在不知道原始类定义的情况下,修改类中相关成员的属性和值等。
方法如下:
所有类都是继承于Object 的,所以都可以使用 Object 的方法,也可以强制转换为 Object。所以,当遇到无法表示出的对象时,直接使用 Object 即可。
获取对象的类:

获取类中的方法:

使用对应的不是以 s 后缀的函数可以获取特定的函数或 field

方法调用

域操作

访问权限设置,域和方法都一样,控制是否可以直接访问,相当于 public 属性

其余的函数,可以获取函数的名称,还有其他种种信息

总会有不期而遇的温暖. 和生生不息的希望。
原文地址:https://www.cnblogs.com/devi1/p/13486476.html