美文网首页
Xposed实时获取微信公众号推送

Xposed实时获取微信公众号推送

作者: 温浩天天天天天 | 来源:发表于2019-02-26 17:50 被阅读0次

最近老板让研究一下xposed,用来实时抓取公众号文章推送,然后上报到自己服务器。我一个搞Java后端的怎么叫研究起安卓和xposed了呢!

这篇文章主要是记录下踩过的坑,所以说不会很详细的讲解怎么实现功能,仅供自己记录一下,开始!

PS:这里是第一次写东西,请见谅!

资料:https://www.jianshu.com/p/61b6e384d1cf 

https://www.colabug.com/5324975.html

开始吧!

1.打开AndroidStudio(Version3.2),新建一个工程,选择Empty Activity。

2.打开AndroidManifest.xml,在application下添加

<meta-data 

android:name="xposedmodule"

android:value="true" />

<meta-data 

android:name="xposeddescription"

android:value="true" />

<meta-data 

android:name="xposedmodule"

android:value="你猜猜" />

<meta-data 

android:name="xposedminversion"

android:value="53" />

最后AndroidManifest.xml如图所示,注意不要忘记箭头所知位置。

3.build.gradle

两种方式,第一种是手动下载XposedBridgeApi-82.jar ,拖放到“项目名称/app/libs/”里面(注意:不是网上说的单独建立lib文件夹!)然后右键“Add As Library” 自行添加这个jar包。而compileOnly ‘de.robv.android.xposed:api:82′和 compileOnly ‘de.robv.android.xposed:api:82:sources’这两句

第二种就是我采用的这种,直接采用gradle仓库加载jar包。首先在build.gradle中dependencies下加入

compileOnly 'de.robv.android.xposed:api:82'

compileOnly 'de.robv.android.xposed:api:82:sources'

很多文档到这就完了,但是很重要的一点,这是笔者卡了很久的问题,

在build.gradle中加入下面这一行,这句代码是告诉AndroidStuido使用 jcenter 作为代码仓库,从这个仓库里远程寻找 de.robv.android.xposed:api:82 这个API

repositories {

    jcenter()

}

4. 实现hook操作

具体hook的功能,建议直接百度一下,xposed hello world,跟着教程做就行了,这里就不再阐述。

5.拦截微信公众号

这个地方主要的坑在于微信不同的版本的类总是改变。笔者采用的是微信6.67版本。因为笔者不是安卓开发,不是太懂反编译。只能下次熟悉后后续加上了。

XposedHelpers.findAndHookMethod("com.tencent.mm.sdk.platformtools.ay", loadPackageParam.classLoader,"WA",String.class,new XC_MethodHook() {

@Override

    protected void afterHookedMethod(MethodHookParam param)throws Throwable {

Map<String,String> cond = (Map<String, String>) param.getResult();

}

});

此处的坑在于微信这个方法的第一个参数是字符串,所以要传入String.class,要不然就会报错说没找到这个class.

拿出来的map,就是我们需要的微信公众号推送的文章。

6.HttpURLConnection

按照我平时开发WEB准备用httpclient,结果网上一查(从Android6.0开始HttpClient已经被废弃从SDk中移除掉了),然后百度一下

Android studio里在相应的module下的build.gradle中加入即可。 android {

        useLibrary 'org.apache.http.legacy'        }

但是我自己加了以后执行好像并没有效果,后来才发现安卓访问要另开一个线程。。。(不要吐槽,笔者是Android小白)

于是在主线程中加入

new Thread(networkTask).start();

RunnablenetworkTask =new Runnable() {

@Override

    public void run() {

    HttpURLConnection具体请求。

}

};

ps:这就是我作为一个Java后端在公司没有安卓的情况下搞Xposed,遇到的所有坑。如果有什么错误,请大家指出,哈哈哈!

相关文章

网友评论

      本文标题:Xposed实时获取微信公众号推送

      本文链接:https://www.haomeiwen.com/subject/qzczyqtx.html