tigerzd
驱动老牛
驱动老牛
  • 注册日期2001-08-25
  • 最后登录2004-12-13
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2548回复:15

在驱动程序中由何处导入GetEnvironmentStringsW这个函数?

楼主#
更多 发布于:2002-07-19 14:37
GetEnvironmentStringsW既不在ntoskrnl.exe中,也不在ntdll.dll中,而是在kernel32.dll中,但是不能在驱动程序中调用kernel32.dll中的函数。那么驱动程序应该从哪里导入GetEnvironmentStringsW呢?
或者ntoskrnl.exe和ntdll.dll中有哪个函数可以替代它?

最新喜欢:

flyfoxflyfox
犯强汉者,虽远必诛! [img]http://www.driverdevelop.com/forum/upload/tigerzd/2002-12-13_sf10.JPG[/img]
zdhe
驱动太牛
驱动太牛
  • 注册日期2001-12-26
  • 最后登录2018-06-02
  • 粉丝0
  • 关注0
  • 积分72362分
  • 威望362260点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
  • 社区居民
沙发#
发布于:2002-07-19 16:35
direct access EPROCESS.PEB,
in PEB, this is a UnicodeString to describe it.
tigerzd
驱动老牛
驱动老牛
  • 注册日期2001-08-25
  • 最后登录2004-12-13
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-07-19 17:26
谢谢回复。
不过我已经将它暂时回避了,方法是在应用程序调用它,再发送给驱动程序,现在已经可以在驱动程序中启动一个应用程序啦。
我会实验你的方法,也许更好。我的目标是完全由驱动程序来启动一个应用程序,现在就只有这个函数还需要应用程序了。
犯强汉者,虽远必诛! [img]http://www.driverdevelop.com/forum/upload/tigerzd/2002-12-13_sf10.JPG[/img]
ysdriver
驱动牛犊
驱动牛犊
  • 注册日期2002-05-17
  • 最后登录2002-11-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-07-19 17:47
海基会国际化建
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
地下室#
发布于:2002-07-19 18:05
谢谢回复。
不过我已经将它暂时回避了,方法是在应用程序调用它,再发送给驱动程序,现在已经可以在驱动程序中启动一个应用程序啦。
我会实验你的方法,也许更好。我的目标是完全由驱动程序来启动一个应用程序,现在就只有这个函数还需要应用程序了。

好像很厉害的样子。 :D
guardee
驱动巨牛
驱动巨牛
  • 注册日期2002-11-08
  • 最后登录2010-05-29
  • 粉丝2
  • 关注1
  • 积分2分
  • 威望34点
  • 贡献值0点
  • 好评度6点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2002-07-19 18:57
呵呵!驱动里面好象也有对应的函数的,我今天没有留神看
guardee
驱动巨牛
驱动巨牛
  • 注册日期2002-11-08
  • 最后登录2010-05-29
  • 粉丝2
  • 关注1
  • 积分2分
  • 威望34点
  • 贡献值0点
  • 好评度6点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2002-07-19 19:03
系统有函数
ZwSetSystemEnvironmentValue
NtQuerySystemEnvironmentValue
HalSetEnvironmentVariable
RtlExpandEnvironmentStrings
ZwQuerySystemEnvironmentValue
RtlQueryEnvironmentVariable
ZwSetSystemEnvironmentValue
tigerzd
驱动老牛
驱动老牛
  • 注册日期2001-08-25
  • 最后登录2004-12-13
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2002-07-20 14:14
系统有函数
ZwSetSystemEnvironmentValue
NtQuerySystemEnvironmentValue
HalSetEnvironmentVariable
RtlExpandEnvironmentStrings
ZwQuerySystemEnvironmentValue
RtlQueryEnvironmentVariable
ZwSetSystemEnvironmentValue

这个好,等我试好了,就给各位加分。 :D
犯强汉者,虽远必诛! [img]http://www.driverdevelop.com/forum/upload/tigerzd/2002-12-13_sf10.JPG[/img]
tigerzd
驱动老牛
驱动老牛
  • 注册日期2001-08-25
  • 最后登录2004-12-13
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2002-07-20 15:26
系统有函数
ZwSetSystemEnvironmentValue
NtQuerySystemEnvironmentValue
HalSetEnvironmentVariable
RtlExpandEnvironmentStrings
ZwQuerySystemEnvironmentValue
RtlQueryEnvironmentVariable
ZwSetSystemEnvironmentValue


这些函数和GetEnvironmentStringsW好象不是一回事哦。
The GetEnvironmentStrings function returns the address of the environment block for the current process. This function replaces the GetDOSEnvironment function
犯强汉者,虽远必诛! [img]http://www.driverdevelop.com/forum/upload/tigerzd/2002-12-13_sf10.JPG[/img]
tigerzd
驱动老牛
驱动老牛
  • 注册日期2001-08-25
  • 最后登录2004-12-13
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2002-07-20 16:37
终于搞定了。GetEnvironmentStringsW在此没有什么用处。
用这样随便写一下就可以了:PWSTR env = L\"\\\\??\\\\C:\\\\WINNT\";
faint!
以下是测试程序和源代码:

犯强汉者,虽远必诛! [img]http://www.driverdevelop.com/forum/upload/tigerzd/2002-12-13_sf10.JPG[/img]
guardee
驱动巨牛
驱动巨牛
  • 注册日期2002-11-08
  • 最后登录2010-05-29
  • 粉丝2
  • 关注1
  • 积分2分
  • 威望34点
  • 贡献值0点
  • 好评度6点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2002-07-20 20:15
靠,这个家伙,没有把驱动代码搞出来啊,靠,什么时候我把你的驱动代码搞出来
tigerzd
驱动老牛
驱动老牛
  • 注册日期2001-08-25
  • 最后登录2004-12-13
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2002-07-22 08:32
以你的水平,应该很容易就搞出来了。 :)
犯强汉者,虽远必诛! [img]http://www.driverdevelop.com/forum/upload/tigerzd/2002-12-13_sf10.JPG[/img]
pjf
pjf
驱动中牛
驱动中牛
  • 注册日期2001-07-08
  • 最后登录2006-10-23
  • 粉丝0
  • 关注0
  • 积分42分
  • 威望4点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2002-07-23 21:32
今天看到了这个贴子,看到大家没原码很不爽的样子,就花了十几分钟看反汇编码。又有人叫,草草了事,写几个字:

财神兄代码在Dispatch例程里调了一个函数,用以实现功能。其代码与Gary Nebbett的相似,就不多说了,大家自己看吧。这里谈谈其中调用ntoskrnl.exe未导出函数的代码:比如ZwCreateProcess,此程序中有一小块全局内存区域保存各未导出函数名称,在要使用之前以次为参数调用了另两个函数,返回了所需函数地址再Call之。第一个函数用ZwQuerySystemInformation查询系统模块(SystemModuleInformation),得到了ntdll模块基址并返回(暂时只大概看了一下静态反汇编,没有具体参数值,应是ntdll.dll),随后第二个函数没仔细看,应就是从模块PE头找出函数地址来了。

没仔细看,若真的是call了ntdll的代码是有说过的问题的。正确的做法很多,比如先从ntdll中获取服号,再从SSDT中查获内核中函数地址;或直接写个ntoskrnl.exe的扩展还更简单。幸运的CsrClientCallServer仅仅用LPC机制通信而没有Ring3依赖代码使模拟变得简单。





财神兄会不会咬人?  :P
guardee
驱动巨牛
驱动巨牛
  • 注册日期2002-11-08
  • 最后登录2010-05-29
  • 粉丝2
  • 关注1
  • 积分2分
  • 威望34点
  • 贡献值0点
  • 好评度6点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2002-07-23 21:39
呵呵!不会的,如果咬,那就让他吃耗子药,很高兴你能够花时间去反汇编他的驱动,我现在没有时间,等有时间了我也弄一下,弄出来再贴出来
tigerzd
驱动老牛
驱动老牛
  • 注册日期2001-08-25
  • 最后登录2004-12-13
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2002-07-24 08:39
我没贴出驱动程序代码就是因为这个程序代码比较简单,而且正如PJF所说,我是根据Gary Nebbett的代码综合而来的。
大家可以根据这种思路去做,应该更有收获,如果你愿意的话。 :D
犯强汉者,虽远必诛! [img]http://www.driverdevelop.com/forum/upload/tigerzd/2002-12-13_sf10.JPG[/img]
Nouk
驱动中牛
驱动中牛
  • 注册日期2001-08-22
  • 最后登录2006-10-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2002-07-24 10:51
_SHELL_LOADLIBRARY
_SHELL_GETPROCADDRESS
hahaha~~
Taiwan's Driver Developer
游客

返回顶部