首页
社区
课程
招聘
[旧帖] 高手来看看这段伪代码。。有没印象是干嘛的。 0.00雪花
发表于: 2011-11-15 15:20 4525

[旧帖] 高手来看看这段伪代码。。有没印象是干嘛的。 0.00雪花

2011-11-15 15:20
4525
// Microsoft VisualC 2-10/net runtime
unsigned int __cdecl unknown_libname_30(unsigned int a1, int a2, unsigned int a3)
{
  int v3; // esi@1
  unsigned int v4; // edi@1
  unsigned int result; // eax@6
  unsigned int v6; // ecx@8
  int v7; // esi@26
  int v8; // edi@26
  unsigned int v9; // ecx@27

  v3 = a2;
  v4 = a1;
  if ( a1 > a2 && a1 < a2 + a3 )
  {
    v7 = a3 + a2 - 4;
    v8 = a3 + a1 - 4;
    if ( v8 & 3 )
    {
      if ( a3 >= 4 )
        JUMPOUT(__CS__, *((_DWORD *)unknown_libname_54 + (v8 & 3) + 1));
      switch ( a3 )
      {
        case 0u:
LABEL_34:
          result = a1;
          break;
        case 1u:
LABEL_35:
          *(_BYTE *)(v8 + 3) = *(_BYTE *)(v7 + 3);
          result = a1;
          break;
        case 2u:
LABEL_36:
          *(_BYTE *)(v8 + 3) = *(_BYTE *)(v7 + 3);
          *(_BYTE *)(v8 + 2) = *(_BYTE *)(v7 + 2);
          result = a1;
          break;
        case 3u:
          goto LABEL_37;
      }
    }
    else
    {
      v9 = a3 >> 2;
      if ( a3 >> 2 < 8 )
      {
        switch ( -v9 )
        {
          case 0:
            break;
        }
      }
      else
      {
        memcpy((void *)v8, (const void *)v7, 4 * v9);
        v7 += 4 * v9;
        v8 += 4 * v9;
      }
      switch ( a3 & 3 )
      {
        case 0u:
          goto LABEL_34;
        case 1u:
          goto LABEL_35;
        case 2u:
          goto LABEL_36;
        case 3u:
          break;
      }
LABEL_37:
      *(_BYTE *)(v8 + 3) = *(_BYTE *)(v7 + 3);
      *(_BYTE *)(v8 + 2) = *(_BYTE *)(v7 + 2);
      *(_BYTE *)(v8 + 1) = *(_BYTE *)(v7 + 1);
      result = a1;
    }
  }
  else
  {
    if ( a3 >= 0x100 && dword_101ADC64 && (v3 = a2, v4 = a1, (a1 & 0xF) == (a2 & 0xF)) )
    {
      result = _VEC_memcpy(a1, a2, a3);
    }
    else
    {
      if ( v4 & 3 )
      {
        if ( a3 >= 4 )
          JUMPOUT(__CS__, *((_DWORD *)unknown_libname_35 + (v4 & 3) + 1));
        JUMPOUT(__CS__, *((_DWORD *)unknown_libname_47 + a3 - 4));
      }
      v6 = a3 >> 2;
      if ( a3 >> 2 < 8 )
      {
        switch ( v6 )
        {
          case 0u:
            goto LABEL_10;
          case 1u:
            goto LABEL_21;
          case 2u:
            goto LABEL_20;
          case 3u:
            goto LABEL_19;
          case 4u:
            goto LABEL_18;
          case 5u:
            goto LABEL_17;
          case 6u:
            break;
          case 7u:
            *(_DWORD *)(v4 + 4 * v6 - 28) = *(_DWORD *)(v3 + 4 * v6 - 28);
            break;
        }
        *(_DWORD *)(v4 + 4 * v6 - 24) = *(_DWORD *)(v3 + 4 * v6 - 24);
LABEL_17:
        *(_DWORD *)(v4 + 4 * v6 - 20) = *(_DWORD *)(v3 + 4 * v6 - 20);
LABEL_18:
        *(_DWORD *)(v4 + 4 * v6 - 16) = *(_DWORD *)(v3 + 4 * v6 - 16);
LABEL_19:
        *(_DWORD *)(v4 + 4 * v6 - 12) = *(_DWORD *)(v3 + 4 * v6 - 12);
LABEL_20:
        *(_DWORD *)(v4 + 4 * v6 - 8) = *(_DWORD *)(v3 + 4 * v6 - 8);
LABEL_21:
        *(_DWORD *)(v4 + 4 * v6 - 4) = *(_DWORD *)(v3 + 4 * v6 - 4);
        v3 += 4 * v6;
        v4 += 4 * v6;
      }
      else
      {
        memcpy((void *)v4, (const void *)v3, 4 * v6);
        v3 += 4 * v6;
        v4 += 4 * v6;
      }
LABEL_10:
      switch ( a3 & 3 )
      {
        case 0u:
          result = a1;
          break;
        case 1u:
          *(_BYTE *)v4 = *(_BYTE *)v3;
          result = a1;
          break;
        case 2u:
          *(_BYTE *)v4 = *(_BYTE *)v3;
          *(_BYTE *)(v4 + 1) = *(_BYTE *)(v3 + 1);
          result = a1;
          break;
        case 3u:
          *(_BYTE *)v4 = *(_BYTE *)v3;
          *(_BYTE *)(v4 + 1) = *(_BYTE *)(v3 + 1);
          *(_BYTE *)(v4 + 2) = *(_BYTE *)(v3 + 2);
          result = a1;
          break;
      }
    }
  }
  return result;
}

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 26
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
根本看不懂- -!
2011-11-19 11:50
0
游客
登录 | 注册 方可回帖
返回
//