某笛把好几个老APP弄成了聚合词典APP

看了下上面的讨论,求助千问大师傅,弄了一个frida脚本。现在只需利用autox.js脚本在索引页点击词条来模拟查词,就能得到html内容了。 脚本会自动以 {uwid}.html 格式将html写入应用私有目录。

Java.perform(function () {
    var targetClass = "cn.dictcn.android.digitize.module.dict.ui.WordPageFragment$d";
    var dictDataClassName = "cn.dictcn.android.digitize.pojo.DictData";

    var WordPageFragmentD = Java.use(targetClass);
    var File = Java.use("java.io.File");
    var FileWriter = Java.use("java.io.FileWriter");
    var JString = Java.use("java.lang.String");

    console.log("[*] Hooking invokeSuspend in class: " + targetClass);

    WordPageFragmentD.invokeSuspend.implementation = function (param) {
        if (param !== null && typeof param === 'object') {
            try {
                var className = param.getClass().getName();

                // 只处理 DictData 类型
                if (className === dictDataClassName) {
                    var fieldList = param.getClass().getDeclaredFields();
                    var uwid = null;
                    var wordData = null;

                    for (var i = 0; i < fieldList.length; i++) {
                        var field = fieldList[i];
                        field.setAccessible(true);
                        var name = field.getName();
                        var value = field.get(param);

                        if (name === "uwid" && value !== null && value.toString) {
                            uwid = value.toString();
                        } else if (name === "wordData" && value !== null && value.toString) {
                            wordData = value.toString();
                        }
                    }

                    if (uwid && wordData) {
                        // 构建文件路径
                        var dirPath = "/data/user/0/cn.dictcn.android.digitize.wys_lwddgjyycd_8027/files/";
                        var filePath = dirPath + uwid + ".html";

                        // 创建目录(如果不存在)
                        var dir = File.$new(dirPath);
                        if (!dir.exists()) {
                            dir.mkdirs();
                        }

                        // 将 JS 字符串转为 Java String
                        var javaWordData = JString.$new(wordData);

                        // 写入文件
                        var writer = FileWriter.$new(filePath);
                        writer.write(javaWordData, 0, javaWordData.length());
                        writer.close();
                    }
                }
            } catch (e) {
                console.error("[ERROR] 提取字段失败:", e.message);
            }
        }

        return this.invokeSuspend(param);
    };
});

看前面讨论,说朗文这本词典在模拟器上打不开。我在mumu上测试,可以在模拟器上使用。
图片、例句发音都可以从html里提取到明文地址。
没购买这本词典,只能查几个词体验了一下,暂未发现问题。如果有效的话,通杀haidi的词典。

示例html:
587741461.7z (1dianji

2 个赞