首页
社区
课程
招聘
C++代码编译提示“_BYTE” : 未声明的标识符
发表于: 2015-5-29 11:30 15667

C++代码编译提示“_BYTE” : 未声明的标识符

2015-5-29 11:30
15667
int __cdecl sub_403410(int a1, void *a2)
{
  int v2; // ebp@1
  signed int v3; // edi@1
  unsigned int v4; // ebx@4
  int v5; // esi@5
  int result; // eax@16
  unsigned int v7; // [sp+Ch] [bp-Ch]@1
  unsigned int v8; // [sp+10h] [bp-8h]@4
  int v9; // [sp+1Ch] [bp+4h]@1

  v2 = a1;
  v3 = 0;
  v7 = 0;
  v9 = 0;
  if ( v2 && a2 && strlen((const char *)v2) + 1 <= 0x64 )
  {
    v4 = strlen((const char *)v2);
    v8 = v4;
    memset(a2, 0, 0x64u);
    if ( (signed int)v4 <= 0 )
    {
LABEL_16:
      result = 1;
    }
    else
    {
      while ( 1 )
      {
        v5 = v3 + v2;
        v9 += *(_BYTE *)(v3 + v2);
        if ( v3 % 2 == 1 )
        {
          v4 = v8;
          *(_BYTE *)v5 = *(_BYTE *)(v3 + v2 - 1)
                       * (*(_BYTE *)(v3 + v2) * ((*(_BYTE *)v5 + 3 * *(_BYTE *)(v3 + v2 - 1)) ^ 0xE) + v9 / 2);
        }
        if ( v3 % 3 == 2 )
          *(_BYTE *)v5 = *(_BYTE *)(v3 + v2 - 1) * ((*(_BYTE *)(v3 + v2 - 1) + *(_BYTE *)v5 + 13) ^ 0x11);
        if ( v3 % 3 == 3 )
          *(_BYTE *)v5 = ((*(_BYTE *)v5 + *(_BYTE *)(v3 + v2 - 1) / 3) ^ 0x13)
                       * ((*(_BYTE *)v5 + *(_BYTE *)(v3 + v2 - 1) / 3) ^ 0x13);
        if ( v3 > 0 && v3 < v5 + -1 - v2 )
          *(_BYTE *)v5 = v9 ^ 0xAB;
        if ( v7 >= 0x64 )
          break;
        v7 += sprintf((char *)a2 + v7, "%x", *(_BYTE *)v5);
        ++v3;
        if ( v3 >= (signed int)v4 )
          goto LABEL_16;
      }
      *(_BYTE *)a2 = 0;
      result = 0;
    }
  }
  else
  {
    result = 0;
  }
  return result;
}

这是ida反汇编出来的
main函数里调用方法
strncpy(szIn, "ALFEIOEK1432693115", OUTBUFFERSIZE-1);
	char * Xx;
	memset(Xx, 0, 0x64u);
	
	//Algo(szIn, szOut);
	sub_403410((int)Xx, szIn);
	printf("\nOutput:\t%s\n", szIn);

提示错误:error C2065: “_BYTE” : 未声明的标识符
然后附上源程序
http://pan.baidu.com/s/1kT9rOyV

004043F8   .  E8 13F0FFFF   call Arecover.00403410 //这是call的地方

请帮我看看,代码哪里不对?
或者看看我这帖子
http://bbs.pediy.com/showthread.php?t=200826

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (12)
雪    币: 71
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
好好学习下C++再来吧,只会一个F5?
2015-5-29 11:35
0
雪    币: 4
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
c++真心不太会,想请教下“_BYTE” : 未声明的标识这个错误怎么弄
2015-5-29 11:47
0
雪    币: 9941
活跃值: (2158)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
4
这里的 _BYTE  应该就是  BYTE
2015-5-29 11:49
0
雪    币: 4
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
这个我改过然后会出错
*(_BYTE *)v5 = *(_BYTE *)(v3 + v2 - 1)
                       * (*(_BYTE *)(v3 + v2) * ((*(_BYTE *)v5 + 3 * *(_BYTE *)(v
这行 会有内存错误

0x00411c79 处未处理的异常: 0xC0000005: 写入位置 0x00424691 时发生访问冲突 。
2015-5-29 11:54
0
雪    币: 9941
活跃值: (2158)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
6
内存属性的问题吧

先设置可写吧
2015-5-29 12:10
0
雪    币: 16495
活跃值: (2518)
能力值: ( LV9,RANK:147 )
在线值:
发帖
回帖
粉丝
7
........直接复制F5伪码到C的吧?v5只是int型.当你读出了它的范围,自然就越界了.报0xC0000005也不奇怪.
2015-5-29 13:27
0
雪    币: 4
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
2015-5-29 13:58
0
雪    币: 627
活跃值: (663)
能力值: ( LV9,RANK:270 )
在线值:
发帖
回帖
粉丝
9
_BYTE == unsigned char

参见 Visual Studio "Include\WinDef.h"
[FONT="Courier"][COLOR="Blue"]typedef unsigned char[/COLOR]       BYTE;[/FONT]
2015-5-29 14:42
0
雪    币: 101
活跃值: (157)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
10
直接用裸函数,然后把汇编代码复制进去应该没问题..有个Asm2Clipboard插件不错,可以自动处理那些跳转..
2015-5-29 15:39
0
雪    币: 19
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
你都没对_BYTE进行定义怎么可以编译对呢。
2015-5-29 16:08
0
雪    币: 4
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
2015-5-30 09:39
0
雪    币: 4
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
谢谢!!
2015-5-30 09:52
0
游客
登录 | 注册 方可回帖
返回
//