如何用xposed调用别的界面的方法

如何用xposed调用别的界面的方法,第1张

微X模块需要Xposed框架的支持,安装Xposed才是最麻烦的事情。普通手机可以尝试以下方法:

1、获取完全root权限。

2、到酷安市场下载Xposed框架并安装。

3、在Xposed里安装更新符合自己手机的框架。

4、下载安装微X模块,百度应该能找到。

5、重新勾选Xposed模块里的微X,重启手机。

6、完成。

对于已经安装第三方rec的手机,可以采用卡刷的方式安装xposed。

微X模块是一款非常强大的用于微信安卓版本的辅助插件,我们这里就是集合他之前的3个模块(微信转发模块,微信防撤回模块,微信通讯录管理模块)重新发布的作品,之前的模块因为遭到盗版已经永久停更,这款依然免费并且当时开源过很长时间,现在因某些原因据说不再开源。

该软件主要就是针对我们微信平台使用,并且还提供了各种实用的自动任务的项目,这样就可以让微信使用更加的轻松。它还可以帮助您秒抢红包、防止微信消息撤回、一键转发添加好友以及清理僵尸粉等,可以说是非常的适合微商来进行使用。

微X模块app的功能也是十分的强大,用户们想要的功能在这里这都有,其中我们还内置了十分详细的使用说明。

软件功能

1、防止微信撤回消息。

2、转发微信聊天里的和小视频到朋友圈。

3、转发聊天里的多张(最多9张)到朋友圈。

4、转发语音给朋友。

5、转发收藏内容。

6、转发朋友圈里的内容到自己的朋友圈。

7、分享和小视频。

8、屏蔽群聊成员。

9、自动添加“附近的人”界面的陌生人为好友。

10、自动添加“雷达加朋友”界面的陌生人为好友。

11、自动查找僵尸粉。

12、批量删除好友。

13、批量删除僵尸粉。

14、自动回复。

15、自定义表情最高限额。

16、自动领取红包、转账。

安装

xposed需要手机先获取ROOT权限,

然后安装27直装版,授予ROOT安装更新就可以了,不过有变假砖的风险,就是开不了机,所以要慎重,不过很简单就可以解决

闪飞网络加速为你解答,请采纳或追问

在OPPO手机系统版本上安装xposed框架,安装之前手机需要获取root权限,root权限是指获取手机系统的最高管理员权限,可删减系统文件、卸载系统应用,可能会导致手机死机、重启,甚至变砖,同时也会影响正常的三包服务。

不建议您root手机。

通常玩机root需要先解锁手机的BL(BootLoader)。

OPPO手机目前不支持root。

root可能会导致手机死机、重启,甚至变砖,同时也会影响正常的三包服务,因此不建议您root手机。

如果您要root的话,建议您去申请深度测试,深度测试是官方提供的解锁途径,参与深度测试后,您可以解锁手机的BL,进而修改手机系统,实现刷机、root等各种深度玩机 *** 作。

但是加入深度测试之后同样可能会对手机造成不可预估的影响,建议您谨慎选择是否要加入深度测试。

本回答适用于OPPO全系机型。

在我们的生活中微信是必不可少的一款软件,平时我们可以在微信中聊天交友,分享自己的生活等等,还能使用微信进行支付,微信的出现极大方便了我们的生活。为了帮助大家更好的使用微信,今天小编为的大家带来了一款增强微信功能的xposed模块——微X模块(WeXposed),软件内为用户提供多种功能,包括防止微信撤回消息、转发语音给朋友、转发朋友圈里的内容到自己的朋友圈、分享和小视频等功能,非常方便。还可以进行、文字的一键转发,自定义功能等等,是当前十分受欢迎的一款微信辅助软件。最重要的是这款神器免root不收费自由使用,全部功能任你探索,对于微信用户来说一定要下载试一试。

微X模块

软件特色

1、具有自动抢红包,一键转发朋友圈小视频、、文字,转发语音

2、可自定义微信通知,文字转语音,转码器等功能

3、转mp3为语音,防止别人撤回,防止别人删除朋友圈

4、非群主@所有人,防止被别人@,朋友圈过滤,朋友圈屏蔽

5、能够设置群管理员,自动领取转账,一键集赞,管理微信群

6、小视频录制时间自定义,自动加好友,自动加附近的人

7、自动踢人,自动回复,关键词自动回复,假报语音秒数

8、微X模块清理僵尸粉,一键自动同意好友请求,防止别人炸群

微X模块怎么使用?

当前主流为安卓50以上所使用的框架版本,安卓50以下请获取ROOT权限和完整安装BusyBox后使用旧版安装程序(27及以下非30)直接安装。(文末XP框架大合集里有自寻下载)

今天我和大家分享的是安卓60以上的所使用的XP框架哦~

适用于已解BL锁或无BL锁,已获取ROOT权限,已刷入第三方Recovery的MIUI8的ROM包。首先要安装基于官方版修改的MD设计版XP安装器(文末附件下载MIUI8专用XP框架安装器)

安装后打开,本安装器会自动根据系统和CPU来预选相应可以使用的框架版本,只要点击“安装/更新”,等待下载完成并选择内置存储路径的XposedInstaller文件夹内的框架卡刷包文件即可自动进入第三方Recovery模式进行卡刷框架的 *** 作,之后重启开机等待优化完成即可。

接下来随心DIY的时刻到来了~

XP框架安装完后,这时候我们就可以安装一些你想要玩的插件啦(好激动表情)~

好多最新模块可以在框架搜索~搜索到后点击下载~点击安装~安装后到模块设置里打勾(注意打勾后一定要重启手机哦)一气呵成~你看小编手机上截图的插件是不是爽翻天了?!

软件功能

1、微X模块防止微信撤回消息

2、转发微信聊天里的和小视频到朋友圈

3、转发聊天里的多张(最多9张)到朋友圈

4、转发语音给朋友

5、转发收藏内容

6、转发朋友圈里的内容到自己的朋友圈

7、分享和小视频

8、屏蔽群聊成员

9、自动添加“附近的人”界面的陌生人为好友

10、自动添加“雷达加朋友”界面的陌生人为好友

11、自动查找僵尸粉

12、批量删除好友

13、批量删除僵尸粉

14、自动回复

15、自定义表情最高限额

16、自动领取红包、转账

因为 dexposed 其实是用了dvm和art调用class的方式来做的, 而dvm和art的头文件什么的在android源码中, 所以下一份源码, 具体办法见上一个博文:准备android源码库

最简单的hook

MainActivity中有个test函数, 原来返回11111, 在调用hook之前正常返回的; 调用hook之后, 调用 同一个函数 , 但是却返回22222

public class MainActivity extends Activity

{

static {

SystemloadLibrary("hookdemo");

}

public static final String TAG = "===[hookdemo]===";

@Override

protected void onCreate(Bundle savedInstanceState)

{

superonCreate(savedInstanceState);

setContentView(Rlayoutactivity_main);

String param1 = "param1";

Logd(TAG, "===========before hook test:" + thistest(param1));

hook(MainActivityclass, "test", "(Ljava/lang/String;)Ljava/lang/String;");

Logd(TAG, "===========after hook test:" + thistest(param1));

Logd(TAG, "===========before hook staticTest:" + thisstaticTest(param1));

hook(MainActivityclass, "staticTest", "(Ljava/lang/String;)Ljava/lang/String;");

Logd(TAG, "===========after hook staticTest:" + thisstaticTest(param1));

}

public static String staticTest(String param1)

{

return "staticTest";

}

public String test(String param1)

{

return "11111";

}

public native void hook(Class<> clazzToHook, String methodName, String methodSig);

}

ndk 中的部分

#include <jnih>

#include "logh"

#include "Dalvikh"

void showMethodInfo(const Method method)

{

//看看method的各个属性都是啥:

LOGD("accessFlags:%d",method->accessFlags);

LOGD("clazz->descriptor:%s",method->clazz->descriptor);

LOGD("clazz->sourceFile:%s",method->clazz->sourceFile);

LOGD("methodIndex:%d",method->methodIndex);

LOGD("name:%s",method->name);

LOGD("shorty:%s",method->shorty);

}

/

替换原来java类中test方法的 本地c 函数

args : 原来函数的参数数组

pResult: 返回值

/

static void newTestMethod(const u4 args, JValue pResult,

const Method method, struct Thread self) {

showMethodInfo(method);

// args 是原来函数的参数数组, 原来test函数只有一个String型参数

// 并且要注意, 如果是不是static函数, 下标0 是函数所在类的实例obj

// 在dvm中Object, jni 中的jobject 和 java 中的 Object类 都不是同一个东西

// String类对应StringObject

// 取出参数打印出来看看

StringObject param1 = NULL;

if(dvmIsStaticMethod(method))

param1 = (StringObject)args[0];

else

param1 = (StringObject)args[1];

LOGD("param1:%s",dvmCreateCstrFromString(param1));

//JValue 是个union ,要返回int 就 pResult->i=1; 返回Object对象就 pResult->l = ojb;

// 但是, 在dvm中的Object, jni 中的jobject 和 java 中的 Object类 都不是同一个东西

// 所以, 我们这里使用dvm的函数来创建一个StringObject

pResult->l = dvmCreateStringFromCstr("newTestMethod");

// 一般情况应该使用宏 : RETURN_XXX(result);

return;

}

/

hook 的jni 函数

/

extern "C" JNIEXPORT void JNICALL

Java_com_zhaoxiaodan_hookdemo_MainActivity_hook(JNIEnv env, jobject instance, jobject clazzToHook,

jstring methodName_, jstring methodSig_) {

const char methodName = env->GetStringUTFChars(methodName_, 0);

const char methodSig = env->GetStringUTFChars(methodSig_, 0);

jmethodID methodIDToHook = env->GetMethodID((jclass) clazzToHook,methodName,methodSig);

// 找不到有可能是个static

if(nullptr == methodIDToHook){

env->ExceptionClear();

methodIDToHook = env->GetStaticMethodID((jclass) clazzToHook,methodName,methodSig);

}

if(methodIDToHook != nullptr)

{

//主要在这里替换

//jmethodID 在dvm里实际上就是个Method 结构体

Method method = (Method) methodIDToHook;

//看看method的各个属性都是啥:

showMethodInfo(method);

//设置Method 的 accessFlags 为 枚举型

// ACC_NATIVE 表示 这个method 切换成了一个native 方法

// 这个枚举 在 dalvik/libdex/DexFileh

// 类似:

// ACC_PUBLIC = 0x00000001, // class, field, method, ic

// ACC_PRIVATE = 0x00000002, // field, method, ic

// ACC_PROTECTED = 0x00000004, // field, method, ic

SET_METHOD_FLAG(method, ACC_NATIVE);

//既然是一个native方法, 那就把 nativeFunc 指针指向我们的hook, 用来替换test的新方法

method->nativeFunc = &newTestMethod;

// registersSize是函数栈大小, insSize是参数占用大小

// 如果是native方法, 就没有额外开销了

// 所有开销就是参数占用, 所以把它设置成跟参数占用空间

method->registersSize=method->insSize;

//未知

method->outsSize=0;

}

env->ReleaseStringUTFChars(methodName_, methodName);

env->ReleaseStringUTFChars(methodSig_, methodSig);

}

extern "C" JNIEXPORT jint JNI_OnLoad(JavaVM vm, void reserved)

{

JNIEnv env = nullptr;

if (vm->GetEnv((void) &env, JNI_VERSION_1_6) != JNI_OK) {

return -1;

}

return JNI_VERSION_1_6;

}

运行之后得到:

===[hookdemo]===﹕ ===========before hook:11111

[---hookdemo---]﹕ 1

[---hookdemo---]﹕ Lcom/zhaoxiaodan/hookdemo/MainActivity;

[---hookdemo---]﹕ MainActivityjava

[---hookdemo---]﹕ 334

[---hookdemo---]﹕ test

[---hookdemo---]﹕ LL

[---hookdemo---]﹕ param1:

===[hookdemo]===﹕ ===========after hook:22222

以上就是关于如何用xposed调用别的界面的方法全部的内容,包括:如何用xposed调用别的界面的方法、oppopclm10安装xposed框架、红米7安装XP框架等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9458286.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-28
下一篇2023-04-28

发表评论

登录后才能评论

评论列表(0条)

    保存