首页
社区
课程
招聘
[求助]VS13编译的程序运行时出错C000007B
发表于: 2017-3-7 15:30 3651

[求助]VS13编译的程序运行时出错C000007B

2017-3-7 15:30
3651

VS13 x86 WIN7编译完程序,一运行就出错,拿到虚拟机中在内核调试下发现LdrpCallInitRoutine调用hal模块的入口的时候会检测TEB+1C处的EnvironmentPointer指针+51处的一字节值是否为0,因为TEB+1C处的指针为0,所以导致访问[0x00000051]出现访问违例。

源文件中因为需要调用内核字符串函数,所以包含了ntoskrnl.lib,在生成的控制台程序中用depends查看其依赖的dll包括ntoskrnl.exe hal.dll kdcom.dll等,其中的好几个dll都显示的是黄颜色标志。

我想问一下造成这种问题的原因是什么,还有控制台程序中能不能调用内核类的函数?


[课程]FART 脱壳王!加量不加价!FART作者讲授!

收藏
免费 0
支持
分享
最新回复 (9)
雪    币: 1711
活跃值: (516)
能力值: ( LV12,RANK:200 )
在线值:
发帖
回帖
粉丝
2
你一个应用程序不老老实实用user mode api,跑去用kernel mode....
2017-3-7 15:49
0
雪    币: 433
活跃值: (1895)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
3
7B我记得是D3D的错误....
2017-3-7 17:12
0
雪    币: 44
活跃值: (32)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
supercolin 你一个应用程序不老老实实用user mode api,跑去用kernel mode....
让你见笑了,我在学习软件保护分析技术中的模块hook,我对它理解是:既然它是通过仿建KERNEL32的LDR结构然后插入PEB_LDR,所以我采用的是控制台编程,是不是我对其中的整体思路理解错了?要用DLL还是驱动?还望你能多多指点一下
2017-3-8 10:31
0
雪    币: 44
活跃值: (32)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
萌克力 7B我记得是D3D的错误....
你说的是不是Direct 3D类的错误?网上提到的大部分都说是它的原因,我想主要的原因可能是直接调用了RtlInitAnsiString,在生成的文件中找不到依赖的DLL?
2017-3-8 10:36
0
雪    币: 1711
活跃值: (516)
能力值: ( LV12,RANK:200 )
在线值:
发帖
回帖
粉丝
6




MOVESP

让你见笑了,我在学习软件保护分析技术中的模块hook,我对它理解是:既然它是通过仿建KERNEL32的LDR结构然后插入PEB_LDR,所以我采用的是控制台编程,是不是我对其中的整体思路理解错了?要用 ...

怎么hook和是不是控制台编程没有必然联系。 

根据问题字面描述,你只是想用字符串处理,那完全没必要用kernel mode api。NtosKrnl.lib导出的Rtlxxx都是driver support routine,给kernel mode driver用的,见:https://msdn.microsoft.com/en-us/library/windows/hardware/ff561918(v=vs.85).aspx 


猜测你是想用ntdll.dll里的RtlInitAnsiString吧? 

那你应该: 

hnd = GetModuleHandle(TEXT("ntdll.dll")); 

GetProcAddress(hnd,"RtlInitAnsiString");

2017-3-8 13:32
0
雪    币: 1711
活跃值: (516)
能力值: ( LV12,RANK:200 )
在线值:
发帖
回帖
粉丝
7
MOVESP 你说的是不是Direct 3D类的错误?网上提到的大部分都说是它的原因,我想主要的原因可能是直接调用了RtlInitAnsiString,在生成的文件中找不到依赖的DLL?

ntstatus.h 中是这么定义的:


//

// MessageId: STATUS_INVALID_IMAGE_FORMAT

//

// MessageText:

//

// {Bad Image}

// %hs is either not designed to run on Windows or it contains an error. Try installing the program again using the original installation media or contact your system administrator or the software vendor for support. Error status 0x%08lx.

//

#define STATUS_INVALID_IMAGE_FORMAT      ((NTSTATUS)0xC000007BL)


所以仅有错误码,没有上下文,是完全无法判断问题的。。。

2017-3-8 13:36
0
雪    币: 45
活跃值: (93)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
8
你R3程序导入了ntoskrnl.exe,ntdll加载内核模块会失败,自然会出现0xC000007B,你应该链接ntdll.lib,或者动态调用。
2017-3-8 13:41
0
雪    币: 44
活跃值: (32)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
supercolin ntstatus.h 中是这么定义的://// MessageId: STATUS_INVALID_IMAGE_FORMAT//// MessageText://// {Bad Image}// %h ...
谢谢你宝贵的意见,听君一席话胜读十年书,非常感谢
2017-3-8 14:22
0
雪    币: 44
活跃值: (32)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
netsd 你R3程序导入了ntoskrnl.exe,ntdll加载内核模块会失败,自然会出现0xC000007B,你应该链接ntdll.lib,或者动态调用。[em_48]
谢谢你的意见,我再试试看
2017-3-8 14:24
0
游客
登录 | 注册 方可回帖
返回
//