安丘网站建设aqfeifan,四川省建筑施工企业特种作业人员,在线之家官网,做自由行的网站好春节马上就要到来#xff0c;可是随着时代越来越进步#xff0c;年味也越来越淡了#xff0c;尤其在海外#xff0c;更没有国内的气氛浓郁#xff0c;所以只有每年看春晚才会让我感觉到今天又是新的一年了。 而且长大后会发现更有年味的不是新年#xff0c;而是新年前…春节马上就要到来可是随着时代越来越进步年味也越来越淡了尤其在海外更没有国内的气氛浓郁所以只有每年看春晚才会让我感觉到今天又是新的一年了。 而且长大后会发现更有年味的不是新年而是新年前夕家家户户都在忙着办年货各种亲子活动塞满汽车的街道还有拥挤的地铁与准备返乡的游子们无处不在弥漫着迎新气氛。 然而电视家却走了(其实和电视家没什么关系只是剧情需要)少了个可以看春晚的应用所以就在网上找了其他取代品。然后搜索到了一款名为“hdp直播”的应用本以为可以好好观看就将它安装上了结果提示此版本已停用并且提示更新并命名为“黑白直播”。行那就跟着提示操作一顿吧。 安装完后心想应该没问题了结果当我打开软件的时候出现了以下的画面 什么鬼哦还要微信扫码登录一定没什么好康我就不扫。那就逆它吧。 温馨提示; 本教学不面向0基础如果需要0基础教学请翻看我往期的文章因为人总要进步不能总从0开始去解说。 从接触到认知 到熟悉 再到累积每个人在任何人事物上必定会经历的事情逆向亦如此当你累积到一定程度基本上就会忽略掉很多没必要的繁杂步骤。就像各种一键工具也是经过前人的累积制造出来便于简化后人使用的工具。 所以在操作上也一样并非每一次都得从0开始去部署到完成。 那么从扫码界面如果面对一位有经验者自然直接就会想到它的作用是限制未登录者使用所以自然就会有个身份检测判断检测用户信息之类的代码这样就可以直接缩小范围定位到用户相关的范围比如check userloginuserid 等等之类的关键词来精准定位到关键点。有了这初步信息就可以进行反编译了。 下图中可以看到代码虽然经过了混淆但部分关键信息还是暴露了。 进入到checkusertype方法内可以看到有一段检测用户信息的代码但是在标记处有一条Boolean判断当boolean结果位true的时候就会直接返回return-void不再继续往下方代码执行。 那么就试试让它返回true看看是不是就绕过了登录检测修改代码如下 修改完毕后重新安装会发现登录弹窗不见了说明修改正确但同时又遇到了新的问题直播源不工作了。。。。 同时在设置菜单里发现了一段扫码捐赠的字眼所以不排除扫码登录后也许还要捐赠才能正常使用(毕竟现在很多开发者都喜欢用捐赠的方式变相收费要钱也不敢坦荡荡)。 由于此处是教学为了验证直播源不工作是另一个问题下图提供一张在对原包不做任何改动下仅更换签名的结果。 并且从上面第一张图里也可以看出在未登录的情况下直播是可以正常播放只是多了一幕遮拦窗口。 至此可以百分百确定软件有自校验防止他人二次修改/破解。这里先说明一下java层是有签名验证主要作用是让直播源无法正常播放关于java层的签名保护一般使用各类一键过签都能解决。这里就不做说明了。 教学主要讲解直播源不工作的校验那么从经验上来说这年头 搞开发的一般做保护基本都不会着重于java层了大部分都会在so层做手脚。所以先排除java层吧先看看lib里都有哪些文件吧? 图中可以看到一共有14个so文件但是大部分都认识所以可以排除如果真的不认识也可以借用libchecker这软件来查询基本大众的so库都会有收录。 不知道大家是否还记得在文章开头介绍过这软件的名称为“黑白直播”可是在直播源不工作界面又有了另一个名称“橙色直播”英文“orange live”。那么刚好so里也有一个名为orange开头的so文件“liborange_params.so”,文件体积也不大只有72.23k。 所有巧合必有故事所以不可能刚好也以orange命名那么可以先从java层看看到底调用了orange_params哪些函数吧。 图中可以看到只有三个函数被调用然而这三个函数返回的都是字符串类型那么定位一下调用的位置看看具体这些函数代表什么吧。 下图中可以看到ok和os分别是AccessKeyId和AccessKeySecret其实这两个作用是用来连接阿里云OSSService的key和密钥。 接着再看看pt它作用是用来播放pcdn直播源的token所以这三个值都必须有才能能播放指定的直播源。 由于这三个函数都在java层也就没必要去分析orange_params的内容了只要把这三个值取出来就好。所以可以直接hook获取。 先来看看假设对不对,可以先hook改过的包看看返回值都有哪些。然而从图中可以看到结果为三个值都返回null说明触发了校验。 那么接下来再看看原版的返回值可以看到是有返回值的并且经过测试返回值是固定的。 至此orange_params.so已经没有用处了可以在修改版上把它删去。直接在java层实现返回值即可。修改结果如下。 修改前: 修改后: 完成后再次安装测试发现还是出现了同样的界面直播源依然不工作。说明还有其他地方有校验。由于从上面的分析过程得出校验大概率在so层同时文件体积基本不会很大。所以符合小体积又陌生的文件得出结果有4个。这是初步锁定。 接着通过试试抓包抓一下直播源看看直播源都是以zip压缩打包运行程序的时候都会把直播源都下载到本地但是直播源都是经过加密的。所以第二步猜测直播源是不是没有正常解密。 最后再来定位到错误界面的位置。错误界面是一张图所以只要找出了资源ID就可以再java层定位。如下图可以看见触发条件有两个当advertDetailModel类为null或geturl为空则触发错误。 所以总结得出结果最大可能就是stream_decode.so这个文件有问题就如字面上的意思流媒体解码。和orange_params同样的操作手法先看看java层调用了哪些函数 下图中可以看见只有一条函数被java层调用。 同样的hook一下修改版的这条函数看可以看见输出和输入结果一模一样。说明直播源根本没有解密真是吃啥拉啥(dcc是传入加密的数据dc是返回解密后的数据)。所以才导致了直播源不工作。 那么是不是说明我们得使用ida来反编译so分析算法了答案是否定的像我这样懒的人能不用电脑就不用电脑。这个时候该怎么做呢 答案就是先hook原版看看如下图所示原版的的dc输出结果是有完成解密的。但是同时也告诉了我们不需要去分析so里的算法了直接肉眼就可以解密。 我们来看看一条比较短的加密前和解密后的数据。可以看见加密的前两位v1和解密后的最后两位pc做了对调然后其余数据照常至于{y变成了://然后就这样简单的完成解密了(难道这就是传说中的看图破解?)。 所以得出结论就是除了头尾二个字符对调并且以{开头的两个字符会和so里的对照表进行转换之外其余字符都照旧。所以只要我们多抓几条直播源的加解密结果就能得到了{完整的对照表。这里就不一一演示了直接给出修改结果。同样的stream_decode.so也可以删掉了直接在java层修改。 修改前: 修改后: 最后来看看最终结果你学会了吗? my-tv-v1.4.5.exe 成品下载地址解压之后自行安装https://www.alipan.com/s/wp8F5MS76cK