l123456789jy 发表于 2018-8-8 13:26

Xposed开发实践(破解匆匆下载器VIP限制)

本帖最后由 l123456789jy 于 2018-8-14 13:18 编辑

一直没有找到合适的种子下载器,偶尔看到一个`匆匆下载器`,试了下解析成功率相当高,但是是要付费的,我这种穷逼,拿来的钱,所以就打算逆向下,看看

#### 第一步分析
- 打开APKTool,分析改APK,结果发现居然加密,是用梆梆加密的
- 关于如何破解梆梆加密请看我这篇文章(https://www.jianshu.com/p/955c0b1507c7 "App“梆梆加固”破解")

#### 第二部开始分析,关键代码

- 我们把源码dum出来之后,使用 dexjar,打开
![](http://ww1.sinaimg.cn/large/9f723435ly1fu27ud1a7tj20vh0j840s.jpg)

- 源码全部看到啦
- 我们通过`ACTIVITY TOP`获取播放界面的完整类名,和路径
![](http://ww1.sinaimg.cn/large/9f723435ly1fu27x8od2oj20x70inneh.jpg)
这里我么就看到了,他的包名,和当前Activity的完整路径,接下在我们就去找`AdvancedPlayActivity`这个类

- 然后我们根据他的提示语去搜索,找到关键代码
这个是游客登录的限制逻辑
![](http://ww1.sinaimg.cn/large/9f723435ly1fu27zkde0pj20ur0g3mxe.jpg)

这个是vip逻辑的限制

![](http://ww1.sinaimg.cn/large/9f723435ly1fu280imohdj20uu08874d.jpg)

- 有了关键代买,我们就好办了,我们分析,他这个逻辑都是在一个叫做,`startPositionTimer` 方法里面被调用,我们只需要hook住这个方法,替换这个方法,替换成一个空实现不就ok了


```java
public class Man implements IXposedHookLoadPackage {

private static final String FILTER_PKGNAME = "com.congcong.dl.application";
private static final String BAI_DU_PKGNAME = "com.congcong.dl.application.widget.BDCloudVideoView";
private static final String AD_PKGNAME = "com.congcong.dl.application.cc.bar.AdvancedMediaController";
private static final String LOG_PKGNAME = "android.util.Log";
@Override
public void handleLoadPackage(final LoadPackageParam loadPackageParam) throws Throwable {
    Log.e("handleLoadPackage", loadPackageParam.packageName);
    if (FILTER_PKGNAME.equals(loadPackageParam.packageName)) {

      //这里是为了解决app多dex进行hook的问题,Xposed默认是hook主dex
      XposedHelpers
          .findAndHookMethod(Application.class, "attach", Context.class, new XC_MethodHook() {
            @Override
            protected void afterHookedMethod(MethodHookParam param) throws Throwable {
            Log.e("handleLoadPackage", "afterHookedMethod");
            final ClassLoader cl = ((Context) param.args).getClassLoader();
            XposedHelpers.findAndHookMethod("com.congcong.dl.application.cc.AdvancedPlayActivity", cl, "onCreate", Bundle.class, new XC_MethodHook() {
                @Override
                protected void afterHookedMethod(MethodHookParam param) throws Throwable {
                  Log.e("handleLoadPackage", "onCreate");
                  //获取当前hook的activity
                  final Activity thisObject = (Activity) param.thisObject;
                  Uri data = thisObject.getIntent().getData();
                  Log.e("handleLoadPackage",data.toString());
                  final Class<?> aClass = cl.loadClass(AD_PKGNAME);
                  //hook AdvancedMediaController 中 startPositionTimer方法并且替换为空实现
                  XposedHelpers.findAndHookMethod(aClass, "startPositionTimer",
                      new XC_MethodReplacement() {
                        @Override
                        protected Object replaceHookedMethod(MethodHookParam methodHookParam)
                            throws Throwable {
                        Toast.makeText(thisObject,"hook,成功!",Toast.LENGTH_SHORT).show();
                        Log.e("handleLoadPackage", "replaceHookedMethod");
                        return null;
                        }
                      });
                }
            });

            }
          });
    }


}
}
```

应广大群众要求,想要使用下载功能,看了下,就把这功能实现了,思路很简单,就是hook他的vip,属性就可以了,然后替换他的登陆方法,放出源码
//================================================
final Class<?> aClass = cl.loadClass("com.congcong.dl.application.cc.ShowListActivityQ");
XposedHelpers.findAndHookMethod(aClass, "getlogin",
      new XC_MethodReplacement() {
      @Override
      protected Object replaceHookedMethod(MethodHookParam methodHookParam)
            throws Throwable {
          Toast.makeText(((Activity) methodHookParam.thisObject),"hook,成功!",Toast.LENGTH_SHORT).show();
          //通过查看源码发现他标记用户的vip标识是vip=1是0不是,所以动态修改他的属性就行了
          XposedHelpers.setObjectField(methodHookParam.thisObject,"vip","1");
          Log.e("handleLoadPackage", "replaceHookedMethod");
          return null;
      }
      });

}



这样就可以无限制的看了,代码已经上传github[地址](https://github.com/l123456789jy/GradleTask "地址"),在xposted 里面搜索匆匆就可以使用该插件了,插件2.0已经可以使用下载功能了.(匆匆已经改名,估计作者也逛论坛,毕竟人家还要盈利的,思路给了,后续自己破解吧!)

Tankes 发表于 2018-8-8 18:04

解释的不错啊,很赞!

zrssz 发表于 2018-8-10 03:35

本帖最后由 zrssz 于 2018-8-10 06:49 编辑

https://wap.shouji.com.cn/down/34579.html
这个可以下载种子可以下载磁力

https://wap.shouji.com.cn/down/31847.html
这个可以下载网页视频.我用的是4.0版本.可以嗅探网页视频.浏览器一般不能用安卓webview要用谷歌webview才能嗅探[夸克浏览器可以.谷歌浏览器我还是旧版可以新版就不知道了].如果你是安卓5.0及以上这软件刚装上去好像没反应.你要激活放一两个月好像就有作用了


这个是下载重定向:我用1.15版本无界面可以接管系统下载器.软件高版本好像不起作用5.0及以上版本.新版谷歌浏览器没办法接管.旧版还可以
https://wap.shouji.com.cn/down/34579.html
后两个是xposed模块.

jasagen 发表于 2018-8-8 13:35

那么打包好的apk文件呢?:lol:lol:lol

玩物丧智 发表于 2018-8-8 13:37

{:1_921:}高手无处不在!

多幸运遇见baby 发表于 2018-8-8 13:40

你这写得不适合小白呢

wuyy 发表于 2018-8-8 13:43

感谢分享 ,值得学习

thornfish 发表于 2018-8-8 13:57

简介明了很OK

凌乱的思绪 发表于 2018-8-8 14:03

支持原创,感谢楼主

KSTG_茶飘香 发表于 2018-8-8 14:46

简介明了,原理差不多 了。

momide 发表于 2018-8-8 15:18

感谢楼主分享,已学会

魂尘墨客 发表于 2018-8-8 16:22

感谢楼主,学会了
页: [1] 2 3 4 5 6 7
查看完整版本: Xposed开发实践(破解匆匆下载器VIP限制)