关于NT NATIVE APP
昨天无意中看到了有人翻出microDebug去年写的关于Natvie App的贴子,该帖子引用了Mark Russinovich的文章及代码,后来在网上搜了一下,讲NATIVE APP的基本都引是Mark Russinovich的代码,我相信microDebug一定有更好的东西,只是不便写出来,我就来补充一下,其它请参考虑microDebug原贴:http://bbs.pediy.com/showthread.php?t=117694。
Mark Russinovich的这个代码已经是老掉牙了,它已不适用于XP以后的系统了,这样说有两个原因:
1.NtProcessStartup的原型已发生变化,目前的原型为:
void NtProcessStartup(struct _PEB* Peb);
2.XP/VISTA/WIN7的DDK中还是为NATIVE APP提供了点支持的,DDK中,有一个名为NT.LIB的库文件,此库提供NATIVE APP的最基本的启动代码,然后调用main函数,main函数的原型如下:
int main(int argc, char* argv[], char* envp[], unsigned long DebugParam);
基于此库,最简单的native程序为:
int main()
{
return 0;
}
从VISTA开始,main函数也有unicode版本,即:
int wmain(int argc, wchar* argv[], wchar_t* envp[], unsigned long DebugParam);
如果要使用unicode版本,则程序入口要指定为:NtProcessStartupW。
