<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
    <channel>
                    <title>底层码农</title>
            <link>https://liangyong.fun</link>
        <language>zh-CN</language>
        <generator>Halo 1.4.0-beta.2</generator>
                <item>
                    <title>
                        <![CDATA[xposed hook]]>
                    </title>
                    <link>https://liangyong.fun/archives/xposedhook</link>
                    <description>
                            <![CDATA[<p>以一个手游的脚本为例,</p><pre><code class="language-java">import android.content.*;import android.graphics.*;import android.os.*;import android.widget.*;import de.robv.android.xposed.*;import de.robv.android.xposed.callbacks.*;import java.util.*;import android.app.*;/* 注意：该类不要自己写构造方法，否者可能会hook不成功 * 开发Xposed模块完成以后，关闭bebug以提升性能 * debug模式只需要第一次重启，以后修改hook代码就不用重启了 */public class xposedmain implements IXposedHookLoadPackage {    public static Activity 上下文;    @Override    public void handleLoadPackage(XC_LoadPackage.LoadPackageParam 包名) throws Throwable {        //判断是不是这个软件包名,不判断的话，全部的软件都会被hook        提示(&quot;已hook的包名∶&quot; + 包名.packageName);        if (!包名.packageName.equals(&quot;com.ais.jg.wzry&quot;))            return;        if (上下文 == null) {XposedHelpers.findAndHookMethod(Activity.class, &quot;onCreate&quot;, Bundle.class, new XC_MethodHook() {                    @Override                    protected void afterHookedMethod(MethodHookParam 参数) throws Throwable {super.afterHookedMethod(参数);                        if (上下文 == null) {上下文 = (Activity)参数.thisObject;                            提示(&quot;模块已开启&quot;);                            XposedBridge.log(&quot;得到Activity上下文&quot;);}}});}        //查找和hook方法，演示植入方法        /*XposedHelpers.findAndHookMethod(         &quot;fun.liangyong.HookJiguang.MainActivity&quot;,         包名.classLoader, &quot;onCreate&quot;,          new Object[]{Bundle.class,         new XC_MethodHook(){         @Override         protected void afterHookedMethod(MethodHookParam 参数) throws Throwable {         植入方法();         }         private void 植入方法() {         提示(&quot;我是植入的不会的方法&quot;);         }         }});*/        //查找和hook方法，演示hook boolean方法        /*XposedHelpers.findAndHookMethod(         &quot;fun.liangyong.HookJiguang.MainActivity&quot;//要hook的应用类名         , 包名.classLoader,         &quot;激活&quot;//要hook的方法         //,String.class//函数名，可以注释掉,String就是String.class         , new XC_MethodHook()//回调         {@Override         protected void afterHookedMethod(MethodHookParam 参数) throws Throwable {//拦截之后要做什么         super.afterHookedMethod(参数);         参数.setResult(true);////强制返回boolean为true         }});         */        //查找和hook方法，演示hook String方法        String classPath = &quot;ui.bean.devicescmd.CmdBean&quot;;        String[] methodArrs = {&quot;getDdClientCmd&quot;,&quot;getFailedCmd&quot;,&quot;getLsClientCmd&quot;,&quot;getRfClientCmd&quot;,&quot;getVmClientCmd&quot;};        for(String method :methodArrs){            XposedHelpers.findAndHookMethod(                classPath//要hook的应用类名                , 包名.classLoader,                method//要hook的方法                //,String.class//函数名，可以注释掉,String就是String.class                , new XC_MethodHook()//回调                {@Override                    protected void afterHookedMethod(MethodHookParam 参数) throws Throwable {//拦截之后要做什么                        super.afterHookedMethod(参数);                        参数.setResult(&quot;f&quot;);////替换返回String                    }});        }    }    private void 提示(String 内容) {try {            Toast.makeText(上下文, 内容,  1000).show();        } catch (Exception e) {XposedBridge.log(&quot;提示异常:&quot; + e);}        XposedBridge.log(&quot;免重启方法输出&quot; + 内容);        // 雨 道  汉 化: 实现这个方法    }}</code></pre>]]>
                    </description>
                    <pubDate>2025-12-13T12:09:38+08:00</pubDate>
                </item>
                <item>
                    <title>
                        <![CDATA[雷电模拟器安装xposed框架]]>
                    </title>
                    <link>https://liangyong.fun/archives/雷电模拟器安装xposed框架</link>
                    <description>
                            <![CDATA[<ol><li><p>下载xposed<br /><a href="https://dl-xda.xposed.info/framework/">https://dl-xda.xposed.info/framework/</a></p></li><li><p>找到安卓对应版本，由于雷电模拟器是7.1，搜索百度对应为安卓7.1 sdk</p></li><li><p>下载script.txt<br /><a href="https://forum.xda-developers.com/attachments/script-txt.4489568/">https://forum.xda-developers.com/attachments/script-txt.4489568/</a><br />改名为script.sh</p></li><li><p>解压一下xposed压缩包<br />创建文件夹xposed, 把system文件夹和script.sh放入xposed文件夹</p></li><li><p>输入以下adb命令</p><ul><li><p>adb remount</p></li><li><p>adb push命令</p></li><li><p>adb push xposed路径(拖到cmd即可) /system</p></li><li><p>adb shell</p></li><li><p>su</p></li><li><p>cd /system</p></li><li><p>mount -o remount -w /system</p></li><li><p>sh script.sh</p></li></ul></li></ol><p><a href="https://www.bilibili.com/video/BV1xh411a7h3/">视频教程</a></p>]]>
                    </description>
                    <pubDate>2022-03-04T21:56:50+08:00</pubDate>
                </item>
                <item>
                    <title>
                        <![CDATA[文件下载(已失效、作者已跑路)]]>
                    </title>
                    <link>https://liangyong.fun/archives/file</link>
                    <description>
                            <![CDATA[<pre><code class="language-1.">(https://liangyong.fun/upload/2020/10/%E6%9E%81%E5%85%89%E5%8E%BB%E6%A3%80%E6%B5%8B_v1.0-5caa89ebc27b4063a86e790e7d96e882.apk)2. [模拟遁地商店](https://liangyong.fun/upload/2021/03/moni1_1.0-1e18ec3254a94099b7ea0e69fabf94ad.apk)3. [模拟遁地桌面](https://liangyong.fun/upload/2021/03/moni2_1.0-91ec8b9c60cf47ddbfcaa900e8ca0d75.apk)4. [Xposed框架](https://liangyong.fun/upload/2021/03/Xposed-44e5dbed36af4510a4b4e1d75d0267d5.apk)5. [ES文件浏览器](https://liangyong.fun/upload/2021/03/ES%E6%96%87%E4%BB%B6%E6%B5%8F%E8%A7%88%E5%99%A8_4.2.1.9-5ce392ae746b4bd59a49ed9953205207.apk)6. [极光王者荣耀2021年3月24日最新](https://liangyong.fun/upload/2021/03/%E6%9E%81%E5%85%89%E7%8E%8B%E8%80%85%E8%8D%A3%E8%80%802021%E5%B9%B43%E6%9C%8824%E6%97%A5%E6%9C%80%E6%96%B0-356dd9e9268e45fea657e821d44965ac.apk)7. [vmos 破解版](https://liangyong.fun/upload/2021/03/vmos_pj_1.1.17_signin-77a76d883c9c473488eee673c95a89d2.apk)# 使用方法## [雷电模拟器](#jump1)## [VMOS PRO](#jump2)### &lt;span id=&quot;jump1&quot;&gt;雷电模拟器&lt;/span&gt;1. 下载以上1-6全部软件安装 6为极光的脚本,有的话就不用再重新装了2. 打开Xposed 安装框架,并在模块中打开极光去检测的开关![1](https://liangyong.fun/upload/2021/03/1-e1b5fde95b7141619a6d2f7a5f4a1610.jpeg)![2](https://liangyong.fun/upload/2021/03/2-0a057388d03a423097d0b9e8eaabf8c1.jpeg)3. 打开ES文件管理器,点击左上角3道杠,打开root功能以便操作系统软件,如下图![3](https://liangyong.fun/upload/2021/03/3-9b0d7858c1e44ce8a759a82fd27ad338.jpeg)4. 点击ES文件管理器主页的应用,切换到系统应用,点击右上角放大镜 搜索'雷电',将搜索出的两个应用 长按、勾选、卸载 .最后重启模拟器即可![4](https://liangyong.fun/upload/2021/03/4-29c8c373477a44749c431bc91a1633a0.jpeg)![5](https://liangyong.fun/upload/2021/03/5-508ada30379345b680e6d1fe57941aa0.jpeg)![6](https://liangyong.fun/upload/2021/03/6-a1296556fa9f491396fd800556910cba.jpeg)![7](https://liangyong.fun/upload/2021/03/7-048f5878c29c484fa35808177a292979.jpeg)5. 如若还提示红手指,查看是否存在ldsdk文件夹,删除即可 ![8](https://liangyong.fun/upload/2021/03/8-4a71b9982fe148f59c93d3d957b82a65.jpeg)### &lt;span id=&quot;jump2&quot;&gt;VMOS PRO&lt;/span&gt;7为vmos破解版,登录上去即为会员,可下载会员ROM.注:**经酷友反馈,7.1的ROM容易被王者荣耀检测,易封号,建议使用5.1的ROM来进行挂机操作,使用5.1的ROM时,需将安卓版本号改为7.1,具体操作见[这里](https://jingyan.baidu.com/article/455a99504deb8fa167277869.html)(改5.1.2为7.1.2)**1-3步同雷电模拟器的[1-3步](#jump1)4. 修改如下图所示的文件夹名称为其他任意名称,如'remox1'![9](https://liangyong.fun/upload/2021/03/9-c1b98736278b497987d27969e7b1beca.png)随后重启即可</code></pre>]]>
                    </description>
                    <pubDate>2021-03-27T22:24:40+08:00</pubDate>
                </item>
                <item>
                    <title>
                        <![CDATA[JS 数组根据属性实现类似sql的group by 分组]]>
                    </title>
                    <link>https://liangyong.fun/archives/js数组根据属性实现类似sql的groupby分组</link>
                    <description>
                            <![CDATA[<pre><code>groupBy = function ( array , f ) {    var groups = {};    array.forEach( function( o ) {        var group = JSON.stringify( f(o) );        groups[group] = groups[group] || [];        groups[group].push( o );    });    return Object.keys(groups).map( function( group ) {        return groups[group];    });}var  newFetchData = groupBy(fetchData, function(item){    return [要分组的属性];});</code></pre>]]>
                    </description>
                    <pubDate>2020-09-25T15:06:15+08:00</pubDate>
                </item>
    </channel>
</rss>