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

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

2015-5-29 11:30
15408
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

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

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

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

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

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