首页
社区
课程
招聘
为什么CreateFileA在OD调试时返回值为-1
发表于: 2012-11-21 11:12 4877

为什么CreateFileA在OD调试时返回值为-1

2012-11-21 11:12
4877
char *FileName = "C:\\1.tmp";
        HANDLE hHandle = CreateFileA(FileName,
                                   GENERIC_READ|GENERIC_WRITE,
                            0,
                                NULL,
                                CREATE_ALWAYS,
                                FILE_ATTRIBUTE_NORMAL,
                                NULL);
直接运行应用程序可以成功创建文件,但在OD中调试时hHandle 却返回-1,这是为什么呢,换了几个OD版本都不行,但在WinDbg中调试却可以,是因为OD的调试权限没WinDbg高吗,怎样设置OD能让CreateFileA返回成功?

补充:GetLastError() 错误码返回值 5 拒绝访问

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 53
活跃值: (23)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
GetLastError 返回5?
CreateFileA之后有没有CloseHandle?。占用状态当然拒绝访问了。
2012-11-21 15:24
0
雪    币: 245
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
CreateFileA都没创建成功,不需要CloseHandle吧
2012-11-21 22:41
0
雪    币: 204
活跃值: (43)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
有可能是你的此程序已被打开。创建后不使用需要调用CloseHandle
2012-11-21 22:47
0
雪    币: 245
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
int main(int argc, char* argv[])
{
        char *FileName = "C:\\1.tmp";
        HANDLE hHandle = CreateFileA(FileName,
                                       GENERIC_READ|GENERIC_WRITE,                                                                       0,                                               
                                               NULL,                                               
                                       CREATE_ALWAYS,                                                                               FILE_ATTRIBUTE_NORMAL,
                               NULL);

        if (hHandle != INVALID_HANDLE_VALUE)
        {
                printf("%s\n","创建文件成功");
                CloseHandle(hHandle);
        }
        else
        {
                int nError = GetLastError();
                printf("%s:Error %d\n","创建文件失败",nError);
        }

        getchar();

        return 0;
}
我程序就那么两句,因为在调试别人的程序时候,在调用完CreateFileA之后会弹出错误提示,所以我自己在VC6.0里尝试了一下,发现就是我上面提到的问题
2012-11-21 23:20
0
雪    币: 245
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
问题解决了,OD插件的问题 删了StrongOD插件就OK啦
2012-11-21 23:43
0
游客
登录 | 注册 方可回帖
返回
//