原文: 瞎猫碰上死耗子 破解超时代加密视频 https://www.52pojie.cn/thread-1140734-1-1.html
叠甲声明:
我甚至不是逆向小白,事实上我对逆向一窍不通。我因为想要解密超时代视频(v9.36),前天才注册了论坛。惊喜地发现论坛上早已有了方案,但是那个方案对于我们纯门外汉、只是想达到解密目的的人(目前还看不懂逆向技术)来说有点难以抓到重点,现作出面向门外汉的整理
正文:
原作者对超时代加密做了一通分析,事实上我们看不懂也不用看他的逆向过程,直接看他最后发的代码(我改了一点,但不影响意思):
#include <cstdio>
#include<cstring>
#pragma warning(disable:4996)
int main() {
FILE* fp, * fout;
char nameIn[80] = "in.vpy", nameOut[80] = "out.mp4";
const int len = 256;
char c[len] = {'\0'};
int count = 0;
int key[16] = { 0x56,0x12,0x32,0x09,0x43,0x22,0x11,0x30,0x89,0x01,0x08,0x09,0x02,0x93,0x25,0x12 };
fp = fopen(nameIn, "rb");
fout = fopen(nameOut, "wb");
fseek(fp, 0x2CF8, SEEK_SET);// 位置,偏移量0xFF2428字节是exe的。
while (fread(c,1, len, fp)) { //经过fseek,表明了开始位置,这里就是将第一个字节,存放到变量c
for (int i = 0; i < len; i++) {
c[i] ^= key[count % 16] + 3;
count++;
}
fwrite(c, 1, len, fout);
}
fclose(fp); fclose(fout);
return 0;
}
这个代码的意思就是对加密视频进行异或+偏移量解密。直接编译运行这个代码,超时代v9.36加密的视频就能解密成mp4。就是这么简单。
与原作者的不同之处:
1.优化了I/O性能。速度提高了十几倍。
2.原作者的fseek处的地址偏移量是0xFF2428,那是面向.exe的。超时代有两种加密,一种是加密成.exe,这种情况下双击exe,输入密码就可以播放;一种是加密成.vpy,要用外置的播放器输入密码播放。原作者没有提.vpy怎么解密,事实上只要修改这里的地址偏移就行(0x2CF8是我自己发现的地址偏移量)。毕竟可以想象,加密成.exe这种自解压文件还要在mp4段前面塞一大堆程序,而.vpy没有前面的一大堆程序,所以地址偏移量小一些。