20楼#
发布于:2004-12-24 13:01
发现问题了
NtCreateProcess' : pointer mismatch for actual parameter 4 第4个参数类型不对,改一改吧 你在哪里找到的NtCreateProcess的定义 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 ); |
|
|
21楼#
发布于:2004-12-27 12:29
发现问题了 大虾啊,我的定义和你的一样的,参数没错,没有问题啊。 还有就是我直接利用这个函数的地址也有问题,提示第七个参数错误。 |
|
22楼#
发布于:2004-12-27 12:53
[quote]发现问题了 大虾啊,我的定义和你的一样的,参数没错,没有问题啊。 还有就是我直接利用这个函数的地址也有问题,提示第七个参数错误。 [/quote] 上面函数定义的是引用你的定义, 你的代码编译后,出现NtCreateProcess' : pointer mismatch for actual parameter 4警告错误(环境2k+xp4+ddk 2k) 我想问题可能就在这里 |
|
|
23楼#
发布于:2004-12-27 14:36
[quote][quote]发现问题了 大虾啊,我的定义和你的一样的,参数没错,没有问题啊。 还有就是我直接利用这个函数的地址也有问题,提示第七个参数错误。 [/quote] 上面函数定义的是引用你的定义, 你的代码编译后,出现NtCreateProcess' : pointer mismatch for actual parameter 4警告错误(环境2k+xp4+ddk 2k) 我想问题可能就在这里 [/quote] NtCreateProcess这个函数原型我是在UnDoc文档中找到的。 请问该如何改呢? 我的环境也是:advance Server + Sp4 + 2kddk 你的可以? 那个参数该是什么呢? |
|
24楼#
发布于:2004-12-27 17:42
顶!
顶! 顶! |
|
25楼#
发布于:2004-12-29 10:12
驱动中好像不能引用ntdll.dll中的函数,没看到有sys引用了ntdll.dll 因为NtCreateSection在ntoskrnl.exe中,而NtCreateProcess在 ntoskrnl.exe中没有导出所以不行。 关于怎么使用NtCreateProcess或ZwCreateProcess《NtCreateProcess和ZwCreateProcess,原来的贴太挤,开新帖 》 有讲的 |
|
26楼#
发布于:2005-02-04 14:02
这个函数地址需要动态获取,你反编译一下NtOsKrnl.exe就明白了。
|
|
|
27楼#
发布于:2005-02-04 14:07
这个函数地址需要动态获取,你反编译一下NtOsKrnl.exe就明白了。 等于没说,你反哪个函数可以获得他的地址?? HOOK只能通过SERVICEID来做,硬编码或着我看到有老外把NTDLL影射到驱动空间,然后再获得SERVICEID的. |
|
|
28楼#
发布于:2005-02-05 10:40
首先,我必须澄清的一点是,你的LIB绝对不能是ntdll.lib,而必须是ntoskrnl.lib。ntdll.lib中引出了ntcreateprocess(暂时不管大小写了),ntoskrnl.lib引出了ntcreateprocess,ntcreatesession.ntdll.lib提供Win32下用的,地址在用户区,这就是你出现地址找不到的原因。至于第4个参数错误的原因,大家由于环境不相同,我这里只在XP下试了一下,就是这个错误。其实是因为我以前说过的,在Win2k下ProcessId会有问题,0xffffffff也被认为是一个合法的进程ID,而在XP下ProcessId没问题,0xffffffff便被认为是一个非法的进程ID了。
|
|
|
29楼#
发布于:2005-02-05 10:54
还有,据我跟踪发现,在XP中系统很少调用ntcreateprocess,改为调用
ntcreateprocessEx,如果在XP下将0xffffffff改为0x00000000(NULL),将不出现第4个参数出错的情况,但出现1>Linking Executable - objchk_wxp_x86\i386\test.sys for i386 1>runwin32proc.obj : error LNK2019: unresolved external symbol __imp__NtCreateP ocess@32 referenced in function _TestCreateProcess@0 1>objchk_wxp_x86\i386\test.sys : error LNK1120: 1 unresolved externals 这说明你找到的函数说明是ntdll.dll中的,与__imp__NtCreatePocess@32不符,即函数名称没问题相同,参数个数不同 |
|
|
30楼#
发布于:2005-02-05 11:02
还有,据我跟踪发现,在XP中系统很少调用ntcreateprocess,改为调用 修正,参数个数据后来看,是对的,8个,主要是未引出的问题,不行就硬编码吧,在我的XP sp2系统上,它是系统服务分发表中排行0x2F,只不过要注意使EDX指向你的参数表。 |
|
|
31楼#
发布于:2005-02-06 13:55
驱动里边连接ntdll?NtCreateProcess/ZwCreateProcess都没有在ntdll.dll中被export!不要白费力气了。如果需要的话,你可以自己加载ntdll到内存中,然后再查找地址。
|
|
32楼#
发布于:2005-02-07 09:35
驱动里边连接ntdll?NtCreateProcess/ZwCreateProcess都没有在ntdll.dll中被export!不要白费力气了。如果需要的话,你可以自己加载ntdll到内存中,然后再查找地址。 函数没有输出,就是自己加载到内存中,也找不到地址,其实ntdll.dll本身就在内存中,只不过在应用层。把它加载到核心空间,它也只能是死的,所有地址需要重定位才能活,至于搞那么复杂吗? |
|
|
33楼#
发布于:2005-02-07 09:39
[quote]这个函数地址需要动态获取,你反编译一下NtOsKrnl.exe就明白了。 等于没说,你反哪个函数可以获得他的地址?? HOOK只能通过SERVICEID来做,硬编码或着我看到有老外把NTDLL影射到驱动空间,然后再获得SERVICEID的. [/quote] 我看到有老外把NTDLL影射到驱动空间,然后再获得SERVICEID的???? 未输出,NTDLL影射到驱动空间,又如何得到入口地址,更别说SERVICEID |
|
|
上一页
下一页