某禁止截屏的学穿搭app安全分析

声明


以下只是搬运下我公众号的东西。很早就发过了。原帖地址:

某禁止截屏的学穿搭app安全分析

已经发公众号的为什么还发csdn
有的圈内朋友,不经过我的允许,删减摘录我公众号的内容,这里就不提谁了,心里清楚,还能获得一些关注和流量。很无语,所以我还不如自己也发发。【猛男落泪】

前言

兴趣使然,发现了某app,有点意思,所以记录下来

分析

1.抓包

首先就是打开这个学习穿搭的app,页面展示如下,为了防止不必要的事呢,我就把脸打码了

里面有很多知识点,感兴趣、喜欢的朋友可以自己去学习穿搭

回到正题,刷下页面,抓个包,看看加密参数,


 

加密的参数就是标注的几个了,token是登录返回的,就不用去研究了

2.防截屏/录屏

有朋友可能要问了,你这是手机拍的照片啊,怎么不截屏?

因为这个app有防截屏,就很骚了,录制也不行,我已经试过了:

qtscrcpy投屏也不行

好的,本篇文章的目的就是解决这两个问题,一个加密参数,一个防录屏

调试

1.加密参数算法

先看加密参数,用jadx查看,拖进去,卧槽,有壳,gg

问题不大,使用点手段,脱壳之后,继续分析,怎么定位加密逻辑和怎么分析一个app,我之前总结过,不清楚的朋友可以移步:移动安全分析流程

用jadx 打开脱壳后的文件,按照之前的路子,主要找sign的位置:

找的顺序,如下图片顺序

那几个加密参数都在这里了:

就是这么快速,定位到位置,一看这个算法,盲猜是没有魔改的,看着偶读没咋改动,就是标准的sha256(当然也不一定)

2.防录屏逻辑

关于这个呢,其实查资料就可以知道了,原理主要是对当前启动的activity,设置一段代码:

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // 主要就是下面这一行代码
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_SECURE, WindowManager.LayoutParams.FLAG_SECURE);
        initView();
    }

那么原理都知道,用frida hook 看看

代码:

function main() {
    Java.perform(function () {
        var v = Java.use("android.view.Window")
        v.setFlags.overload('int', 'int').implementation = function (arg1, arg2) {
            console.log('arg1', arg1)
            console.log('arg2', arg2)
            this.setFlags(1, 1)
        }
        // 有的会用这个
        // var s = Java.use("android.view.SurfaceView")
        // s.setSecure.overload('java.lang.Boolean').implementation = function (arg) {
        //     this.setSecure(false)
        // }
    })
}

setTimeout(main, 2000)


 

标注区域就是他传递的本来的参数,它这有一堆的这个参数设置,我猜应该每个activity他都设置了这个,然后根据我上面的代码,把参数修改了,改成两个【1】,就可以截屏了:

qtscrcpy也好使了:

其实有关防录屏解决方案,早就有个大佬写好了一个xp插件,我试了下,我不知道为啥没生效,具体我就没深究了,frida hook是可以的

https://github.com/ilanyu/BlockSecureFlag

算法还原

过程就不展示了,直接看结果吧:

完美!!!

结语

这个app加密算法还是在java层,所以很简单的,防止截屏也是java层,所以轻松搞定

技术交流、商务合作、工作避坑&内推(仅成都)、爬虫课优惠、技术交流群

扫码或者搜ID:geekbyte

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值