如果我设置了类似的东西0x00000040
(我的代码位于这个地址),那么程序会因为这个错误而崩溃:
The application was unable to start correctly (0xc000007b)
但是如果我jmp
从代码部分到 0x00400040 那么它就可以工作了。
为什么我收到那个奇怪地址 ( 0xc000007b
) 的错误信息?是否可以从位于段外的代码开始执行程序?
我使用 Windows 8。
如果我设置了类似的东西0x00000040
(我的代码位于这个地址),那么程序会因为这个错误而崩溃:
The application was unable to start correctly (0xc000007b)
但是如果我jmp
从代码部分到 0x00400040 那么它就可以工作了。
为什么我收到那个奇怪地址 ( 0xc000007b
) 的错误信息?是否可以从位于段外的代码开始执行程序?
我使用 Windows 8。
Windows 8 引入了一个新限制:AddressOfEntryPoint
不能小于SizeOfHeaders
.
设置SizeOfHeaders
要AddressOfEntryPoint
以使其工作。
您得到的错误定义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)