dubsmash音乐素材获取

数据采用https/aes加密传输,给分析带来不小麻烦,最后采用root客户端解决:

    int jsoncnt=0;
    String lang="";
    public void handleLoadPackage(LoadPackageParam lpparam) throws Throwable {
        //        XposedBridge.log("lzf Loaded app? " + lpparam.packageName);
        if (!lpparam.packageName.contains("com.mobilemotion.dubsmash"))
            return;

        XposedBridge.log("lzf Loaded app: " + lpparam.packageName);
        
        findAndHookMethod("com.android.volley.Request", lpparam.classLoader, "getUrl",
                new XC_MethodHook() {
                    @Override
                    protected void afterHookedMethod(XC_MethodHook.MethodHookParam param) throws Throwable {
                        String ret = (String) param.getResult();
                        //                                Log.i("lzf request:", param.thisObject.toString());
                        Log.i("lzf url:", (String) ret);
                    }
                });
        

        XposedHelpers.findAndHookConstructor(Class.forName("org.json.JSONObject"), String.class,
                new XC_MethodHook() {
                    @Override
                    protected void afterHookedMethod(XC_MethodHook.MethodHookParam param) throws Throwable {
                        saveJson((String) param.args[0]);
                        //Log.i("lzf json:", (String) param.args[0]);
                    }
                });
        findAndHookMethod("com.mobilemotion.dubsmash.requests.DiscoverRequest", lpparam.classLoader, "setLanguages", String.class,
                new XC_MethodHook() {
                    @Override
                    protected void afterHookedMethod(XC_MethodHook.MethodHookParam param) throws Throwable {
                        String langjson = (String) param.args[0];
                        if(langjson==null) return;
                        String [] lans=langjson.split("\"");
                        if(lans.length<3) return;
                        lang = lans[3];


                    }
                });

        XposedHelpers.findAndHookConstructor(Class.forName("org.json.JSONArray"), String.class,
                new XC_MethodHook() {
                    @Override
                    protected void afterHookedMethod(XC_MethodHook.MethodHookParam param) throws Throwable {
                        saveJson((String)param.args[0]);
                        //Log.i("lzf json:", (String)param.args[0]);
                    }
                });
    }


    private void saveJson(String arg) {
        if(arg==null) return;
        if(!arg.startsWith("{\"creator\"") && !arg.startsWith("{\"results\"") &&
                !arg.startsWith("[{\"type\"") && !arg.startsWith("{\"page\"") && !arg.startsWith("{\"paginate_by\"")
                ) {
            Log.i("lzf", "ignore json:"+arg);
            return;
        }


        try {
            File basedir = new File("/sdcard/dubsmash/"+lang);
            if(!basedir.exists())
            {
                basedir.mkdirs();
            }
            File sf = new File(basedir, String.format("%05d", jsoncnt)+".json");
            OutputStream ostream = new FileOutputStream(sf);
            OutputStreamWriter osw = new OutputStreamWriter(ostream);
            osw.write(arg, 0, arg.length());
            osw.flush();
            osw.close();
            ostream.close();
            jsoncnt+=1;
        } catch (Exception e) {
            e.printStackTrace();
        }
    }


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值