首页
社区
课程
招聘
这是哪里错了?好像缺个头文件
发表于: 2011-1-26 17:20 7450

这是哪里错了?好像缺个头文件

2011-1-26 17:20
7450
这是哪里错了?好像缺个头文件

谢谢大家

1>123.c(140) : error C2065: 'FAILED_TO_OBTAIN_FUNCTION_ADDRESSES' : undeclared identifier

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

收藏
免费 0
支持
分享
最新回复 (19)
雪    币: 71
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
出错的地方就这里:
return  FAILED_TO_OBTAIN_FUNCTION_ADDRESSES;

不知道怎么办?
2011-1-26 17:22
0
雪    币: 153
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
查下这个FAILED_TO_OBTAIN_FUNCTION_ADDRESSES在哪个头文件定义的,然后加进去
2011-1-26 18:22
0
雪    币: 1157
活跃值: (847)
能力值: ( LV8,RANK:150 )
在线值:
发帖
回帖
粉丝
4
复制人家的代码吧?? 这里估计是人家宏定义的一个常量,自己看着点代码
2011-1-26 18:25
0
雪    币: 71
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
怎么能查到FAILED_TO_OBTAIN_FUNCTION_ADDRESSES在哪个头文件?

谢谢兄弟
2011-1-26 20:11
0
雪    币: 71
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
对,就是复制人家的代码
但是,看不出什么宏定义的常量
怎么办?

谢谢兄弟
2011-1-26 20:12
0
雪    币: 233
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
自己看着点代码
2011-1-26 20:15
0
雪    币: 71
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
我说兄弟们啊,怎么看啊,
人家代码就一段,就是下面这些
红色的那句,
麻烦高手给个办法吧
3q

//////////////////////////////////////////////////////////////////////
//  名称:  Nakd_KiAttachProcess
//  功能:  My_RecoveryHook_KiAttachProcess的中继函数
//  参数:  
//  返回:  
//////////////////////////////////////////////////////////////////////
static NAKED VOID  Nakd_KiAttachProcess()
{
  __asm
  {
    mov     edi,edi
    push    ebp
    mov     ebp,esp
    push    ebx
    push    esi
    mov    eax,KiAttachProcessAddress  //注意这个是全局变量 BYTE*
    add    eax,7
    jmp    eax
  }
}
//////////////////////////////////////////////////////////////////////
//  名称:  RecoveryHook_KiAttachProcess
//  功能:  解除游戏保护对_KiAttachProcess函数的HOOK(DNF)
//  参数:  
//  返回:  状态
//////////////////////////////////////////////////////////////////////
NTSTATUS My_RecoveryHook_KiAttachProcess()
{
  BYTE    *KeAttachProcessAddress = NULL;  //KeAttachProcess函数地址
  BYTE    *p;
  BYTE    MovEaxAddress[5]  = {0xB8,0,0,0,0};  //
  BYTE    JmpEax[2]      = {0xff,0xe0};
  KIRQL    Irql;
  //特征码
  BYTE  Signature1 = 0x56,  //p-1
      Signature2 = 0x57,  //p-2
      Signature3 = 0x5F,  //p-3
      Signature4 = 0x5E,  //p+5
      Signature5 = 0xE8;  //p第一个字节

  //获得KeAttachProcess地址,然后通过特征码找到
  //KiAttachProcess的地址
  KeAttachProcessAddress = (BYTE*)MyGetFunAddress(L"KeAttachProcess");
  if (KeAttachProcessAddress == NULL)
  {
    KdPrint(("KeAttachProcess地址获取失败\n"));
    return  FAILED_TO_OBTAIN_FUNCTION_ADDRESSES;
  }
  //将p指向KeAttachProcess函数开始处
  p = KeAttachProcessAddress;
  while (1)
  {
    if ((*(p-1) == Signature1) &&
      (*(p-2) == Signature2) &&
      (*(p+5) == Signature3) &&
      (*(p+6) == Signature4) &&
      (*p    == Signature5))
    {
      //定位成功后取地址
      KiAttachProcessAddress = *(PULONG)(p+1)+(ULONG)(p+5);
      break;
    }

    //推动指针
    p++;
  }

  //计算中继函数地址
  *(ULONG *)(MovEaxAddress+1)=(ULONG)Nakd_KiAttachProcess;

  WPOFF();  //清除CR0
  //提升IRQL中断级
  Irql=KeRaiseIrqlToDpcLevel();
  //写入
  RtlCopyMemory(KiAttachProcessAddress,MovEaxAddress,5);
  RtlCopyMemory(KiAttachProcessAddress+5,JmpEax,2);
  //恢复Irql
  KeLowerIrql(Irql);
  WPON();    //恢复CR0

  return  STATUS_SUCCESS;
}
2011-1-26 20:55
0
雪    币: 233
活跃值: (285)
能力值: ( LV12,RANK:270 )
在线值:
发帖
回帖
粉丝
9
在NTSTATUS的中貌似没有预定义FAILED_TO_OBTAIN_FUNCTION_ADDRESSES,应该是自己定义的,自己define一下就好了,或者根据自己的需要进行修改……

附 NTSTATUS values:http://msdn.microsoft.com/en-us/library/cc704588(PROT.10).aspx
2011-1-26 21:02
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
自己定义一个NTSTATUS类型的宏吧,只要其类型为NTSTATUS用来表示出错返回就可以了。不一定要完全与看到的copy代码一致啊。想你也不是想要它的错误结果吧。
2011-1-27 09:00
0
雪    币: 38
活跃值: (52)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
11
楼主我感觉你很危险
2011-1-27 09:22
0
雪    币: 250
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
'FAILED_TO_OBTAIN_FUNCTION_ADDRESSES' 是别人代码中自己定义的一个LONG型常量,你可以参照STATUS_SUCESS方式定义,例#define FAILED_TO_OBTAIN_FUNCTION_ADDRESSES          ((NTSTATUS)0xC000000FL)
2011-1-27 10:46
0
雪    币: 153
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
既然是别人定义的,当然就查不到了,照ls说的自己定义吧
2011-1-27 10:56
0
雪    币: 71
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
谢谢ls各位兄弟,尤其是yujianker 兄弟

我明白了

再次感谢!~~~
2011-1-27 21:34
0
雪    币: 773
活跃值: (442)
能力值: ( LV9,RANK:200 )
在线值:
发帖
回帖
粉丝
15
if (KeAttachProcessAddress == NULL)
  {
    KdPrint(("KeAttachProcess地址获取失败\n"));
    return  FAILED_TO_OBTAIN_FUNCTION_ADDRESSES;
  }
看代码 不必纠结 返回值FAILED_TO_OBTAIN_FUNCTION_ADDRESSES,你直接返回0 也可以,
,只要你自己知道返回值代表什么意思就行了。
2011-1-28 21:39
0
雪    币: 71
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
谢谢倒霉蛋兄弟
2011-1-28 23:05
0
雪    币: 1157
活跃值: (847)
能力值: ( LV8,RANK:150 )
在线值:
发帖
回帖
粉丝
17
毛,少误导人,你在人家的代码里找,这个找的方法还用教吗??随便在一个文本编辑器中找不行吗? Ctrl+F,或者  编辑---查找 菜单什么的,哎呀...最好找到人家的定义,当然理解了代码的意思可以根据自己意愿随意返回个值了....
2011-1-30 16:37
0
雪    币: 1157
活跃值: (847)
能力值: ( LV8,RANK:150 )
在线值:
发帖
回帖
粉丝
18
不过,衷心劝lz加强一下语言基本功
2011-1-30 16:39
0
雪    币: 214
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
你这一个帖子这么多回复 这里人够热心的
2011-2-1 10:50
0
雪    币: 71
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
看雪的兄弟们很热心
谢谢大家
2011-2-1 13:32
0
游客
登录 | 注册 方可回帖
返回
//