HermesAgent是virjar大神写的一个Android群控系统,基于xposed+RPC真现办法级其它群控。HermesAgent是hermes系统的客户端模块,他是种植正在手机里面的一个agent,同时也是一个xposed的模块插件。
一、本理agent自身启动了一个service,agent插件模块将会主动注册钩子函数,并且和service通信。Android方法外部乞求可以通过露出正在agent上面的一个http端口,和agent通信,而后agent和目的apkRPC。 如此真现外部乞求到任何一个app的任何罪能的外部挪用。
二、运用教程 2.1 拆置下载hermesagent名目源码,编译后拆置得手机上,而后正在Xposed模块界面开启hermesagent模块,重启手机既可。
2.2 代码编写原教程以挪用我前面写的Xposed Hook教程《Xposed框架Hook Demo真例教程》中MainActivity类中的toastMsg办法为例
正在hookagent包下新建类TestAgent,真现AgentCallback接口,并重写targetPackageName、needHook、invoke、onXposedHotLoad四个办法。
targetPackageName办法返回目的APK包名,此处为”com.hyb.hookdemo”;
needHook办法返回一个boolean类型,一个app可能有多个进程,当进程为你须要hook的进程时,返回True;
invoke办法为远程挪用时执止的办法,可依据你乞求中传入的参数反射挪用你hook到的目的办法,归正办法的执止结因;
onXposedHotLoad办法内部可编写详细的hook代码,可对目的办法停行hook,并存储办法对象和类对象,以便invoke办法中挪用;
详细代码见文章最后。
2.3 测试ps:假如挪用后,返回异样,则可能是未hook到办法招致办法对象为空,你须要如今HookDemo步调中点击按钮挪用一次,使Xposed能Hook到办法并保存办法。
三、最末代码 package com.virjar.hermes.hermesagent.hookagent; import com.virjar.hermes.hermesagent.aidl.InvokeRequest; import com.virjar.hermes.hermesagent.aidl.InvokeResult; import com.virjar.hermes.hermesagent.plugin.AgentCallback; import com.virjar.hermes.hermesagent.plugin.SharedObject; import org.apache.commons.lang3.StringUtils; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import de.robv.android.xposed.XC_MethodHook; import de.robv.android.xposed.XposedHelpers; import de.robv.android.xposed.callbacks.XC_LoadPackage; /** * HookDemo Test * * @author HuaYunBin */ public class TestAgent implements AgentCallback { private Object toastMsgMethodObject; private Method toastMsgMethod; @Override public String targetPackageName() { return "com.hyb.hookdemo"; } @Override public boolean needHook(XC_LoadPackage.LoadPackageParam loadPackageParam) { return StringUtils.equalsIgnoreCase(loadPackageParam.processName, "com.hyb.hookdemo"); } @Override public InvokeResult invoke(InvokeRequest invokeRequest) { String returnMsg = null; try { returnMsg = (String) toastMsgMethod.invoke(toastMsgMethodObject); } catch (IllegalAccessException | InvocationTargetException e) { e.printStackTrace(); } return InvokeResult.success(returnMsg, SharedObject.context); } @Override public void onXposedHotLoad() { ClassLoader classLoader = SharedObject.loadPackageParam.classLoader; try { Class clazz = classLoader.loadClass("com.hyb.hookdemo.MainActivity"); XposedHelpers.findAndHookMethod(clazz, "toastMsg", new XC_MethodHook() { @Override protected void beforeHookedMethod(MethodHookParam param) throws Throwable { super.beforeHookedMethod(param); } @Override protected void afterHookedMethod(MethodHookParam param) throws Throwable { super.afterHookedMethod(param); toastMsgMethodObject = param.thisObject; toastMsgMethod = (Method) param.method; } }); } catch (ClassNotFoundException e) { e.printStackTrace(); } } }【置顶】旺财宝盒独家揭秘:菜鸟如何快速在网上赚到第一桶金!...
浏览:6273 时间:2022-08-25上海“逆行”期货人:分批封控蕴含交易技巧,交易员群信息“几何...
浏览:378 时间:2022-04-072023离散行业自动化(逻辑算法)六部十层电梯程序设计思路与...
浏览:14 时间:2024-05-14债券业务中联席主承与牵头主承的法律责任差异 债券业务中 ...
浏览:20 时间:2024-05-14