现在可以确定增量压缩的类型了

来源:互联网 发布:微信服务号域名 编辑:程序博客网 时间:2024/04/29 12:07

现在可以确定增量压缩的类型了

这两天,闲羊无事,把系统的 wcp.dll 反编译一下,终于搞清楚了增量压缩的种类了,也证明了以前的判断基本上是正确的。

系统 种类 返回码 Win8.1 出错 0 win8.1 DCD 1 Win8.1 DCN 2 Win8.1 DCH 3 Win8.1 DCM 4 Win10 DCS 5 Win10 DCX 6 Win10 出错 8

说是出错,可能不准确,实量就是非增量压缩的类型。

win8.1 的代码:

__int64 __fastcall 判断DC前4位(__int64 a1){  signed int v1; // edx@1  __int64 v2; // rax@2  v1 = 0;  if ( *(_QWORD *)a1 >= 4ui64 )  {    v2 = *(_QWORD *)(a1 + 16);    if ( *(_BYTE *)v2 == 68 && *(_BYTE *)(v2 + 1) == 67 && *(_BYTE *)(v2 + 3) == 1 )    {      switch ( *(_BYTE *)(v2 + 2) )      {        case 0x44:          v1 = 1;          break;        case 0x48:          v1 = 3;          break;        case 0x4D:          v1 = 4;          break;        case 0x4E:          v1 = 2;          break;      }    }  }  return (unsigned int)v1;}

Win10 的代码:

__int64 __fastcall Windows::WCP::Rtl::GetCompressedFileType(Windows::WCP::Rtl *this, const struct _LBLOB *a2){  signed int v2; // ebx@1  __int64 v3; // rax@2  v2 = 0;  if ( *(_QWORD *)this < 4ui64    || (v3 = *((_QWORD *)this + 2), *(_BYTE *)v3 != 68)    || *(_BYTE *)(v3 + 1) != 67    || *(_BYTE *)(v3 + 3) != 1 )  {    if ( (unsigned __int8)sub_180203180((__int64)this) )      v2 = 8;  }  else  {    switch ( *(_BYTE *)(v3 + 2) )    {      case 0x44:  //D        v2 = 1;        break;      case 0x48:  //H        v2 = 3;        break;      case 0x4D:  //M        v2 = 4;        break;      case 0x4E:  //N        v2 = 2;        break;      case 0x53:  //S        v2 = 5;        break;      case 0x58:  //X        v2 = 6;        break;    }  }  return (unsigned int)v2;}
0 0
原创粉丝点击