EV剪辑分析

EV剪辑分析

 

点击‘充值开通VIP’打开网页http://svip.ieway.cn/personalPay?product_type=2000

 

字符串搜索定位到

 

 

调用栈

 

 

 

根据调用栈回溯到上层调用66A3B190

ZN14OutVideoDialog8check_okEv处理‘导出’按钮

 

 

 

这里有创建消息框,点击‘充值开通VIP’对应的处理:

 

 

那么上层if则应该是判断是否为VIP:

 

 

 

看到了明晃晃的“UserLevel”,调试获得此方法位于evBridge492.dll  67A0CE60;推测为通过获取某全局map中UserLevel的值

 

 

 

调试发现其值为“m4mdQA==”,后面的方法则应该是对其解密,evbridge492.67A0C860

 

 

 

ZN2bg5Value4readEPKc方法负责解析xor后的数据

 

 

 

base64encode str: m4mdQA==

base64decode data: 0x9b, 0x89, 0x9d, 0x40

xordecrypto data: [i]0

最终this偏移+8处设置为UserLevel的值,0;后续与1比较,小于等于1则会弹出提示框,视频带水印。

 

 

 

测试将此处比较nop掉,没有提示框,但无法去除水印,推测后续仍会检测UserLevel,尝试在必经之路evbridge492.67A0C860解密方法处下断,回溯。

 

在第二次调用evbridge492.67A0C860解密方法时,在上层发现调用

ZN3eva16GraphicsBaseView12setWatermarkEbRK7QStringd

 

 

 

此处patch修改eax值为0则可实现去水印。

 

 

 

同样的方法跟踪‘高级’按钮

 

此处patch修改eax值为1,则可实现高级设置。

 

 

修改这两处虽然可以使用,但不够优雅,向上寻找userlevel设置的地方才可一劳永逸;

Userlevel的值经过base64编码,以此为突破点跟踪;

evbridge492.67A0C860解密方法中有调用base64解码,转到此类的虚表,在其周围寻找编码函数。同理找到xor加密的函数。

 

 

 

通过下断,重启程序,回溯来到TimeView.dll 66A4F7D0 _ZN8AsModule4initEv

 

 

 

evbridge492.67A0C9C0:

 

 

 

evbridge492._ZNK2bg5Value5writeEv;设置userlevel的数据格式

 

 

 

Patch设置userlevel值大于1则可实现vip功能。

 

 

 

need str: [i]4

xorencrypto data: 0x9b, 0x89, 0x9d, 0x44

base64encode: b'm4mdRA=='

 

 

 

 

posted @ 2021-03-27 17:36  DirWangK  阅读(128)  评论(0编辑  收藏  举报