dsfighiu
dsfighiu
采纳率0%
2021-04-28 12:35

如何在win10 搭建VC6.0 C++ 搭建WIN API 编译环境 代码如下

300
static NAKED VOID  Nakd_KiAttachProcess()   
8.{   
9.  __asm   
10.  {   
11.    mov     edi,edi   
12.    push    ebp   
13.    mov     ebp,esp   
14.    push    ebx   
15.    push    esi   
16.    mov    eax,KiAttachProcessAddress  //注意这个是全局变量 BYTE*   
17.    add    eax,7   
18.    jmp    eax   
19.  }   
20.}   
21.//   
22.//  名称:  RecoveryHook_KiAttachProcess   
23.//  功能:  解除游戏保护对_KiAttachProcess函数的HOOK(DNF)   
24.//  参数:     
25.//  返回:  状态   
26.//   
27.NTSTATUS My_RecoveryHook_KiAttachProcess()   
28.{   
29.  BYTE    *KeAttachProcessAddress = NULL;  //KeAttachProcess函数地址   
30.  BYTE    *p;   
31.  BYTE    MovEaxAddress[5]  = {0xB8,0,0,0,0};  //   
32.  BYTE    JmpEax[2]      = {0xff,0xe0};   
33.  KIRQL    Irql;   
34.  //特征码   
35.  BYTE  Signature1 = 0x56,  //p-1   
36.      Signature2 = 0x57,  //p-2   
37.      Signature3 = 0x5F,  //p-3   
38.      Signature4 = 0x5E,  //p+5   
39.      Signature5 = 0xE8;  //p第一个字节  
40.  //获得KeAttachProcess地址,然后通过特征码找到   
41.  //KiAttachProcess的地址   
42.  KeAttachProcessAddress = (BYTE*)MyGetFunAddress(L"KeAttachProcess");   
43.  if (KeAttachProcessAddress == NULL)   
44.  {   
45.    KdPrint(("KeAttachProcess地址获取失败\n"));   
46.    return  FAILED_TO_OBTAIN_FUNCTION_ADDRESSES;   
47.  }   
48.  //将p指向KeAttachProcess函数开始处   
49.  p = KeAttachProcessAddress;   
50.  while (1)   
51.  {   
52.    if ((*(p-1) == Signature1) &&   
53.      (*(p-2) == Signature2) &&   
54.      (*(p+5) == Signature3) &&   
55.      (*(p+6) == Signature4) &&   
56.      (*p    == Signature5))   
57.    {   
58.      //定位成功后取地址   
59.      KiAttachProcessAddress = *(PULONG)(p+1)+(ULONG)(p+5);   
60.      break;   
61.    }  
62.    //推动指针   
63.    p++;   
64.  }  
65.  //计算中继函数地址   
66.  *(ULONG *)(MovEaxAddress+1)=(ULONG)Nakd_KiAttachProcess;  
67.  WPOFF();  //清除CR0   
68.  //提升IRQL中断级   
69.  Irql=KeRaiseIrqlToDpcLevel();   
70.  //写入   
71.  RtlCopyMemory(KiAttachProcessAddress,MovEaxAddress,5);   
72.  RtlCopyMemory(KiAttachProcessAddress+5,JmpEax,2);   
73.  //恢复Irql   
74.  KeLowerIrql(Irql);   
75.  WPON();    //恢复CR0  
76.  return  STATUS_SUCCESS;   
77.}  


这行代码上面有汇编   如何能编译这段代码创建程序 

  • 点赞
  • 收藏
  • 复制链接分享

5条回答

  • technologist_32 CSDN技术专家团-The Last Time 8天前

    首先 NAKED编译器就不认识了...

    点赞 评论 复制链接分享
  • software7503 CSDN技术专家团-赖老师(软件之家) 9天前
    点赞 评论 复制链接分享
  • hubaoquanu 胡宝全 4天前
    点赞 评论 复制链接分享
  • QA_Assistant 有问必答小助手 8天前

    非常感谢您使用有问必答服务,为了后续更快速的帮您解决问题,现诚邀您参与有问必答体验反馈。您的建议将会运用到我们的产品优化中,希望能得到您的支持与协助!

    速戳参与调研>>>https://t.csdnimg.cn/Kf0y

    点赞 评论 复制链接分享
  • QA_Assistant 有问必答小助手 9天前

    您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

    如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

    ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632

    点赞 评论 复制链接分享

相关推荐