首页
社区
课程
招聘
[旧帖] [求助]编译时winreg.h出错怎么解决? 0.00雪花
发表于: 2013-10-10 15:18 1750

[旧帖] [求助]编译时winreg.h出错怎么解决? 0.00雪花

2013-10-10 15:18
1750
最近在学习看雪论坛出版的0day安全:软件漏洞分析技术,在第二第三章的例子实践中总是出现这样的错误:
Compiling...
search_opcode.cpp
d:\winddk\2600\inc\wxp\winreg.h(107) : error C2146: syntax error : missing ';' before identifier 've_valueptr'
d:\winddk\2600\inc\wxp\winreg.h(107) : error C2501: 'DWORD_PTR' : missing storage-class or type specifiers
d:\winddk\2600\inc\wxp\winreg.h(107) : error C2501: 've_valueptr' : missing storage-class or type specifiers
d:\winddk\2600\inc\wxp\winreg.h(113) : error C2146: syntax error : missing ';' before identifier 've_valueptr'
d:\winddk\2600\inc\wxp\winreg.h(113) : error C2501: 'DWORD_PTR' : missing storage-class or type specifiers
d:\winddk\2600\inc\wxp\winreg.h(113) : error C2501: 've_valueptr' : missing storage-class or type specifiers
d:\winddk\2600\inc\wxp\winreg.h(145) : error C2065: 'HKEY' : undeclared identifier
d:\winddk\2600\inc\wxp\winreg.h(146) : error C2146: syntax error : missing ')' before identifier 'hKey'
d:\winddk\2600\inc\wxp\winreg.h(146) : warning C4229: anachronism used : modifiers on data are ignored
d:\winddk\2600\inc\wxp\winreg.h(146) : error C2491: 'RegCloseKey' : definition of dllimport data not allowed

希望大神们出手相助,感激不尽!
源代码:
#include <windows.h>
#include <stdio.h>
#define DLL_NAME "user32.dll"
main()
{
        BYTE* ptr;
        int position,address;
        HINSTANCE handle;
        BOOL done_flag = FALSE;

        handle=LoadLibrary(DLL_NAME);

        if(!handle)
        {
                printf(" load dll erro !");
                exit(0);
        }

        ptr = (BYTE*)handle;
       
        for(position = 0; !done_flag; position++)
        {
                try
                {
                        if(ptr[position] == 0xFF && ptr[position+1] == 0xE4)
                        {
                                //0xFFE4 is the opcode of jmp esp
                                int address = (int)ptr + position;
                                printf("OPCODE found at 0x%x\n",address);
                        }
                }
                catch(...)
                {
                        int address = (int)ptr + position;
                        printf("END OF 0x%x\n", address);
                        done_flag = true;
                }
        }
}

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

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 37
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
已经解决了,是小弟之前学习驱动时将ddk内的头文件的路径置顶了,导致vc编译其他程序时先查找ddk里的头文件,遇到头文件名相同的就引用了,所以编译时用的不是vc的头文件。
2013-10-10 19:39
0
游客
登录 | 注册 方可回帖
返回
//