Yanky
驱动牛犊
驱动牛犊
  • 注册日期2004-08-24
  • 最后登录2021-09-08
  • 粉丝0
  • 关注0
  • 积分16分
  • 威望95点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
  • 社区居民
阅读:5222回复:33

(100分)各位大虾:我调用NtCreateProcess为什么提示“找不到过程地址”呢?

楼主#
更多 发布于:2004-12-17 18:56
我在内核态想启动一个Win32进程,然后吊用了NtCreateSection,和NtCreateProcess。

当加载驱动时候,提示“找不到过程地址”。

我把NtCreateProcess注释了,就能加载了。

NtCreateSection 和 NtCreateProcess 都是 UnDoc的函数啊。
为什么NtCreateSection 能行,而NtCreateProcess 就找不到呢。

注:我连接了ntdll.lib,也声明了函数原型了。

代码如下:

NTSYSAPI
NTSTATUS
NTAPI
NtCreateSection(

OUT PHANDLE             SectionHandle,
IN ULONG                DesiredAccess,
IN POBJECT_ATTRIBUTES   ObjectAttributes OPTIONAL,
IN PLARGE_INTEGER       MaximumSize OPTIONAL,
IN ULONG                PageAttributess,
IN ULONG                SectionAttributes,
IN HANDLE               FileHandle OPTIONAL );



NTSYSAPI
NTSTATUS
NTAPI
NtCreateProcess(

OUT PHANDLE           ProcessHandle,
IN ACCESS_MASK        DesiredAccess,
IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,
IN HANDLE             ParentProcess,
IN BOOLEAN            InheritObjectTable,
IN HANDLE             SectionHandle OPTIONAL,
IN HANDLE             DebugPort OPTIONAL,
IN HANDLE             ExceptionPort OPTIONAL );


int TestCreateProcess()
{
NTSTATUS rc;
HANDLE hProcessCreated, hProcessOpened, hFile, hSection;
OBJECT_ATTRIBUTES ObjectAttr;
UNICODE_STRING ProcessName;
UNICODE_STRING SectionName;
UNICODE_STRING FileName;
LARGE_INTEGER MaxSize;
ULONG SectionSize=8192;


IO_STATUS_BLOCK ioStatusBlock;
LARGE_INTEGER  allocsize ;

DbgPrint(("Yanky starting TestLaunchProcess\n"));

RtlInitUnicodeString(&FileName, L"\\??\\d:\\winnt\\system32\\calc.exe");
InitializeObjectAttributes( &ObjectAttr,
&FileName,
OBJ_CASE_INSENSITIVE,
NULL,
NULL);




rc = ZwCreateFile(
&hFile,
GENERIC_READ | GENERIC_EXECUTE,
&ObjectAttr,
&ioStatusBlock,
NULL,
FILE_ATTRIBUTE_NORMAL,
FILE_SHARE_READ,
FILE_OPEN,
0,
NULL,
0);
if (!NT_SUCCESS(rc)) {
DbgPrint(("Yanky -->Unable to open file, rc=%x\n", rc));
return 0;
}

/* then use NtCreateSection to map file */

MaxSize.HighPart=0;
MaxSize.LowPart=SectionSize;

rc=NtCreateSection(
&hSection,
SECTION_ALL_ACCESS,
NULL,
&MaxSize,
PAGE_READWRITE,
SEC_IMAGE,
hFile);
if (rc!=STATUS_SUCCESS) {
DbgPrint(("Unable to create section, rc=%x\n", rc));
return 0;
}
DbgPrint(("hSectionCreated=%x\n", hSection));


rc= NtCreateProcess (
                        &hProcessCreated,
                        PROCESS_ALL_ACCESS,
                        &ObjectAttr,
                        0xFFFFFFFF,
                        TRUE,
                        hSection,
                        NULL,
                        NULL);

        

if (rc!=STATUS_SUCCESS) {
DbgPrint(("Unable to create process, rc=%x\n", rc));
return 0;
}
DbgPrint(("hProcessCreated=%x\n", hProcessCreated));

NtClose(hProcessCreated);
return 1;

}

各位大虾帮帮忙!

最新喜欢:

aasa2aasa2
snowStart
驱动老牛
驱动老牛
  • 注册日期2004-04-06
  • 最后登录2011-06-02
  • 粉丝0
  • 关注0
  • 积分95分
  • 威望19点
  • 贡献值177点
  • 好评度1点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-12-17 21:41
编译也通过了,应该可以的,
会不会是别的问题呢

你是如何加载驱动的,
怎么看到提示“找不到过程地址”。
使用 ds的monitor吗

学习,关注,交流中... [email=fengyu@163.com]Email:snowstarth@163.com[/email] [url]http://bbs.zndev.com/?a=snowStart[/url]
Yanky
驱动牛犊
驱动牛犊
  • 注册日期2004-08-24
  • 最后登录2021-09-08
  • 粉丝0
  • 关注0
  • 积分16分
  • 威望95点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
  • 社区居民
板凳#
发布于:2004-12-18 09:12
谢谢大虾关注。

能编译通过,就是加载的时候会提示:“找不到过程地址”。

我用ds的monitor加载的。
Yanky
驱动牛犊
驱动牛犊
  • 注册日期2004-08-24
  • 最后登录2021-09-08
  • 粉丝0
  • 关注0
  • 积分16分
  • 威望95点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
  • 社区居民
地板#
发布于:2004-12-18 09:14
顶!
自己顶!

顶!
Yanky
驱动牛犊
驱动牛犊
  • 注册日期2004-08-24
  • 最后登录2021-09-08
  • 粉丝0
  • 关注0
  • 积分16分
  • 威望95点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
  • 社区居民
地下室#
发布于:2004-12-18 13:50
顶!。。。。。。。。。。
KMK
KMK
驱动大牛
驱动大牛
  • 注册日期2001-09-12
  • 最后登录2017-10-06
  • 粉丝2
  • 关注0
  • 积分42分
  • 威望404点
  • 贡献值2点
  • 好评度58点
  • 原创分1分
  • 专家分1分
  • 社区居民
5楼#
发布于:2004-12-18 14:33
可能是
1. 2K和XP的原型不同?
2. 试用ZwCreateProcess或NtCreateProcessEx!
snowStart
驱动老牛
驱动老牛
  • 注册日期2004-04-06
  • 最后登录2011-06-02
  • 粉丝0
  • 关注0
  • 积分95分
  • 威望19点
  • 贡献值177点
  • 好评度1点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-12-18 14:41
可能是
1. 2K和XP的原型不同?
2. 试用ZwCreateProcess或NtCreateProcessEx!


连接成功就说明原型声明是对的

试试自己用程序加载,不用DS的monitor加载
也许是Monitor自己问题

另自己跟踪一下
学习,关注,交流中... [email=fengyu@163.com]Email:snowstarth@163.com[/email] [url]http://bbs.zndev.com/?a=snowStart[/url]
AllenZh
驱动老牛
驱动老牛
  • 注册日期2001-08-19
  • 最后登录2015-11-27
  • 粉丝19
  • 关注10
  • 积分1316分
  • 威望2387点
  • 贡献值7点
  • 好评度321点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2004-12-18 17:15
我在内核态想启动一个Win32进程,然后吊用了NtCreateSection,和NtCreateProcess。

当加载驱动时候,提示“找不到过程地址”。

我把NtCreateProcess注释了,就能加载了。

NtCreateSection 和 NtCreateProcess 都是 UnDoc的函数啊。
为什么NtCreateSection 能行,而NtCreateProcess 就找不到呢。

注:我连接了ntdll.lib,也声明了函数原型了。

代码如下:

NTSYSAPI
NTSTATUS
NTAPI
NtCreateSection(

OUT PHANDLE             SectionHandle,
IN ULONG                DesiredAccess,
IN POBJECT_ATTRIBUTES   ObjectAttributes OPTIONAL,
IN PLARGE_INTEGER       MaximumSize OPTIONAL,
IN ULONG                PageAttributess,
IN ULONG                SectionAttributes,
IN HANDLE               FileHandle OPTIONAL );



NTSYSAPI
NTSTATUS
NTAPI
NtCreateProcess(

OUT PHANDLE           ProcessHandle,
IN ACCESS_MASK        DesiredAccess,
IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,
IN HANDLE             ParentProcess,
IN BOOLEAN            InheritObjectTable,
IN HANDLE             SectionHandle OPTIONAL,
IN HANDLE             DebugPort OPTIONAL,
IN HANDLE             ExceptionPort OPTIONAL );


int TestCreateProcess()
{
NTSTATUS rc;
HANDLE hProcessCreated, hProcessOpened, hFile, hSection;
OBJECT_ATTRIBUTES ObjectAttr;
UNICODE_STRING ProcessName;
UNICODE_STRING SectionName;
UNICODE_STRING FileName;
LARGE_INTEGER MaxSize;
ULONG SectionSize=8192;


IO_STATUS_BLOCK ioStatusBlock;
LARGE_INTEGER  allocsize ;

DbgPrint(("Yanky starting TestLaunchProcessn"));

RtlInitUnicodeString(&FileName, L"\??\d:\winnt\system32\calc.exe");
InitializeObjectAttributes( &ObjectAttr,
&FileName,
OBJ_CASE_INSENSITIVE,
NULL,
NULL);




rc = ZwCreateFile(
&hFile,
GENERIC_READ | GENERIC_EXECUTE,
&ObjectAttr,
&ioStatusBlock,
NULL,
FILE_ATTRIBUTE_NORMAL,
FILE_SHARE_READ,
FILE_OPEN,
0,
NULL,
0);
if (!NT_SUCCESS(rc)) {
DbgPrint(("Yanky -->Unable to open file, rc=%xn", rc));
return 0;
}

/* then use NtCreateSection to map file */

MaxSize.HighPart=0;
MaxSize.LowPart=SectionSize;

rc=NtCreateSection(
&hSection,
SECTION_ALL_ACCESS,
NULL,
&MaxSize,
PAGE_READWRITE,
SEC_IMAGE,
hFile);
if (rc!=STATUS_SUCCESS) {
DbgPrint(("Unable to create section, rc=%xn", rc));
return 0;
}
DbgPrint(("hSectionCreated=%xn", hSection));


rc= NtCreateProcess (
                        &hProcessCreated,
                        PROCESS_ALL_ACCESS,
                        &ObjectAttr,
                        0xFFFFFFFF,
                        TRUE,
                        hSection,
                        NULL,
                        NULL);

        

if (rc!=STATUS_SUCCESS) {
DbgPrint(("Unable to create process, rc=%xn", rc));
return 0;
}
DbgPrint(("hProcessCreated=%xn", hProcessCreated));

NtClose(hProcessCreated);
return 1;

}

各位大虾帮帮忙!


应该是可以的,除非你在系统引导过程中调用该函数
把编译后的驱动发上来看看,是否连接正确了?
或者把代码压缩发上来,我给你测试一下
1,承接Windows下驱动/应用开发 2,本人原创虚拟鼠标/键盘,触摸屏,虚拟显卡,Mirror驱动,XP无盘的SCSI虚拟磁盘驱动等 3,windows下有尝技术服务(包括BUG调试,员工培训等) 欢迎深圳和海外企业联系.msn:mfczmh@sina.com
Yanky
驱动牛犊
驱动牛犊
  • 注册日期2004-08-24
  • 最后登录2021-09-08
  • 粉丝0
  • 关注0
  • 积分16分
  • 威望95点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
  • 社区居民
8楼#
发布于:2004-12-19 01:51
我把代码和sys放上来了,大侠帮忙看一下吧。谢谢了。

我的运行环境是svr2000 + 2000DDK.



附件名称/大小 下载次数 最后更新
2004-12-19_Test.rar (40KB)  60
Yanky
驱动牛犊
驱动牛犊
  • 注册日期2004-08-24
  • 最后登录2021-09-08
  • 粉丝0
  • 关注0
  • 积分16分
  • 威望95点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
  • 社区居民
9楼#
发布于:2004-12-19 14:12
各位大虾帮帮忙啊!

顶!
AllenZh
驱动老牛
驱动老牛
  • 注册日期2001-08-19
  • 最后登录2015-11-27
  • 粉丝19
  • 关注10
  • 积分1316分
  • 威望2387点
  • 贡献值7点
  • 好评度321点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2004-12-19 16:22
我把代码和sys放上来了,大侠帮忙看一下吧。谢谢了。

我的运行环境是svr2000 + 2000DDK.



 

驱动根本不能加载
1,承接Windows下驱动/应用开发 2,本人原创虚拟鼠标/键盘,触摸屏,虚拟显卡,Mirror驱动,XP无盘的SCSI虚拟磁盘驱动等 3,windows下有尝技术服务(包括BUG调试,员工培训等) 欢迎深圳和海外企业联系.msn:mfczmh@sina.com
Yanky
驱动牛犊
驱动牛犊
  • 注册日期2004-08-24
  • 最后登录2021-09-08
  • 粉丝0
  • 关注0
  • 积分16分
  • 威望95点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
  • 社区居民
11楼#
发布于:2004-12-19 21:04
对啊,当加载驱动时候,提示“找不到过程地址”。

但是把NtCreateProcess注释后就可以了。

大虾帮忙看看是什么问题吧。谢谢!
AllenZh
驱动老牛
驱动老牛
  • 注册日期2001-08-19
  • 最后登录2015-11-27
  • 粉丝19
  • 关注10
  • 积分1316分
  • 威望2387点
  • 贡献值7点
  • 好评度321点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2004-12-20 09:25
对啊,当加载驱动时候,提示“找不到过程地址”。

但是把NtCreateProcess注释后就可以了。

大虾帮忙看看是什么问题吧。谢谢!

你把ntdll.dll和test.sys放在一起看看
1,承接Windows下驱动/应用开发 2,本人原创虚拟鼠标/键盘,触摸屏,虚拟显卡,Mirror驱动,XP无盘的SCSI虚拟磁盘驱动等 3,windows下有尝技术服务(包括BUG调试,员工培训等) 欢迎深圳和海外企业联系.msn:mfczmh@sina.com
Yanky
驱动牛犊
驱动牛犊
  • 注册日期2004-08-24
  • 最后登录2021-09-08
  • 粉丝0
  • 关注0
  • 积分16分
  • 威望95点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
  • 社区居民
13楼#
发布于:2004-12-20 12:34
我试了一下,还是不行。

我觉得和这个没有太大的关系,因为我在Sources文件里已经指定了连接的文件路径了。

TARGETLIBS=$(BASEDIR)\libchk\i386\ntdll.lib


奇怪的问题是:

NtCreateSection和NtCreateProcess都是undoc得函数,NtCreateSection没有问题,光NtCreateProcess有问题。

大虾帮忙分析一下吧!
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
14楼#
发布于:2004-12-20 12:37
系统根本没导出这个函数,你如何能调用???
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
Yanky
驱动牛犊
驱动牛犊
  • 注册日期2004-08-24
  • 最后登录2021-09-08
  • 粉丝0
  • 关注0
  • 积分16分
  • 威望95点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
  • 社区居民
15楼#
发布于:2004-12-22 16:59
不好意思,前几天怎么都上不来论坛,不知道怎么回事。
Yanky
驱动牛犊
驱动牛犊
  • 注册日期2004-08-24
  • 最后登录2021-09-08
  • 粉丝0
  • 关注0
  • 积分16分
  • 威望95点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
  • 社区居民
16楼#
发布于:2004-12-22 17:02
系统根本没导出这个函数,你如何能调用???



NtCreateProcess这个函数导出了,在Ntdll.dll里面有。

ZwCreateProcess没有导出。

大虾帮忙!

AllenZh
驱动老牛
驱动老牛
  • 注册日期2001-08-19
  • 最后登录2015-11-27
  • 粉丝19
  • 关注10
  • 积分1316分
  • 威望2387点
  • 贡献值7点
  • 好评度321点
  • 原创分0分
  • 专家分0分
17楼#
发布于:2004-12-22 21:04
我试了一下,还是不行。

我觉得和这个没有太大的关系,因为我在Sources文件里已经指定了连接的文件路径了。

TARGETLIBS=$(BASEDIR)libchki386ntdll.lib


奇怪的问题是:

NtCreateSection和NtCreateProcess都是undoc得函数,NtCreateSection没有问题,光NtCreateProcess有问题。

大虾帮忙分析一下吧!

那个只是连接,不管Load
你可以测试看直接使用这个函数的地址看是否可以
1,承接Windows下驱动/应用开发 2,本人原创虚拟鼠标/键盘,触摸屏,虚拟显卡,Mirror驱动,XP无盘的SCSI虚拟磁盘驱动等 3,windows下有尝技术服务(包括BUG调试,员工培训等) 欢迎深圳和海外企业联系.msn:mfczmh@sina.com
snowStart
驱动老牛
驱动老牛
  • 注册日期2004-04-06
  • 最后登录2011-06-02
  • 粉丝0
  • 关注0
  • 积分95分
  • 威望19点
  • 贡献值177点
  • 好评度1点
  • 原创分0分
  • 专家分0分
18楼#
发布于:2004-12-24 12:50
我的advance Server + Sp4
在Ntdll.dll里面都导出了
NtCreateProcess
ZwCreateProcess

可能你的系统版本不过高
学习,关注,交流中... [email=fengyu@163.com]Email:snowstarth@163.com[/email] [url]http://bbs.zndev.com/?a=snowStart[/url]
snowStart
驱动老牛
驱动老牛
  • 注册日期2004-04-06
  • 最后登录2011-06-02
  • 粉丝0
  • 关注0
  • 积分95分
  • 威望19点
  • 贡献值177点
  • 好评度1点
  • 原创分0分
  • 专家分0分
19楼#
发布于:2004-12-24 12:55
使用monitor加载时出现error =127
学习,关注,交流中... [email=fengyu@163.com]Email:snowstarth@163.com[/email] [url]http://bbs.zndev.com/?a=snowStart[/url]
上一页
游客

返回顶部