编写微信聊天机器人3《聊天精灵WeChatGenius》:使用Xposed来hook微信,找到微信进程。

版权声明:允许转载,请注明来源。 https://blog.csdn.net/weixin_42127613/article/details/81839537

接上一篇,引入Xposed库,使模块生效:https://blog.csdn.net/weixin_42127613/article/details/81839002

现在开始实战Xposed框架的hook功能。

1、新建一个类MainXposed,用于Xposed框架的启动入口。这个类要实现Xposed框架的IXposedHookLoadPackage接口。如下图所示。

我们在这个类的实现方法中,输出当前的包名和进程名,以Xposed的日志形式进行输出。完成后,该类的源码如下。

package net.dalu2048.wechatgenius;

import de.robv.android.xposed.IXposedHookLoadPackage;
import de.robv.android.xposed.XposedBridge;
import de.robv.android.xposed.callbacks.XC_LoadPackage;

public final class MainXposed implements IXposedHookLoadPackage {
    @Override
    public void handleLoadPackage(XC_LoadPackage.LoadPackageParam lpparam) throws Throwable {
        XposedBridge.log("当前包名:" + lpparam.packageName + ",进程名:" + lpparam.processName);
    }
}

2、加入Xposed框架的入口说明。

在项目中新建assets文件夹。在app文件夹上点击右键,新建文件夹,选择Assets Folder。如下图所示。

在assets文件夹中,新建文件,输入文件名:xposed_init。只能用这个文件名,是固定死的。Xposed框架就是通过这个文件名来寻找入口类。

打开文件,在其中只需要输入一个类名即可。一行一个,也可输入多个。一般我们也只用一个。

文件内容,输入一行:net.dalu2048.wechatgenius.MainXposed

3、运行测试。

现在编译运行,重启模拟器,打开Xposed installer,选择日志菜单,进行日志查看。

通过日志记录,可以看到编写的代码生效了,输出了系统的所有包名和进程。实际上是以进程为索引,Xposed都是hook的进程。如下图所示,可以看到微信的进程和包名。微信是多进程,所以看到有多次出现微信的包名。

最后,做一下过滤。由于我们只需要获取微信的消息,所以只需要hook微信进程即可。

加入判断,如果当前的进程为微信进程,那么继续;否则返回。很多类似代码都是进行包名的对比,由于微信是多进程,所以包名会出现多次,也就hook了多次。虽然影响不大,因为其他进程可能不会调用我们hook的方法,但毕竟不是最精确的做法。所以精确的做法,还是进行进程的对比。

微信的聊天消息,在主进程里面,我们只需要hook主进程即可。

修改后的MainXposed类代码如下。

public final class MainXposed implements IXposedHookLoadPackage {
    @Override
    public void handleLoadPackage(XC_LoadPackage.LoadPackageParam lpparam) throws Throwable {
        if (!lpparam.processName.equals("com.tencent.mm")){
            return;
        }
        XposedBridge.log("进入微信进程:" + lpparam.processName);
    }
}

编译、运行、重启后,打开Xposed日志,查看到只有一条日志记录,说明我们顺利的进入了微信进程。hook住了微信。

OK。至此,我们hook进入了微信的进程。

最后,源码提交github。项目地址是:https://github.com/dalu2048/WeChatGenius.git

下一篇,将实时获取到微信聊天消息,hook数据库插入操作:https://blog.csdn.net/weixin_42127613/article/details/81840536

猜你喜欢

转载自blog.csdn.net/weixin_42127613/article/details/81839537