dubsmash音乐素材获取
2015-08-27 11:48
288 查看
数据采用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(); } }
相关文章推荐
- Download excel file from JAX-RS
- C++ Explicit Constructors(显式构造函数)
- spm打seajs压缩包摘抄
- Android UI设计——Spinner控件
- Job流程:Shuffle详解
- SAP的战略企业管理功能介绍
- 如何把pdf转换成txt格式的文件
- Chapter 10. Generic Algorithms
- u启动u盘启动盘制作工具制作U盘启动盘教程
- ImageLoder的简单使用
- java-captcha实现验证码(二)
- import javax.servlet.jsp.JspException; import javax.servlet.jsp.tagext.TagSupport;这两行报错
- Cmake——CMake+SVN或Hg生成版本号
- 每个人都应该懂点函数式编程
- 【学习笔记2】Logistic Regression
- C语言中正切的相关函数总结
- demo2 JAVA变量
- 手持移动端特殊链接:打电话,发短信,发邮件
- 【Memphis】非旋转Treap及可持久化[Merge,Split]
- 3D动画