使用Xposed Installer实现Android Hook

使用Xposed Installer来实现Android hook,文章参考官方教程,有修改。

1、安装Xposed Installer框架apk到手机,手机必须root;

2、代码编写;

在manifest文件中声明:

<application
  android:allowBackup="true"
  android:icon="@drawable/ic_launcher"
  android:label="@string/app_name"
  android:theme="@style/AppTheme" >
  <meta-data
    android:name="xposedmodule"
    android:value="true" />
  <meta-data
    android:name="xposeddescription"
    android:value="Easy example which changes the color of all app" />
  <meta-data
    android:name="xposedminversion"
    android:value="30" />
</application>

添加xposed库文件到libs目下;新建Main.java类,代码如下:

public class Main implements IXposedHookLoadPackage,IXposedHookZygoteInit{

    @Override
    public void initZygote(StartupParam startupParam) throws Throwable {
        hookResColor();
    }

    void hookResColor(){
        XposedHelpers.findAndHookMethod(Resources.class,
                "getColor", Integer.TYPE,
                new XC_MethodReplacement() {

                    @Override
                    protected Object replaceHookedMethod(MethodHookParam param)
                            throws Throwable {
                        Object color = XposedBridge.invokeOriginalMethod(param.method, param.thisObject, param.args);
                        if (color instanceof Integer) {
                            Integer new_name = (Integer) color;
                            return new_name & ~0x0000ff00 | 0x00ff0000;
                        }
                        return null ;
                    }
                });
    }

    @Override
    public void handleLoadPackage(LoadPackageParam lpparam) throws Throwable {
        hookClock(lpparam);
    }

    void hookClock(LoadPackageParam lpparam){
        if (!lpparam.packageName.equals("com.android.systemui"))
            return;

        XposedHelpers.findAndHookMethod(
                "com.android.systemui.statusbar.policy.Clock",
                lpparam.classLoader, "updateClock", new XC_MethodHook() {
                    @Override
                    protected void afterHookedMethod(MethodHookParam param)
                            throws Throwable {
                        System.out.println("replaceHookedMethod---updateClock");
                        XposedBridge.log("replaceHookedMethod---updateClock-->>");
                        TextView tv = (TextView) param.thisObject;
                        String text = tv.getText().toString();
                        tv.setText(text + " :)-->");
                        tv.setTextColor(Color.RED);
                    }
                });
    }

添加名称为xposed_init的文件到assets目录下,文件内容为“com.app.xposed.example.Main”,就是上面Main类的完整包名。

右键工程选择properties,在Java Build Path里去掉勾选的选项(这里有点坑,必须去掉勾选,不然运行之后没效果,不知道是不是和开发环境有关),如图:

运行工程,效果如下:

这么看来Xposed也和Cydia Substrate一样,需要依赖于Java反射,如果做了代码混淆或者加密之后,此框架还有用吗?

时间: 2024-10-10 23:43:39

使用Xposed Installer实现Android Hook的相关文章

Android Hook神器:XPosed入门与登陆劫持演示

前段时间写了一篇关于Cydia Substrate广告注入的文章,大家都直呼过瘾.但是,真正了解这一方面的同学应该知道,其实还有一个比Cydia Substrate更出名的工具:XPosed. 不是因为Xposed比Cydia Substrate做的多好,而是Xposed是彻底开源的.今天,就向大家简单地介绍一下Xposed,并书写一个简单的登陆劫持Demo,让大家快速地入门学习Xposed. Xposed Xposed框架是一款可以在不修改APK的情况下影响程序运行(修改系统)的框架服务,通过

Android Hook神器——XPosed入门(登陆劫持演示)

如果想飞得高,就该把地平线忘掉. 前段时间写了一篇有关于CydiaSubstrate的广告注入的文章(地址:http://blog.csdn.net/yzzst/article/details/47318751),大家都直呼过瘾.但是,真正了解这一方面的同学应该这道,其实还有一个比CydiaSubstrate更出名的工具:XPosed. 不是因为Xposed比CydiaSubstrate做的多好,而是Xposed是彻底开源的.今天,我们就向大家简单的介绍一下Xposed,并书写一个简单的登陆劫持

android hook getdeceiveid

很多手机软件使用了手机绑定.QQ,微信等.如果使用了不同的设备,则需要验证码. 要用一台手机来模拟与另一台手机一样环境,估计hook 系统的相关函数可以实现. 想着应该有现成的软件的,例如 smart imei 什么的,因为合约机用户非常需要这东东:)结果没找到. 查查相关的实现文档. android hook api http://blog.csdn.net/lingfong_cool/article/details/8109290 这是正规战法.进行级注入,即欺骗某个程序.这样做应该是比较稳

android hook 框架 libinject2 如何实现so注入

上一篇 android hook 框架 libinject 简介.编译.运行 实际运行了so的注入并调用了注入so里的一个函数,这篇开始分析其实现. 与之前分析的 abdi 项目一样,libinject2 也是依赖于linux系统的 ptrace 系统调用. android hook 框架 ADBI 简介.编译.运行 android hook 框架 ADBI 如何实现so注入 android hook 框架 ADBI 如何实现函数挂钩 这个库首先对ptrace的调用封装了几个helper函数 i

android hook 框架 ADBI 如何实现dalvik函数挂钩

前面几篇分析已经能做到注入一个so到目标进程并用so里的函数挂钩目标进程的函数,如果对这个实现不了解,请返回去阅读  android hook 框架 ADBI 简介.编译.运行  . android hook 框架 ADBI 如何实现so注入 .android hook 框架 ADBI 如何实现so函数挂钩, so函数的挂钩只能影响native世界,没有影响到java虚拟机内部,而android绝大部分逻辑都是跑在虚拟机内部的.所以这篇接着分析 adbi 剩下的部分代码,看它如何实现挂钩dalv

android hook 框架 libinject 如何实现so注入

前面两篇 android hook 框架 libinject2 简介.编译.运行 android hook 框架 libinject2 如何实现so注入 实际运行并分析了 Android中的so注入(inject)和挂钩(hook) - For both x86 and arm 这个博客给出了 libinject 改进版的代码. 今天分析一下古河大神原始的 libinject 的源码,libinject2 与 原始的 libinject 大部分代码是一致的,各种 ptrace 的封装函数基本照抄

使用Cydia Substrate实现Android Hook

使用Cydia Substrate来实现Android hook,文章来自于官方提供的教程. 1.安装Cydia Substrate框架apk,手机必须root. 2.代码编写: 在manifest文件中声明如下: <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" andr

Android Hook 借助Xposed

主要就是使用到了Xposed中的两个比较重要的方法,handleLoadPackage获取包加载时候的回调并拿到其对应的classLoader:findAndHookMethod对指定类的方法进行Hook. /** * 包加载时候的回调 */public void handleLoadPackage(final LoadPackageParam lpparam)/** * Xposed提供的Hook方法 * * @param className 待Hook的Class * @param clas

android hook 框架 xposed 如何实现挂钩

前面知道,安装xposed框架后,系统启动,执行init, init 再调用 app_process 程序,由于这时候 app_process 已经被换了,所以app_process 启动后先进入的是 xposedbridge.class 的 main 函数, 这个函数最后才进入标准的 zygoteInit.class 的 main 函数,在进入 zygote 之前,它调用了几个函数,初始化了xposed框架,下面逐个分析. 一. initNative Xposed.cpp (xposed):