茄子视频破解
2019-08-26 11:30:22 Author: bbs.pediy.com(查看原文) 阅读量:235 收藏

好像是误触广告还是网站弹窗下载了这个apk,额,刚好电脑配置好环境,那就看看吧。

package com.cm.playera.d;

import android.content.ClipboardManager;
import android.text.TextUtils;
import com.blankj.utilcode.util.AppUtils;
import com.blankj.utilcode.util.DeviceUtils;
import com.cm.playera.PlayerApplication;
import com.cm.playera.activities.MainActivity;
import com.cm.playera.beans.PopBean;
import com.cm.playera.beans.RegistOrLoginBean;
import com.cm.playera.beans.TabBean;
import com.cm.playera.beans.Version;
import com.cm.playera.net.a.b;
import com.cm.playera.net.retrofit.ApiService;
import com.cm.playera.net.retrofit.c;
import com.cm.playera.utils.h;
import io.reactivex.af;
import io.reactivex.h.a;
import io.reactivex.x;
import java.util.HashMap;

/* compiled from: MainPresenter */
public final class i extends a<MainActivity> {
    public final void a(b<PopBean> bVar) {
        ((ApiService) c.a().a("http://www.ccabcc.com/", ApiService.class)).getPopInfo().subscribeOn(a.b()).observeOn(io.reactivex.android.b.a.a()).compose(((MainActivity) a()).bindToLifecycle()).subscribe((af<? super T>) new j<Object>(this, bVar));
    }

    public final void b(b<RegistOrLoginBean> bVar) {
        x xVar;
        ClipboardManager clipboardManager = (ClipboardManager) PlayerApplication.globalApp.getSystemService("clipboard");
        String str = "";
        try {
            if (clipboardManager.hasPrimaryClip()) {
                str = clipboardManager.getPrimaryClip().getItemAt(0).getText().toString();
            }
        } catch (Exception unused) {
        }
        ApiService apiService = (ApiService) c.a().a("http://www.ccabcc.com/", ApiService.class);
        HashMap hashMap = new HashMap();
        if (!TextUtils.isEmpty(str) && str.length() < 10) {
            hashMap.put("inviteFrom", str);
        }
        hashMap.put("channel", PlayerApplication.CHANNEL);
        hashMap.put("appversion", String.valueOf(AppUtils.getAppVersionCode()));
        hashMap.put("packageName", AppUtils.getAppPackageName());
        hashMap.put("equipment", DeviceUtils.getAndroidID());
        try {
            xVar = apiService.regist(h.a(hashMap));//调用regist接口
        } catch (Exception e) {
            e.printStackTrace();
            xVar = null;
        }
        xVar.subscribeOn(a.b()).observeOn(io.reactivex.android.b.a.a()).compose(((MainActivity) a()).bindToLifecycle()).subscribe((af<? super T>) new k<Object>(this, bVar));
    }

    public final void c(b<TabBean> bVar) {
        ((ApiService) c.a().a("http://www.ccabcc.com/", ApiService.class)).getTabList().subscribeOn(a.b()).observeOn(io.reactivex.android.b.a.a()).compose(((MainActivity) a()).bindToLifecycle()).subscribe((af<? super T>) new l<Object>(this, bVar));
    }

    public final void d(b<Version> bVar) {
        ApiService apiService = (ApiService) c.a().a("http://www.ccabcc.com/", ApiService.class);
        HashMap hashMap = new HashMap();
        StringBuilder sb = new StringBuilder();
        sb.append(AppUtils.getAppVersionCode());
        hashMap.put("version", sb.toString());
        apiService.checkApkVersion(h.a(hashMap)).subscribeOn(a.b()).observeOn(io.reactivex.android.b.a.a()).compose(((MainActivity) a()).bindToLifecycle()).subscribe((af<? super T>) new m<Object>(this, bVar));
    }
}

package com.cm.playera.utils;

import com.blankj.utilcode.util.LogUtils;
import java.util.HashMap;
import java.util.Map.Entry;
import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESedeKeySpec;
import javax.crypto.spec.IvParameterSpec;

/* compiled from: EncryptionUtils */
public final class h {
    public static HashMap<String, String> a(HashMap<String, String> hashMap) {
        StringBuffer stringBuffer = new StringBuffer();
        int i = 0;
        for (Entry entry : hashMap.entrySet()) {
            if (i == 0) {
                stringBuffer.append((String) entry.getKey());
                stringBuffer.append("=");
                stringBuffer.append((String) entry.getValue());
            } else {
                stringBuffer.append("&");
                stringBuffer.append((String) entry.getKey());
                stringBuffer.append("=");
                stringBuffer.append((String) entry.getValue());
            }
            i++;
        }
        StringBuilder sb = new StringBuilder("NetWorkLogger====params----->");
        sb.append(stringBuffer.toString());
        LogUtils.e(sb.toString());
        HashMap<String, String> hashMap2 = new HashMap<>();
        String str = "info";//抓到的数据包为info=,所以不用管map的格式化,猜测就是键值对形式,进行解密。
        try {
            String stringBuffer2 = stringBuffer.toString();
            hashMap2.put(str, e.a(instance.doFinal(stringBuffer2.getBytes("utf-8"))));
        } catch (Exception e) {
            e.printStackTrace();
        }
        return hashMap2;
    }
}

数据包

http://www.ccabcc.com/player/user/regist

POST /player/user/regist HTTP/1.1
version: 101
packageName: com.cm.playera
channel: qiezi_d
equipment: 78390e45a36e75a0
Content-Type: application/x-www-form-urlencoded
Content-Length: 139
Host: www.ccabcc.com
Accept-Encoding: gzip, deflate
User-Agent: okhttp/3.12.0
Connection: close

info=BeWvoomUvf3IrYshtGNzqEaxcuHWWjo7c2%2F1Z%2B0yNpV4WPtUkpEC461HC8s8vJpbF2qq8RymERp4puycZlSfzKEXDTCtuIAEDuUlrZ1da%2B%2F4FLeNd%2BC4jQ%3D%3D

url解码后:
BeWvoomUvf3IrYshtGNzqEaxcuHWWjo7c2/1Z+0yNpV4WPtUkpEC461HC8s8vJpbF2qq8RymERp4puycZlSfzKEXDTCtuIAEDuUlrZ1da+/4FLeNd+C4jQ==
解密后:
equipment=78390e45a36e75a0&appversion=101&channel=qiezi_d&packageName=com.cm.playera


HTTP/1.1 200 
Server: nginx
Date: Sun, 25 Aug 2019 11:01:46 GMT
Content-Type: text/plain;charset=UTF-8
Content-Length: 460
Connection: close

5hoOJdBrmkNn/Kl6VqglTbBCT79RA7ejMxQZjzyj95XG1ZJgGTN9N0jGPTzaWP3HTqJ5IBVi7ZDVFnxIMDygW5aWoCEzcAePleEAUbX12koA80/ZI8Qk5r22gf9QQDxWkgYtuUW81UwoSIG5hG9ud1APKhnAmArwA0sLTnM7/DfFXAgyVpDrnB2fFZnvcRWG/PLvb9jY3qTHbLLwVMqny7rs63Nvmkam8NIIE5wGBuIMnqMqGQs8d8TYabBJI9trH+dXpmcx1JPsQRmp0OFpx4hSMoCmdBnqYBnWyO/7Ahe9m6P97CUuhlR9CsbGUHxthH/v9FM3vBYn4ZiublFRu3qNlt2d8tVzYfHCQ/pYOUwQwTFehcj+ciFadgDylufCqfgXZLU8f0zNmCEQOJBAY27veJOnzNM9np8Ty0S2g9mH91+7cIw6rGPhKEyo5RWlKd3ChftgCwQ=

解密后:
{"msg":"注册成功","code":0,"data":{"lastTime":1566730906,"createtime":1566721408,"img":"","rqcodeUrl":"","level":"路人","num":0,"sex":0,"equipment":"78390e45a36e75a0","todayNum":3,"isVip":0,"inviteFrom":"","vipTime":"","phone":"1c73547d6b12de9f","inviteCode":"EAFUGTRO","nickname":"1c73547d6b12de9f","inviteTotal":0,"id":1076854}}

猜测字段equipment为注册id的关键,所以修改该值,加密发包。

POST /player/user/regist HTTP/1.1
version: 101
packageName: com.cm.playera
channel: qiezi_d
equipment: 78390e45a36e75a0
Content-Type: application/x-www-form-urlencoded
Content-Length: 125
Host: www.ccabcc.com
Accept-Encoding: gzip, deflate
User-Agent: okhttp/3.12.0
Connection: close

info=BeWvoomUvf3IrYshtGNzqEaxcuHWWjo7EqQHTjH6pa6T5qwDrrZSmmKZeC4/hpSzwHxL1WBlpHuyamQXPPWRem7nwUu4lAa3dQETUr7hAc+1ANQG09hLPQ==

明文:
equipment=78390e45a36e75a1&appversion=101&channel=qiezi_d&packageName=com.cm.playera


HTTP/1.1 200 
Server: nginx
Date: Sun, 25 Aug 2019 12:02:57 GMT
Content-Type: text/plain;charset=UTF-8
Content-Length: 460
Connection: close

5hoOJdBrmkNn/Kl6VqglTbBCT79RA7ejMxQZjzyj95XG1ZJgGTN9N0jGPTzaWP3HTqJ5IBVi7ZCXyPK0ns2lMWtGA/VG33NwcPKMKak3ZHoa2XO6BVDImBEY9tdkXdbBfOo/rnnbYk38iTVHOdTYsn6Wv9DJdF8LfTNhEG239jfn4n0D8H1NqlQciqNicj5inLgo4eq26/3BoliHx2RdCQzQU5RigsaMJ0CbWLYppKuMy5qNCpFnNZ2dVaQPGbKyaIjUL3nHNwM2Sv3iA3+ZO7JRxk/JHDlmGam4G+nI53v/Xpmfo4OqUQw3a/Ncb2kJQLDRIXJQ4I8NPrmKv5U324rQOY7XNdKEWywggwH4imgUGP2sqlbRIQxC5p1m9yx0NAi2Zp15/Hfs6m/oGIiwTrXytog38OAPu2FjCDAG1gLY2WCmSMp4QJTcW4ZJ9c3xBPoqpMUoUaw=

解密后:
{"msg":"注册成功","code":0,"data":{"lastTime":1566734577,"createtime":1566734577,"img":"","rqcodeUrl":"","level":"路人","num":3,"sex":0,"equipment":"78390e45a36e75a1","todayNum":3,"isVip":0,"inviteFrom":"","vipTime":"","phone":"b545a84096a732cd","inviteCode":"KXQSISBB","nickname":"b545a84096a732cd","inviteTotal":0,"id":1076873}}

POST /player/user/regist HTTP/1.1
version: 101
packageName: com.cm.playera
channel: qiezi_d
equipment: 78390e45a36e75a0
Content-Type: application/x-www-form-urlencoded
Content-Length: 125
Host: www.ccabcc.com
Accept-Encoding: gzip, deflate
User-Agent: okhttp/3.12.0
Connection: close

info=BeWvoomUvf3IrYshtGNzqEaxcuHWWjo7VGN5j+/tZ60l3AUCuQWH8CrJiVvOa+jEvF66PHImcjEQ4zXLz/7Q6cNOrbwyzXPP3v0QFM4XjmV2ZjjnKDai6w==

明文:
equipment=78390e45a36e75a2&appversion=101&channel=qiezi_d&packageName=com.cm.playera


HTTP/1.1 200 
Server: nginx
Date: Sun, 25 Aug 2019 12:02:59 GMT
Content-Type: text/plain;charset=UTF-8
Content-Length: 460
Connection: close

5hoOJdBrmkNn/Kl6VqglTbBCT79RA7ejMxQZjzyj95XG1ZJgGTN9N0jGPTzaWP3HTqJ5IBVi7ZB+8I79mX9/iFsfFr5cSQ3pqdRe/TDhjaF6/agshS1In8iBjXych/ZBFraHertBEVKrM+NH5uadl8db+YQ7f1iFY7QP0g63o9fe4mWaJ9ii3NjXmQ1RqqpRums60hZTLm0tZu2EBCEaJKSpAfnL3zicn/3AUUnKecZNR/ERNAwlBhLBtiNWk/GU76B5dMNiQsK0Kv6wBJXGUSCmXVUgyGQ4GlM1RMaS2Cc4NzBQn11gpGI3LgXmiqMVpWuq5iirOsD8rICeQSjjEIXSHT3V0t7e367scIZnDpCCL4Bp8SGBljCiMYDnrSWZUdLZ5fkBLlAmZgXLDqKqRsy26Sgbsd+Wh+Bq2KuYNbuk910TYUztZKEoJd5UPcfhlvgMzLK/01g=

解密后:
{"msg":"注册成功","code":0,"data":{"lastTime":1566734579,"createtime":1566734579,"img":"","rqcodeUrl":"","level":"路人","num":3,"sex":0,"equipment":"78390e45a36e75a2","todayNum":3,"isVip":0,"inviteFrom":"","vipTime":"","phone":"caee964be9beabd3","inviteCode":"DRJZERUP","nickname":"caee964be9beabd3","inviteTotal":0,"id":1076874}}

客户端破解

返回的isVip改为1就是代表vip,num改为-1和isVip改为1效果一致,因为没有详细分析,所以两个都改了。

通过hook的方式改了之后可以看vip才能看的视频。而改数据库不行,因为每次启动都会网络请求更新数据库,所以会被覆盖。

而改了返回的id(在model中名为userId),可以绕过每天只能看三个视频的限制,服务端根据id限制的,所以遍历或者注册新的id,达到观看视频。

临时代码如下,改数据库可以去掉,可以启一个线程或者hook其他函数监控num,自动修改userId,或者绕过更新num,直接播放视频。

if ("com.cm.playera".equals(lpparam.packageName)) {
            ClassLoader loader = lpparam.classLoader;
            Class<?> PlayerApplication = Class.forName("com.cm.playera.PlayerApplication", false, loader);
            Method onCreate = PlayerApplication.getDeclaredMethod("onCreate");

            XposedBridge.hookMethod(onCreate, new XC_MethodHook() {
                @Override
                protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
                    super.beforeHookedMethod(param);
                    Application app = (Application) param.thisObject;
                    File db_player = app.getDatabasePath("playr_qz_db.db");
                    Log.e("zhuo", "db_player="+db_player);
                    SQLiteDatabase db = app.openOrCreateDatabase("playr_qz_db.db", Context.MODE_PRIVATE, null);
                    Cursor cursor = db.query("user", null, null, null, null, null, null);
                    if (cursor != null) {
                        while (cursor.moveToNext()) {
                            int count = cursor.getColumnCount();
                            StringBuilder sb = new StringBuilder();
                            for (int i = 0; i < count; i++) {
                                String name = cursor.getColumnName(i);
                                String value = cursor.getString(i);
                                sb.append(name).append("=").append(value).append(";");
                            }

                            Log.e("zhuo", "user="+sb.toString());
                        }

                        cursor.close();
                    }

                    ContentValues values = new ContentValues();
                    values.put("isvip", 1);
                    values.put("num", -1);
                    db.update("user", values, null, null);

                    cursor = db.query("user", null, null, null, null, null, null);
                    if (cursor != null) {
                        while (cursor.moveToNext()) {
                            int count = cursor.getColumnCount();
                            StringBuilder sb = new StringBuilder();
                            for (int i = 0; i < count; i++) {
                                String name = cursor.getColumnName(i);
                                String value = cursor.getString(i);
                                sb.append(name).append("=").append(value).append(";");
                            }

                            Log.e("zhuo", "user="+sb.toString());
                        }

                        cursor.close();
                    }
                }

                @Override
                protected void afterHookedMethod(MethodHookParam param) throws Throwable {
                    super.afterHookedMethod(param);
                }
            });


            Class<?> UserModel = Class.forName("com.cm.playera.db.UserModel", false, loader);
            Method getUser = UserModel.getDeclaredMethod("getUser");
            XposedBridge.hookMethod(getUser, new XC_MethodHook() {
                @Override
                protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
                    super.beforeHookedMethod(param);
                }

                @Override
                protected void afterHookedMethod(MethodHookParam param) throws Throwable {
                    super.afterHookedMethod(param);
                    Object result = param.getResult();
                    for (Field field : result.getClass().getDeclaredFields()) {
                        field.setAccessible(true);
                        Object o = field.get(result);
                        String name = field.getName();
                        Class<?> type = field.getType();
                        Log.e("zhuo", type.getSimpleName()+" "+name+" = "+o);
                        if ("isVip".equals(name)) {
                            field.set(result, 1);
                        } else if ("num".equals(name)) {
                            field.set(result, -1);
                        } else if ("todayNum".equals(name)) {
                            field.set(result,9);
                        } else if ("phone".equals(name)) {
                            field.set(result, "1c73547d6b12de10");
                        } else if ("userId".equals(name)) {
//                            field.set(result, "1076854");
                            try {
                                File file = new File("/data/local/tmp/qiezi.txt");
                                BufferedReader br = new BufferedReader(new FileReader(file));
                                String line = br.readLine();
                                Integer integer = Integer.valueOf(line);
                                field.set(result, integer);
                            } catch (Throwable e) {
                                e.printStackTrace();
                            }


                        }
                    }
                    Log.e("zhuo", "end --------");
                }
            });

        }

其他接口

视频列表

http://www.ccabcc.com/player/user/fatherList

GET /player/user/fatherList HTTP/1.1
version: 101
packageName: com.cm.playera
channel: qiezi_d
equipment: 78390e45a36e75a0
Host: www.ccabcc.com
Accept-Encoding: gzip, deflate
User-Agent: okhttp/3.12.0
Connection: close




HTTP/1.1 200 
Server: nginx
Date: Sun, 25 Aug 2019 12:15:52 GMT
Content-Type: text/plain;charset=UTF-8
Connection: close
Vary: Accept-Encoding
Content-Length: 2540

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

解密后:
{"msg":"获取成功","code":0,"data":[{"fatherList":[{"father":1000,"id":1,"img":"","isEdit":0,"isHome":1,"name":"最新"},{"father":1000,"id":2,"img":"","isEdit":0,"isHome":0,"name":"VIP"}],"id":1000,"img":"","isEdit":0,"isHome":1,"name":"推荐"},{"fatherList":[{"father":1001,"id":3,"img":"","isEdit":1,"isHome":0,"name":"偷拍"},{"father":1001,"id":46,"img":"","isEdit":0,"isHome":0,"name":"三级"},{"father":1001,"id":4,"img":"","isEdit":1,"isHome":0,"name":"自拍"},{"father":1001,"id":6,"img":"","isEdit":1,"isHome":0,"name":"剧情"},{"father":1001,"id":7,"img":"","isEdit":1,"isHome":0,"name":"迷奸"},{"father":1001,"id":43,"img":"","isEdit":0,"isHome":0,"name":"网红"},{"father":1001,"id":5,"img":"","isEdit":1,"isHome":0,"name":"制服"},{"father":1001,"id":42,"img":"","isEdit":0,"isHome":0,"name":"明星"}],"id":1001,"img":"","isEdit":1,"isHome":0,"name":"国产"},{"fatherList":[{"father":1002,"id":11,"img":"","isEdit":1,"isHome":0,"name":"精品"},{"father":1002,"id":14,"img":"","isEdit":1,"isHome":0,"name":"剧情"},{"father":1002,"id":28,"img":"","isEdit":1,"isHome":1,"name":"骚奴"},{"father":1002,"id":37,"img":"","isEdit":0,"isHome":0,"name":"动漫"},{"father":1002,"id":36,"img":"","isEdit":0,"isHome":0,"name":"主播"}],"id":1002,"img":"","isEdit":1,"isHome":0,"name":"日韩"},{"fatherList":[{"father":1003,"id":21,"img":"","isEdit":1,"isHome":0,"name":"精品"},{"father":1003,"id":23,"img":"","isEdit":1,"isHome":0,"name":"少女"},{"father":1003,"id":24,"img":"","isEdit":1,"isHome":0,"name":"群交"},{"father":1003,"id":52,"img":"","isEdit":1,"isHome":0,"name":"其他"},{"father":1003,"id":55,"img":"","isEdit":1,"isHome":0,"name":"场景"},{"father":1003,"id":56,"img":"","isEdit":1,"isHome":0,"name":"女同"},{"father":1003,"id":57,"img":"","isEdit":1,"isHome":0,"name":"户外性爱"}],"id":1003,"img":"   ","isEdit":1,"isHome":0,"name":"欧美"}]}

更新apk接口

get请求带加密后的版本信息,返回加密json。

http://www.ccabcc.com/player/user/checkApkVersion?info=E0nOq%2B3DpJ13iSCfVouZEw%3D%3D

GET /player/user/checkApkVersion?info=E0nOq%2B3DpJ13iSCfVouZEw%3D%3D HTTP/1.1
version: 101
packageName: com.cm.playera
channel: qiezi_d
equipment: 78390e45a36e75a0
Host: www.ccabcc.com
Accept-Encoding: gzip, deflate
User-Agent: okhttp/3.12.0
Connection: close


info解密后:
version=101


HTTP/1.1 200 
Server: nginx
Date: Sun, 25 Aug 2019 12:19:52 GMT
Content-Type: text/plain;charset=UTF-8
Content-Length: 56
Connection: close

5hoOJdBrmkMZf4v2qRahkg4io+5VGeUCM3pSzP9fAno+cP6cM8cmvA==

解密后:
{"msg":"当前最新版本","code":3}

获取视频列表接口

http://www.ccabcc.com/player/user/homeList?info=IfPXJF5vvy46cNJXvO9VrbbWcxMDocjh8ihvcDBByOQHvdsqY6F%2F%2BQ19iaQnUYHYivk5xK8zdoV3%2BpEjT0%2Fzow%3D%3D

GET /player/user/homeList?info=IfPXJF5vvy46cNJXvO9VrbbWcxMDocjh8ihvcDBByOQHvdsqY6F%2F%2BQ19iaQnUYHYivk5xK8zdoV3%2BpEjT0%2Fzow%3D%3D HTTP/1.1
version: 101
packageName: com.cm.playera
channel: qiezi_d
equipment: 78390e45a36e75a0
Host: www.ccabcc.com
Accept-Encoding: gzip, deflate
User-Agent: okhttp/3.12.0
Connection: close



info解密后:
curPage=1&fatherType=1&type=1&topFather=1000&pageSize=20

HTTP/1.1 200 
Server: nginx
Date: Sun, 25 Aug 2019 12:24:26 GMT
Content-Type: text/plain;charset=UTF-8
Connection: close
Vary: Accept-Encoding
Content-Length: 8972

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

解密后:
{"msg":"获取成功","code":0,"data":[{"volume":"2万","isRecommend":1,"fatherName":"剧情","img":"http://fuyanjie.wangxiaolong1994.com:8089/dadouya/doufu211.jpg","createTime":1566282592,"vstatus":0,"isNewest":0,"name":"24小时口内射精OK手机护士!即尺超喜欢奶嘴痴女护士桃乃木吧第三集","id":3937,"fatherType":14,"playUrl":"http://sdf.fjzfgene.com/20190802/dadouya/doufu211/index.m3u8"},{"volume":"2.1万","isRecommend":1,"fatherName":"精品","img":"http://fuyanjie.wangxiaolong1994.com:8089/xiami41.jpg","createTime":1564551338,"vstatus":0,"isNewest":0,"name":"被摄影师操爽了","id":2191,"fatherType":11,"playUrl":"http://bashen.qshppt.com/spm3u8/xiami/xiami41/index.m3u8"},{"volume":"2.1万","isRecommend":1,"fatherName":"自拍","img":"http://fuyanjie.wangxiaolong1994.com:8089/pangyu710.jpg","createTime":1562122547,"vstatus":0,"isNewest":0,"name":"美女主播人气大放送","id":1930,"fatherType":4,"playUrl":"http://bashen.qshppt.com/spm3u8/pangyu/pangyu710/index.m3u8"},{"volume":"2.1万","isRecommend":1,"fatherName":"剧情","img":"http://fuyanjie.wangxiaolong1994.com:8089/xiami/xiami402.jpg","createTime":1564550241,"vstatus":0,"isNewest":0,"name":"文艺小青年闯红灯-干了一床血","id":3635,"fatherType":6,"playUrl":"http://sdf.fjzfgene.com/daxiami/xiami402/index.m3u8"},{"volume":"2万","isRecommend":1,"fatherName":"剧情","img":"http://fuyanjie.wangxiaolong1994.com:8089/dadouya/doufu45.jpg","createTime":1564205290,"vstatus":0,"isNewest":0,"name":"新・美少女貸切温泉旅行 5 第三集","id":3456,"fatherType":14,"playUrl":"http://xinptai.kaojingedu.com/spm3u8/dadouya/doufu45/index.m3u8"},{"volume":"2万","isRecommend":1,"fatherName":"精品","img":"http://fuyanjie.wangxiaolong1994.com:8089/dadouya/doufu39.jpg","createTime":1566281831,"vstatus":0,"isNewest":0,"name":"上司因出差不在时,和上司的妻子乱七八糟地狼狈不堪的3天。葵司第四集","id":3450,"fatherType":11,"playUrl":"http://xinptai.kaojingedu.com/spm3u8/dadouya/doufu39/index.m3u8"},{"volume":"2.3万","isRecommend":1,"fatherName":"制服","img":"http://fuyanjie.wangxiaolong1994.com:8089/xiami/xiami781.jpg","createTime":1565234465,"vstatus":0,"isNewest":0,"name":"私人订制专属丝袜主题会所招牌嫩妹变换各种制服挑逗诱惑","id":4078,"fatherType":5,"playUrl":"http://sdf.fjzfgene.com/20190806/xiami/xiami781/index.m3u8"},{"volume":"2.1万","isRecommend":1,"fatherName":"女同","img":"http://fuyanjie.wangxiaolong1994.com:8089/qw137.jpg","createTime":1564727607,"vstatus":0,"isNewest":0,"name":"Say the goods themselves 6","id":3818,"fatherType":56,"playUrl":"http://xinptai.kaojingedu.com/spm3u8/qw/qw137/index.m3u8"},{"volume":"2.3万","isRecommend":1,"fatherName":"自拍","img":"http://fuyanjie.wangxiaolong1994.com:8089/dadouya/doufu5025.jpg","createTime":1564721520,"vstatus":0,"isNewest":0,"name":"国内外围野模也是拼了黑丝下体粉粉嫩嫩极品鲍鱼阴户大开写真","id":3769,"fatherType":4,"playUrl":"http://xinptai.kaojingedu.com/spm3u8/dadouya/doufu5025/index.m3u8"},{"volume":"2.1万","isRecommend":1,"fatherName":"女同","img":"http://fuyanjie.wangxiaolong1994.com:8089/qw144.jpg","createTime":1564727817,"vstatus":0,"isNewest":0,"name":" Say the goods themselves 15","id":3825,"fatherType":56,"playUrl":"http://xinptai.kaojingedu.com/spm3u8/qw/qw144/index.m3u8"},{"volume":"2万","isRecommend":1,"fatherName":"骚奴","img":"http://fuyanjie.wangxiaolong1994.com:8089/py59.jpg","createTime":1566286586,"vstatus":0,"isNewest":0,"name":"小骚奴-轮奸大片","id":2306,"fatherType":28,"playUrl":"http://bashen.qshppt.com/spm3u8/py/py59/index.m3u8"},{"volume":"2.1万","isRecommend":1,"fatherName":"三级","img":"http://fuyanjie.wangxiaolong1994.com:8089/dag44.jpg","createTime":1564667953,"vstatus":0,"isNewest":0,"name":"3D肉蒲團之極樂寶鑒","id":3331,"fatherType":46,"playUrl":"http://xinptai.kaojingedu.com/spm3u8/dag/dag44/1.m3u8"},{"volume":"2.1万","isRecommend":1,"fatherName":"剧情","img":"http://fuyanjie.wangxiaolong1994.com:8089/dadouya/doufu232.jpg","createTime":1566282414,"vstatus":0,"isNewest":0,"name":"飞溅mion绝对的美少女豪爽地喷射园田mion第四集","id":3959,"fatherType":14,"playUrl":"http://sdf.fjzfgene.com/20190803/dadouya/doufu232/index.m3u8"},{"volume":"2.2万","isRecommend":1,"fatherName":"自拍","img":"http://fuyanjie.wangxiaolong1994.com:8089/dadouya/doufu1050.jpg","createTime":1564896854,"vstatus":0,"isNewest":0,"name":"甜美性感的大长腿美女剧情","id":3980,"fatherType":4,"playUrl":"http://sdf.fjzfgene.com/20190803/dadouya/doufu1050/index.m3u8"},{"volume":"2.2万","isRecommend":1,"fatherName":"场景","img":"http://fuyanjie.wangxiaolong1994.com:8089/hw5.jpg","createTime":1565079338,"vstatus":0,"isNewest":0,"name":"Kylie Page - Professional deep massage for my oiled fat pussy","id":4004,"fatherType":55,"playUrl":"http://sdf.fjzfgene.com/20190804/hy/hw5/index.m3u8"},{"volume":"2.2万","isRecommend":1,"fatherName":"自拍","img":"http://fuyanjie.wangxiaolong1994.com:8089/pangyu711.jpg","createTime":1562122598,"vstatus":0,"isNewest":0,"name":"姐妹花直播","id":1931,"fatherType":4,"playUrl":"http://bashen.qshppt.com/spm3u8/pangyu/pangyu711/index.m3u8"},{"volume":"3.2万","isRecommend":1,"fatherName":"迷奸","img":"http://fuyanjie.wangxiaolong1994.com:8089/xiami/xiami487.jpg","createTime":1564809315,"vstatus":0,"isNewest":0,"name":"最新重磅福利工厂打工妹子被灌醉捂晕后虐玩抽胸抽嘴巴等暴力玩法最后口吐仙气","id":3909,"fatherType":7,"playUrl":"http://sdf.fjzfgene.com/xiaodouya2/xiami/xiami487/index.m3u8"},{"volume":"2.1万","isRecommend":1,"fatherName":"精品","img":"http://fuyanjie.wangxiaolong1994.com:8089/dadouya/doufu214.jpg","createTime":1566279732,"vstatus":0,"isNewest":0,"name":"和偶像美少女交往的淫荡不堪,充满了强烈的接吻和性爱桃乃木吧第二集","id":3940,"fatherType":11,"playUrl":"http://sdf.fjzfgene.com/20190802/dadouya/doufu214/index.m3u8"},{"volume":"2.5万","isRecommend":1,"fatherName":"自拍","img":"http://fuyanjie.wangxiaolong1994.com:8089/dadouya/doufu5036.jpg","createTime":1564735696,"vstatus":0,"isNewest":0,"name":"女神沐熙纯美乳房露出一","id":3780,"fatherType":4,"playUrl":"http://xinptai.kaojingedu.com/spm3u8/dadouya/doufu5036/index.m3u8"},{"volume":"2.2万","isRecommend":1,"fatherName":"网红","img":"http://fuyanjie.wangxiaolong1994.com:8089/xiugai/29.jpg","createTime":1563974714,"vstatus":0,"isNewest":0,"name":"推特网红福利姬蛇信子(兔牙姐姐)约啪大款嫖客被爆草颜射一脸精液","id":2827,"fatherType":43,"playUrl":"http://xinptai.kaojingedu.com/spm3u8/xiami/xiami326/index.m3u8"}]}


返回的json中有playUrl,使用在线m3u8播放成功,并没有使用加密的m3u8,至此也可以脱离客户端的限制了。
http://m3u8.cachecha.com/

每次请求这个api返回的结果(视频内容)都不同,所以curPage=1好像没有起作用,pageSize改成200也没有多返回数据。

以上差不多就完全完成了破解。

从启动到点击视频播放的整个网络请求

忽略掉广告接口

1:获取视频的类型列表集合

get http://www.ccabcc.com/player/user/fatherList
所需参数4个,在请求头中

version: 101
packageName: com.cm.playera
channel: qiezi_d
equipment: 78390e45a36e75a0

equipment分析为android_id

    hashMap.put("equipment", DeviceUtils.getAndroidID());

    @SuppressLint({"HardwareIds"})
    public static String getAndroidID() {
        return Secure.getString(Utils.getApp().getContentResolver(), "android_id");
    }

所以会不会存在设备重合的情况,遍历android_id能不能获得vip账号?关键不知道这个后台数据多不多,从userId顺序来看,用户好像不是很多,似乎很难跑出,而且付费用户可能少之又少。

2:调用注册登录接口

post http://www.ccabcc.com/player/user/regist

equipment=78390e45a36e75a1&appversion=101&channel=qiezi_d&packageName=com.cm.playera

所需字段equipment为android_id,如果是新的android_id返回新的userId,如果是旧设备返回之前的userId。测试来看userId是顺序的,应该能标识用户注册数量。

返回的json通过改isVip为1或者num为-1可观看vip视频,限制在客户端。。。

通过修改id/userId可以绕过限制每天观看3部的限制,没有账号密码、token/cookie。

弹窗、通知类消息接口

get http://www.ccabcc.com/player/user/getPopupWindow

所需参数4个,在请求头中

version: 101
packageName: com.cm.playera
channel: qiezi_d
equipment: 78390e45a36e75a0

将返回的服务端消息弹窗。

获取apk版本更新

get http://www.ccabcc.com/player/user/checkApkVersion?info=E0nOq%2B3DpJ13iSCfVouZEw%3D%3D

所需参数4个,在请求头中。info为加密的version=101,额,明明请求头已经有了。。。

version: 101
packageName: com.cm.playera
channel: qiezi_d
equipment: 78390e45a36e75a0

默认首页为推荐的视频内容

get http://www.ccabcc.com/player/user/homeList?info=IfPXJF5vvy46cNJXvO9VrbbWcxMDocjh8ihvcDBByOQHvdsqY6F%2F%2BQ19iaQnUYHYivk5xK8zdoV3%2BpEjT0%2Fzow%3D%3D

所需参数4个,在请求头中。info为加密的curPage=1&fatherType=1&type=1&topFather=1000&pageSize=20

version: 101
packageName: com.cm.playera
channel: qiezi_d
equipment: 78390e45a36e75a0

返回的json有图片和视频对应的url,可直接通过url观看视频。。。

点击视频更新播放次数。

post http://www.ccabcc.com/player/user/updateNum

所需参数4个,在请求头中。

version: 101
packageName: com.cm.playera
channel: qiezi_d
equipment: 78390e45a36e75a0

post内容为info=Er60wl%2Fi9bX%2FfmrDB87K%2Ff88Dyu6efUFAGGUpHcnMCQ%3D
解密后为:userId=1070001&movieId=4253
所以可以更改userId或者客户端绕过这个api也可以。

返回包:
{“msg”:“修改成功”,“code”:0,“data”:{“vipTime”:"",“num”:1,“todayNum”:3,“isVip”:0}}

{“msg”:“修改成功”,“code”:0,“data”:{“vipTime”:"",“num”:0,“todayNum”:3,“isVip”:0}}

如果没有次数返回:
{“msg”:“没有次数”,“code”:2}

所以修改返回包也可以。

关联视频

get http://www.ccabcc.com/player/user/getSuggest?info=AsbE7zuC5x6ZTMQnsWpseALLj7yrzQME
所需参数4个,在请求头中。info为加密的limit=15&fatherType=11

version: 101
packageName: com.cm.playera
channel: qiezi_d
equipment: 78390e45a36e75a0

limit应该是限制推荐的相关视频数量。
返回的json和获取视频内容类似。

请求视频

get http://sdf.fjzfgene.com/20190819/dadouya/doufu7012/index.m3u8
外链请求,无其他参数,返回的是m3u8的文本。可以自己解析,例如

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:10
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:3.462022,
index0.ts
#EXTINF:3.628867,
index1.ts
#EXTINF:4.087689,
index2.ts
#EXTINF:3.920844,
index3.ts

url为服务端获取的json视频列表集合中的url。

分段请求视频

get http://sdf.fjzfgene.com/20190819/dadouya/doufu7012/index0.ts
根据m3u8下载所有的部分。

以上就是从启动app到视频播放的流程,剩下其他视频类型和支付接口没看。。。

总结,破解用时半小时。找切入点,分析代码,写hook代码绕过播放vip视频;抓包分析数据、加解密分析出数据和整体逻辑。

分析该app的视频数据通过服务端收集、分类,视频不在服务器,通过提供、传播这些视频数据收费,app开发者水平好像还可以,mvc对逆向还是很友好,还考虑兼容性,除了申请sd卡读写权限,不给也不影响运行。虽然是这种软件,但是好像还是良心软件?

不知道发了会不会被骂。。。我也算为扫黄做个贡献?

[招聘]欢迎市场人员加入看雪学院团队!


文章来源: https://bbs.pediy.com/thread-254128.htm
如有侵权请联系:admin#unsafe.sh