标签:全局 vip nbsp inf level string http load check
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==‘
标签:全局 vip nbsp inf level string http load check
原文地址:https://www.cnblogs.com/DirWang/p/14586399.html