实现Xposed的Rpc远程调用 代码实现

楼主 管理员 神奇 2021-9-27 165

实现Xposed的Rpc远程调用
某些App的加解密算法,分析起来十分费劲,分析下来也十分耗时,基于xposed的话,可以知道代码调用流程,我们只需传参进去,hook对应方法或者调用内部某个函数,则可以获取加密之后的sign、key、cookie等
一、搭建 Android 端 Server1、NanoHTTPD介绍
官方介绍:NanoHTTPD is a light-weight HTTP server designed for embedding in other applications, released under a Modified BSD licence.(NanoHTTPD是一个轻量级的 HTTP 服务器,设计用于嵌入其他应用程序,在修改后的 BSD 许可下发布 by Google翻译)Github地址:https://github.com/NanoHttpd/nanohttpd
2、引入代码两种方式,第一种把官网的代码clone 下来,然后 copy 放到工程;第二种使用别人适配过的库。博主这里使用第二种方式,更加快捷些。在gradle里面添加依赖implementation 'org.nanohttpd:nanohttpd:2.2.0'3、启动服务//自定义一个Server继承NanoHTTPDpublic class AndroidWebServer extends NanoHTTPD { public AndroidWebServer(int port) throws IOException { super(port); } @Override public Response serve(IHTTPSession session) { String msg = "<html><body><h1>Hello AutoPy</h1>\n"; Map<String, String> parms = session.getParms(); if (parms.get("code") == null) { msg += "<form action='?' method='get'>\n<p>Your code: <input type='text' name='code'></p>\n" + "</form>\n"; } else { msg += "<p>Hello, " + parms.get("code") + "!</p>"; return newFixedLengthResponse(msg + "</body></html>\n"); } return newFixedLengthResponse(msg + "</body></html>\n"); }}//启动服务new AndroidWebServer().start();二、搭配Xposed插件使用1、hook时机在 ApplicationonCreate 方法,进行注入,同时启动服务XposedHelpers.findAndHookMethod(Application.class, "onCreate", 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); String currentProcessName = ProcessUtil.getCurrentProcessName(Ct); log("进程:" + currentProcessName); //启动Server if ("com.xxx.xxx".equals(currentProcessName)) { // 监听 8000 端口 new AndroidWebServer(8000); } else { // 对于多进程,监听进程ID new AndroidWebServer(Process.myPid()); } } });2、adbforward手机安装完插件之后,确保手机usb连接上电脑(wifi模式可以不连),然后验证手机是否连接上电脑,可执行以下adb命令:adb devices执行adb forward 命令
adb forward的细节:https://blog.csdn.net/u013553529/article/details/80036227
下图,摘抄上面文章adb forward tcp:8000 tcp:80003、验证Server在手机和电脑在同一个局域网的情况下,打开网址:http://127.0.0.1:8000/ ,如果正常显示一个网页 ,则配置成功三、搭配花生壳的内网穿透搭配花生壳的内网穿透,实现外网访问(也就是别人电脑也能访问你的接口),记住选择 HTTP 的映射类型,此时需要给 6 Rmb 的认证费用,其他免费。对于我这种需求简单的,目前测试还是完全够用。配置完成之后,会给你一个外网域名,你就可以访问你的接口了验证外网域名
这家伙太懒了,什么也没留下。
最新回复 (0)
返回
发新帖