近日参加一个培训,被要求8号前刷完100课时的在线课程,第一次看不能快进,还会有摄像头抓怕你进行人脸识别,识别通过才能继续观看。看完一次后再去看就能拖动进度条了,于是我就想试试破解他的快进限制功能(不然刷要刷不完了。。。)。
1、用MT管理器查看发现没加固,nice!
3、用dex2jar将classes.dex反编译,并用jd-gui.exe查看,(我用Androidkiller反编译失败了,不知道是不是配置有问题)发现有一个VideoDkDone和一个VideoDkUnDone,很显然一个是看完一遍的,一个是没看完一遍的,这样只要把两个相互对比就会轻松很多。
4、对比之下,我找到了initView函数的不同,VideoDkUnDone里面缺少控制视频播放的代码,于是我将VideoDkDone中的initView替换过去,结果出错了。
5、再仔细找了下,我在VideoDkUnDone中发现了setVideo这个函数,原来是把播放控制放在这里了,里面有一个setCanChangePosition(这名字起的真直观)和setGestureEnable设置为true就可以快进了。
6、现在能够向右滑动快进,但是一次快进的不多,而且还是不能直接拖动进度条,随后我看到了skipPositionWhenPlay这个函数似乎与改变观看进度有关,于是我将后面那个1000的参数换成了10000,使用后发现这个函数是读取你的历史观看时间,然后跳到那个时间,我给他增大10倍后每次重新进去就会把我原来的观看时间扩大10倍,所以只要进出两次就能耍完这个视频了,直接跳过他中间的人脸识别了。就是不知道他后台是怎么记录的,会不会给查出来。。。