首页
社区
课程
招聘
[求助]IDA代码还原
发表于: 2010-4-11 01:19 6852

[求助]IDA代码还原

2010-4-11 01:19
6852
一DLL里,用IDA反出来
char *__cdecl sub_10001270()
{
  int v0; // esi@1
  char *v1; // ebx@2
  int v2; // ebp@2
  char v3; // al@9
  char v4; // cl@9
  char Str; // [sp+Ah] [bp-46h]@4
  char v7; // [sp+Bh] [bp-45h]@4
  char v8; // [sp+Ch] [bp-44h]@6
  char v9; // [sp+Dh] [bp-43h]@6
  char v10; // [sp+Eh] [bp-42h]@8
  char v11; // [sp+Fh] [bp-41h]@8
  char DstBuf; // [sp+10h] [bp-40h]@3
  char v13; // [sp+11h] [bp-3Fh]@6
  char v14; // [sp+12h] [bp-3Eh]@8
  __int16 v15; // [sp+14h] [bp-3Ch]@3
  char v16; // [sp+16h] [bp-3Ah]@3
  unsigned int v17; // [sp+18h] [bp-38h]@1
  char Source; // [sp+1Ch] [bp-34h]@1
  char v19; // [sp+1Dh] [bp-33h]@1
  char v20; // [sp+4Dh] [bp-3h]@1

  Source = Text;
  v0 = 1;
  memset(&v19, 0, 0x30u);
  v20 = 0;
  dword_10007254 = 7;
  v17 = (strlen("677B6B7031352C796F7B2D7559675873627526676D3671686C7576775D3377812F382F35696B6632607A67") - 1) >> 1;
  if ( (signed int)v17 >= 1 )
  {
    v2 = v17;
    v1 = &Dest[1];
    do
    {
      v15 = 0;
      v16 = 0;
      DstBuf = Text;
      itoa(v0, &DstBuf, 10);
      if ( strlen(&DstBuf) == 2 )
      {
        Str = DstBuf;
        v7 = 0;
        v2 = atoi(&Str);
      }
      if ( strlen(&DstBuf) == 3 )
      {
        v9 = 0;
        v8 = v13;
        v2 = atoi(&v8);
      }
      if ( strlen(&DstBuf) == 4 )
      {
        v10 = v14;
        v11 = 0;
        v2 = atoi(&v10);
      }
      v4 = *v1;
      LOBYTE(v15) = *(v1 - 1);
      HIBYTE(v15) = v4;
      v16 = 0;
      v3 = strtol((const char *)&v15, 0, 16);
      switch ( v2 )
      {
        case 1:
          ++v3;
          goto LABEL_18;
        case 2:
          v3 -= 7;
          goto LABEL_18;
        case 3:
        case 5:
          v3 += 9;
          goto LABEL_18;
        case 6:
          v3 -= 6;
          goto LABEL_18;
        case 7:
          v3 += 3;
          goto LABEL_18;
        case 8:
          v3 -= 2;
          goto LABEL_18;
        case 9:
          v3 += 8;
          goto LABEL_18;
        case 0:
          v3 -= 4;
          goto LABEL_18;
        case 4:
LABEL_18:
          *((_BYTE *)&v17 + v0 + 3) = v3;
          break;
        default:
          break;
      }
      ++v0;
      v1 += 2;
    }
    while ( v0 <= (signed int)v17 );
  }
  memset("677B6B7031352C796F7B2D7559675873627526676D3671686C7576775D3377812F382F35696B6632607A67", 0, 0x64u);
  Dest[100] = 0;
  dword_10007254 = 7;
  return strncpy(
           "677B6B7031352C796F7B2D7559675873627526676D3671686C7576775D3377812F382F35696B6632607A67",
           &Source,
           0x65u);
}
直接丢VC6.0新建立的工程里,编译提示
D:\project\TestExe\CS\CS.CPP(33) : error C2065: 'Text' : undeclared identifier
D:\project\TestExe\CS\CS.CPP(37) : error C2065: 'dword_10007254' : undeclared identifier
D:\project\TestExe\CS\CS.CPP(42) : error C2065: 'Dest' : undeclared identifier
D:\project\TestExe\CS\CS.CPP(42) : error C2109: subscript requires array or pointer type
D:\project\TestExe\CS\CS.CPP(42) : error C2102: '&' requires l-value
D:\project\TestExe\CS\CS.CPP(68) : error C2106: '=' : left operand must be l-value
D:\project\TestExe\CS\CS.CPP(69) : error C2106: '=' : left operand must be l-value
D:\project\TestExe\CS\CS.CPP(71) : warning C4244: '=' : conversion from 'long' to 'char', possible loss of data
D:\project\TestExe\CS\CS.CPP(101) : error C2065: '_BYTE' : undeclared identifier
D:\project\TestExe\CS\CS.CPP(101) : error C2059: syntax error : ')'
D:\project\TestExe\CS\CS.CPP(112) : error C2109: subscript requires array or pointer type
D:\project\TestExe\CS\CS.CPP(112) : error C2106: '=' : left operand must be l-value

求教,怎么修改后,可以编译?
IDA里的很多命名方式和C++,貌似不太一样
附件在下面

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

上传的附件:
收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 4399
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
你没有pdb,他怎么给你函数命名。如果你觉得f5一下就可以编译,那我也应该保持沉默。
2010-4-11 08:50
0
雪    币: 220
活跃值: (701)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
PDB肯定是搞不到的。没人帮看下怎么还原?
2010-4-11 14:46
0
雪    币: 245
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
额的神~···
2010-4-11 16:25
0
雪    币: 231
活跃值: (38)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
直接F5,肯定不能编译,还有些数组和全局变量之类,还是要手动修改一下的
2010-4-12 10:58
0
游客
登录 | 注册 方可回帖
返回
//