无忧启动论坛

标题: PE下的驱动注入工具(201000901)更新! [打印本页]

作者: 仙乃日    时间: 2010-7-25 16:28
标题: PE下的驱动注入工具(201000901)更新!
VER:04 增加从指定目录注入第3方驱动的功能,修正Ver:0.2版本中的注入错误,完整了驱动清除功能。
欢迎使用的朋友报告其错误。最近被迫要完成800份居民健康档案,估计没多少时间去增加新功能啦,但
若的发现错误会尽快更新的。同级目录"NT5MSD"用于放置第3方厂商的大容量控制器驱动文件。












VER:04
离线驱动处理V0.4.part1.rar (185.55 KB, 下载次数: 4047) 离线驱动处理V0.4.part2.rar (185.55 KB, 下载次数: 3562) 离线驱动处理V0.4.part3.rar (47.34 KB, 下载次数: 2889)
==================
本工具是可以将PE中正使用的SRS驱动注入到目标系统中,能解决NT5.X系统启动7B蓝屏的问题。
自己第1次写界面,写得很丑陋。本工具只是自己写的离线部署工具的一个功能。
特别感谢D4llower的无私帮助!

2010_08_27 V0.2更新:
重写了核心代码,增加设备范例ID提示。使用环境不再局限于PE 1.X啦,PE 3.0下也能使用,目标系统支持NT5.0以上的32位系统。
驱动注入.part1.rar (195.31 KB, 下载次数: 5232)
驱动注入.part2.rar (195.31 KB, 下载次数: 4081)
驱动注入.part3.rar (17.77 KB, 下载次数: 2685)

[ 本帖最后由 仙乃日 于 2010-9-2 16:24 编辑 ]
作者: haiuyan    时间: 2010-7-25 16:51
XP和2003都支持吗?
作者: 仙乃日    时间: 2010-7-25 17:08
原帖由 haiuyan 于 2010-7-25 16:51 发表
XP和2003都支持吗?

支持Win2000、WINXP、WIN2003。
作者: chenbaker    时间: 2010-7-25 17:11
又见仙乃日
出手了
作者: 追风    时间: 2010-7-25 17:16
不错,马上下载测试一下。谢谢分享!
作者: ly372184487    时间: 2010-7-25 17:22
貌似不错,不过就不知道好在哪里
作者: pseudo    时间: 2010-7-25 17:45
这个比0PE半年前提供的PE下驱动注入工具体积大很多啊。

从所贴出的界面图,没看到驱动相关信息,似乎不便于用户了解情况。也许是没贴出来?
作者: yigeren    时间: 2010-7-25 18:23
这种可以简单操作的不错,0PE的太麻烦,要提取出来到别的PE用也麻烦
作者: 仙乃日    时间: 2010-7-25 18:32
原帖由 pseudo 于 2010-7-25 17:45 发表
这个比0PE半年前提供的PE下驱动注入工具体积大很多啊。

从所贴出的界面图,没看到驱动相关信息,似乎不便于用户了解情况。也许是没贴出来?

这个是用AU3写的所以体积有点大,驱动相关信息是没显示,下次改进一下。
这个工具还支持对目标系统的一些其他操作(如:可以备份或者清除目标系统的驱动,也可以预安装驱动到目标系统),核心写了,只是界面还没写完。
作者: tegl    时间: 2010-7-25 19:29
支持原创,请提供源代码,谢谢~
作者: chiannet    时间: 2010-7-25 19:44
请求提供代码。
作者: freesoft00    时间: 2010-7-25 21:33
仙乃日的东西支持一把。
界面漂亮不漂亮无所谓的东西,只要软件实用方便就好
作者: 假大空    时间: 2010-7-25 21:58
等待楼主完善版本,的确很实用
作者: kgb3000    时间: 2010-7-25 22:08
好东西,建议楼主加入以下功能:PE下安装XP,XP安装程序复制完文件后,加入SRS驱动注入功能,这样就很方便了。
作者: 极度凶残    时间: 2010-7-25 22:25
很实用的工具,多谢了!期待LZ的新版
作者: sy235688    时间: 2010-7-25 22:45
这个与0PE的批处理注入有什么区别呢
作者: yyjpcx    时间: 2010-7-25 23:06
功能没有试  但界面不敢恭维
作者: 2831650    时间: 2010-7-25 23:27
这几天新东西真多啊 试下 呵呵
作者: myzhan    时间: 2010-7-26 01:32
好久不见鲜奶.....
作者: mzwsl    时间: 2010-7-26 06:34
好东西啊   支持一下楼主 辛苦了
作者: rabbit2008    时间: 2010-7-26 08:13
提示: 作者被禁止或删除 内容自动屏蔽
作者: zhhsh    时间: 2010-7-26 08:17
这个是否从PE直接获取磁盘控制器驱动?

如果是那怎样获取?
作者: 仙乃日    时间: 2010-7-26 09:17
原帖由 rabbit2008 于 2010-7-26 08:13 发表
哥们  你不是用程序 调用几个脚本完成的吧
那也太浪费表情了

没有调用任何第3方的程序或者脚本。
作者: 仙乃日    时间: 2010-7-26 09:21
原帖由 zhhsh 于 2010-7-26 08:17 发表
这个是否从PE直接获取磁盘控制器驱动?

如果是那怎样获取?

是从PE直接获取磁盘控制器驱动的。

具体流程看附件。
主要部份的代码.rar (904 Bytes, 下载次数: 357)
作者: Plantsoot    时间: 2010-7-26 09:37
原帖由 仙乃日 于 2010-7-26 09:21 发表

是从PE直接获取磁盘控制器驱动的。

具体流程看附件。
95689


呵呵,敬佩,开源啊。
作者: bfgxp    时间: 2010-7-26 10:18
最近仙乃日出现得很频繁
作者: yigeren    时间: 2010-7-26 11:22
进入PE后,如何保留驱动文件?
作者: zhhsh    时间: 2010-7-26 11:59
标题: 回复 #24 仙乃日 的帖子
谢谢提供。
如果是win7等nt6.x系统应该不能这样获取

要先获取hwid,再从HKLM\SYSTEM\CurrentControlSet\Enum下获取相关服务驱动
像nv磁盘控制器应该不能获取SCSI\*这样硬件ID

[ 本帖最后由 zhhsh 于 2010-7-26 12:03 编辑 ]
作者: 仙乃日    时间: 2010-7-26 12:25
原帖由 zhhsh 于 2010-7-26 11:59 发表
谢谢提供。
如果是win7等nt6.x系统应该不能这样获取

要先获取hwid,再从HKLM\SYSTEM\CurrentControlSet\Enum下获取相关服务驱动
像nv磁盘控制器应该不能获取SCSI\*这样硬件ID

嗯是不支持nt6.X系统。hwid和驱动服务是相关的,只要先确定一个就能找到另一个,具体如何找只是方法上的不同。
通过底层的东东来获取hwid,自己不懂,所以只能在注册表中转圈啦。如果你知道如何通过API来获取某一类型的,也希望得你的指教。
对于Win7等nt6.x的系统可以从HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\DeviceClasses入手,先获取设备范例ID,再
获取驱动服务名。
作者: peace    时间: 2010-7-26 12:47
原帖由 kgb3000 于 2010-7-25 22:08 发表
好东西,建议楼主加入以下功能:PE下安装XP,XP安装程序复制完文件后,加入SRS驱动注入功能,这样就很方便了。


这个就是你需要的...

http://peace.edudisk.cn/down_34942.aspx
作者: ghangz    时间: 2010-7-26 15:41
好东西,楼主 辛苦了.
下载试用了一下,能够解决srs问题,只是不支持驱动压缩,要是能够支持*.SY_就更方便了。谢谢...
作者: 叶之秋    时间: 2010-7-26 16:49
好啊,这个东东好!谢谢分享
作者: pseudo    时间: 2010-7-26 17:18
原帖由 kgb3000 于 2010-7-25 22:08 发表
好东西,建议楼主加入以下功能:PE下安装XP,XP安装程序复制完文件后,加入SRS驱动注入功能,这样就很方便了。

这时还没有普通注册表供注入。这时的“注入”更多地类似于集成。

一种现成的办法是,PE下安装原版XP,XP安装程序复制完文件后,重启时启动F6模块:
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=169137&extra=page%3D2

选“仿真F6驱动软盘后串接菜单”,待完成驱动软盘仿真后,选有关转硬盘启动的适当菜单项转到硬盘启动即可。
如此免集成、免注入,不动原版、不动硬盘。
作者: suge    时间: 2010-7-26 18:17
要是能够支持*.SY_就更好了,因很多PE,包括如水的14。66版,都没有vmscsi.sys文件,期待啊。。。。。。
作者: lintel    时间: 2010-7-26 18:40
支持鲜奶。
作者: longdoushi100    时间: 2010-7-26 18:59
感谢仙大
收藏了
作者: 快雪时晴    时间: 2010-7-26 19:06
原帖由 <i>pseudo</i> 于 2010-7-26 17:18 发表
这时还没有普通注册表供注入。这时的“注入”更多地类似于集成。<br />
<br />
一种现成的办法是,PE下安装原版XP,XP安装程序复制完文件后,重启时启动F6模块:<br />
http://bbs.wuyou.net/forum.php?m ... tid=169137&extr ...
<br />

p大说过要提供一个通用PE SRS注入工具的,一直在等
作者: 快雪时晴    时间: 2010-7-26 19:09
问个问题,如果PE未包含新式硬盘的驱动,那PE还能启动吗?或者只是PE能启动但看不到硬盘
作者: 仙乃日    时间: 2010-7-26 19:32
原帖由 suge 于 2010-7-26 18:17 发表
要是能够支持*.SY_就更好了,因很多PE,包括如水的14。66版,都没有vmscsi.sys文件,期待啊。。。。。。


如水的14。66版在启动时就删除了vmscsi.sys文件,可以自己修改那个配置文件。貌似驱动文件只要正在使用,就不太可能是.SY_格式。
作者: 快雪时晴    时间: 2010-7-26 19:37
原帖由 <i>peace</i> 于 2010-7-26 12:47 发表
这个就是你需要的...<br />
95707<br />
http://peace.edudisk.cn/down_34942.aspx
<br />

谢谢,收藏备用。
很多时候安装原版XP时用得着
作者: pseudo    时间: 2010-7-26 20:24
原帖由 快雪时晴 于 2010-7-26 19:06 发表
p大说过要提供一个通用PE SRS注入工具的,一直在等

我也在等高人出手,拿现成的。
原帖由 yigeren 于 2010-7-25 18:23 发表
这种可以简单操作的不错,0PE的太麻烦,要提取出来到别的PE用也麻烦

0PE在PE下注入驱动用的是一个几KB的图形界面程序,单击快捷方式运行,点一次鼠标确定即完成,何来麻烦?

说麻烦估计是没用过,或者跟别的注入程序搞混了。

当然,要提取出来到别的PE运行,离开0PE环境,是有点麻烦。
作者: dvd008    时间: 2010-7-26 21:18
原帖由 快雪时晴 于 2010-7-26 19:09 发表
问个问题,如果PE未包含新式硬盘的驱动,那PE还能启动吗?或者只是PE能启动但看不到硬盘

没驱动,可以启动PE
看不见硬盘,可以在PE下安装驱动,这类工具我收集整理过,并提供了
使用说明.
作者: 8568864_cn    时间: 2010-7-26 22:01
支持楼主,以前用楼主的系统
作者: suge    时间: 2010-7-26 22:12
标题: 回复 #41 pseudo 的帖子
P大说得很对,0PE在PE下注入驱动,只要单击快捷方式就可以,但很多时候要点多次继续。。。。
作者: kgb3000    时间: 2010-7-26 22:23
原帖由 peace 于 2010-7-26 12:47 发表


这个就是你需要的...
95707
http://peace.edudisk.cn/down_34942.aspx

Thank you!对PE没什么要求吧?骨头版2003 PE不知行不行?

[ 本帖最后由 kgb3000 于 2010-7-26 22:29 编辑 ]
作者: tzxinqing    时间: 2010-7-28 20:04
等待楼主完善版本,的确很实用
作者: dvd008    时间: 2010-7-28 20:09
骨头版可以用,包括前面那个集成工具,
需要先启动MMC
作者: kgb3000    时间: 2010-7-28 23:21
原帖由 dvd008 于 2010-7-28 20:09 发表
骨头版可以用,包括前面那个集成工具,
需要先启动MMC

经试验,骨头版直接可用,缺少一个attrib.exe文件而已。
作者: kgb3000    时间: 2010-7-28 23:26
原帖由 pseudo 于 2010-7-26 17:18 发表

这时还没有普通注册表供注入。这时的“注入”更多地类似于集成。

一种现成的办法是,PE下安装原版XP,XP安装程序复制完文件后,重启时启动F6模块:
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=169137&extr ...

这个工具不错,如果能够支持直接从PE提取驱动那就更完美了,还有xp安装程序复制完文件后,c盘根目录有一个txtsetup.sif文件,
c:\$win_nt$.~bt目录下也有一个txtsetup.sif,以那一个为准?

[ 本帖最后由 kgb3000 于 2010-7-28 23:29 编辑 ]
作者: ziyun    时间: 2010-7-29 09:29
支持一下原创,希望分享一下原理
作者: pseudo    时间: 2010-7-29 09:52
标题: 回复 #49 kgb3000 的帖子
不知道以那一个txtsetup.sif为准。此法不看硬盘内容,也不主动去修改硬盘的东西。

把pe的txtsetup.sif文件和drivers目录直接打包为zip格式文件即成可用驱动包。
如果某pe认硬盘,用其驱动包仿真驱动软盘,一般也能使安装程序认硬盘。还能使其它原来不认硬盘的pe变得认硬盘。
作者: bwfj    时间: 2010-8-5 16:37
原帖由 仙乃日 于 2010-7-25 18:32 发表

这个是用AU3写的所以体积有点大,驱动相关信息是没显示,下次改进一下。
这个工具还支持对目标系统的一些其他操作(如:可以备份或者清除目标系统的驱动,也可以预安装驱动到目标系统),核心写了,只是界面 ...

不知楼主什么时候更新可以实现这个功能:清除目标系统的驱动
作者: 仙乃日    时间: 2010-8-5 16:54
原帖由 tegl 于 2010-7-25 19:29 发表
支持原创,请提供源代码,谢谢~

完整的源码

  1. #Region ;**** 参数创建于 ACNWrapper_GUI ****
  2. #AutoIt3Wrapper_Version=Ver:0.1.2010.07.25
  3. #AutoIt3Wrapper_Icon=.\ico\1.ico
  4. #AutoIt3Wrapper_OutFile=C:\Documents and Settings\Administrator\桌面\离线驱动注入工具.exe
  5. #AutoIt3Wrapper_UseUPX=n
  6. #AutoIt3Wrapper_Res_FileVersion=0.1.2010.07.25
  7. #AutoIt3Wrapper_Res_Comment=本工具可将PE系统中正使用的SRS驱动注入到目标系统中。
  8. #AutoIt3Wrapper_Res_Description=本工具只能PE1.X环境下运行!目标系统暂时只支持WIN2000、WINXP、WIN2003。
  9. #AutoIt3Wrapper_Res_LegalCopyright=版权归仙乃日所有!
  10. #AutoIt3Wrapper_Run_Tidy=y
  11. #EndRegion ;**** 参数创建于 ACNWrapper_GUI ****
  12. #include <ButtonConstants.au3>
  13. #include <EditConstants.au3>
  14. #include <GUIConstantsEx.au3>
  15. #include <StaticConstants.au3>
  16. #include <WindowsConstants.au3>
  17. #include <SetupApi.au3>
  18. #include <LocalSecurityAuthority.au3>
  19. If _WinAPI_CreateSemaphore(@ScriptName) <> 0 Then
  20. ;MsgBox(16,"error","程序已经运行!")
  21. Exit
  22. EndIf

  23. Global Const $SE_PRIVILEGE_ENABLED = 0x00000002
  24. Global $SYSTEMROOT, $n, $ControlSet
  25. Global $stp = 1
  26. If Not StringInStr(RegRead("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control", "SystemStartOptions"), "MININT") Then
  27. MsgBox(16, "离线驱动注入工具", "该程序只能在 windows PE 下运行!")
  28. Exit
  29. EndIf
  30. $Form1 = GUICreate("离线驱动注入工具  By 仙乃日", 450, 220, -1, -1)
  31. $Label1 = GUICtrlCreateLabel("", 35, 16, 400, 20)
  32. $Label2 = GUICtrlCreateLabel("", 45, 78, 70, 20)
  33. $Edit1 = GUICtrlCreateEdit("", 35, 40, 383, 129, BitOR($ES_AUTOVSCROLL, $ES_AUTOHSCROLL, $ES_READONLY, $ES_WANTRETURN, $ES_AUTOVSCROLL, $ES_AUTOHSCROLL), 0)
  34. GUICtrlSetData(-1, "Edit1")
  35. $Button1 = GUICtrlCreateButton("< 上一步[&B]", 200, 185, 89, 25, 0)
  36. $Button2 = GUICtrlCreateButton("下一步[&N] >", 325, 185, 89, 25, 0)
  37. $Button3 = GUICtrlCreateButton("打开", 290, 75, 40, 20)
  38. GUICtrlSetState($Button3, $gui_hide)
  39. $Button4 = GUICtrlCreateButton("确定注入", 150, 65, 150, 90, $WS_GROUP)
  40. GUICtrlSetFont(-1, 25, 400, 0)
  41. GUICtrlSetState($Button4, $gui_hide)
  42. $Input1 = GUICtrlCreateInput("", 105, 75, 180, 20)
  43. GUISetState(@SW_SHOW)
  44. step1(1)
  45. While 1
  46. $nMsg = GUIGetMsg()
  47. Switch $nMsg
  48.   Case $GUI_EVENT_CLOSE
  49.    Exit
  50.   Case $Button1
  51.    Call("step" & $stp, 0)
  52.    $stp -= 1
  53.    Call("step" & $stp, 1)
  54.   Case $Button2
  55.    If GUICtrlRead($Button2) = "完成[&F]" Then
  56.     Exit
  57.    EndIf
  58.    Call("step" & $stp, 0)
  59.    $stp += 1
  60.    Call("step" & $stp, 1)
  61.   Case $Button3
  62.    GUICtrlSetState($Button2, $gui_disable)
  63.    $SYSTEMROOT = FileSelectFolder("请选择目标系统目录,如:C:\Windows", "::{20D04FE0-3AEA-1069-A2D8-08002B30309D}")
  64.    If Not @error Then
  65.     $ROOT = StringLeft($SYSTEMROOT, 2)
  66.     GUICtrlSetData($Input1, $SYSTEMROOT)
  67.     $SYSTEMROOT = GUICtrlRead($Input1)
  68.     If FileExists($SYSTEMROOT & "\system32\config\system") = 1 Then
  69.      GUICtrlSetState($Button2, $gui_enable)
  70.     Else
  71.      MsgBox(16, "提醒您,重新选择!", "貌似您所选择的目录不是有效的系统目录!")
  72.      ContinueLoop
  73.     EndIf
  74.    EndIf
  75.   Case $Button4
  76.    _REGLOADHIVE($SYSTEMROOT & "\system32\CONFIG\SYSTEM", "HKLM\hSYS")
  77.    _REGLOADHIVE($SYSTEMROOT & "\system32\CONFIG\SOFTWARE", "HKLM\xSoft")
  78.    $n = RegRead("HKEY_LOCAL_MACHINE\hSYS\Select", "Current")
  79.    If $n < 10 Then
  80.     $ControlSet = "ControlSet00" & $n
  81.    Else
  82.     $ControlSet = "ControlSet0" & $n
  83.    EndIf
  84.    GET_SCSI_driver()
  85.    _REGUNLOADHIVE("HKLM\hSYS")
  86.    _REGUNLOADHIVE("HKLM\xSoft")
  87.    GUICtrlSetState($Button1, $gui_disable)
  88.    GUICtrlSetState($Button4, $gui_hide)
  89.    GUICtrlSetState($Label1, $gui_hide)
  90.    GUICtrlCreateEdit("恭喜您!" & @CRLF & @CRLF & "驱动注入成功啦!", 35, 25, 250, 120, BitOR($ES_AUTOVSCROLL, $ES_AUTOHSCROLL, $ES_READONLY, $ES_WANTRETURN, $ES_AUTOVSCROLL, $ES_AUTOHSCROLL), 0)
  91.    GUICtrlSetFont(-1, 23, 400, 0)
  92. EndSwitch
  93. WEnd
  94. Func step1($x)
  95. If $x = 1 Then
  96.   GUICtrlSetState($Label2, $gui_hide)
  97.   GUICtrlSetState($Input1, $gui_hide)
  98.   GUICtrlSetState($Button1, $gui_disable)
  99.   GUICtrlSetState($Button2, $gui_disable)
  100.   GUICtrlSetData($Label1, "欢迎访问仙乃日博客(hi.baidu.com/hdj20030403/blog)!")
  101.   GUICtrlSetData($Edit1, @CRLF & "这是一个将PE系统使用中的SRS驱动,注入到目标系统中的工具。如果你" & _
  102.     @CRLF & @CRLF & "所使用的PE在启动时就删除了SRS驱动文件,那么注入将失败。本工具不" & @CRLF & @CRLF & "会改写目标系统即有驱动文件。虽竭诚为之,但限于水平,疏漏、谬误之" & _
  103.     @CRLF & @CRLF & "处在所难免,望使用者见谅。作者不对由此工具引起的任何问题负责。")
  104.   Sleep(900)
  105.   GUICtrlSetState($Button2, $gui_enable)
  106. Else
  107.   GUICtrlSetState($Button1, $gui_enable)
  108. EndIf
  109. EndFunc   ;==>step1
  110. Func Step2($x)
  111. If $x = 1 Then
  112.   GUICtrlSetState($Button3, $gui_show)
  113.   GUICtrlSetState($Button4, $gui_hide)
  114.   GUICtrlSetState($Button2, $gui_disable)
  115.   GUICtrlSetData($Label1, "请选择目标系统所在的目录,默认为C:\Windows")
  116.   GUICtrlSetData($Label2, "系统路径:")
  117.   GUICtrlSetState($Label2, $gui_show)
  118.   GUICtrlSetState($Input1, $gui_show)
  119.   GUICtrlSetState($Edit1, $gui_hide)
  120.   If FileExists("C:\boot.ini") = 1 And FileExists("C:\windows\system32\ntdll.dll") = 1 Then
  121.    $SYSTEMROOT = "C:\Windows"
  122.    GUICtrlSetData($Input1, $SYSTEMROOT)
  123.   EndIf
  124.   Sleep(700)
  125.   $SYSTEMROOT = GUICtrlRead($Input1)
  126.   If FileExists($SYSTEMROOT & "\system32\config\system") = 1 Then
  127.    GUICtrlSetState($Button2, $gui_enable)
  128.   Else
  129.    MsgBox(16, "提醒您,重新选择!", "貌似您所选择的目录不是有效的系统目录!")
  130.   EndIf
  131. Else
  132.   GUICtrlSetState($Edit1, $gui_show)
  133.   GUICtrlSetState($Label2, $gui_hide)
  134.   GUICtrlSetState($Input1, $gui_hide)
  135. EndIf
  136. EndFunc   ;==>Step2
  137. Func step3($x)
  138. If $x = 1 Then
  139.   GUICtrlSetState($Edit1, $gui_hide)
  140.   GUICtrlSetData($Label1, "按“确定注入”键后将自动注入驱动。本工具暂不提供恢复功能!")
  141.   GUICtrlSetState($Label2, $gui_hide)
  142.   GUICtrlSetState($Input1, $gui_hide)
  143.   GUICtrlSetState($Button3, $gui_hide)
  144.   GUICtrlSetState($Button4, $gui_show)
  145.   GUICtrlSetData($Button2, "完成[&F]")
  146. Else
  147.   GUICtrlSetState($Button3, $gui_show)
  148.   GUICtrlSetState($Button2, $gui_disable)
  149.   GUICtrlSetState($Button3, $gui_show)
  150.   GUICtrlSetData($Button2, "下一步[&N] >")
  151.   GUICtrlSetData($Label1, "请选择目标系统所在的目录,默认为C:\Windows")
  152.   GUICtrlSetData($Label2, "系统路径:")
  153.   GUICtrlSetState($Label2, $gui_show)
  154.   GUICtrlSetState($Input1, $gui_show)
  155.   GUICtrlSetState($Edit1, $gui_hide)
  156.   If FileExists("C:\boot.ini") = 1 And FileExists("C:\windows\system32\ntdll.dll") = 1 Then
  157.    $SYSTEMROOT = "C:\Windows"
  158.    GUICtrlSetData($Input1, $SYSTEMROOT)
  159.   EndIf
  160.   $SYSTEMROOT = GUICtrlRead($Input1)
  161.   If FileExists($SYSTEMROOT & "\system32\config\system") = 1 Then
  162.    GUICtrlSetState($Button2, $gui_enable)
  163.   Else
  164.    MsgBox(16, "提醒您,重新选择!", "貌似您所选择的目录不是有效的系统目录!")
  165.   EndIf
  166. EndIf
  167. EndFunc   ;==>step3
  168. Func GET_SCSI_driver()
  169. Local $i = 1
  170. Local $ScsiPort, $scsiname, $ImagePath, $scsienum
  171. While 1
  172.   $ScsiPort = RegEnumKey("HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\Scsi", $i)
  173.   If @error Then ExitLoop
  174.   $scsiname = RegRead("HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\Scsi" & $ScsiPort, "Driver")
  175.   If $scsiname <> "atapi" Then
  176.    $ImagePath = StringStripWS(RegRead("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services" & $scsiname, "ImagePath"), 3)
  177.    If FileExists(@SystemDir & "\DRIVERS" & $ImagePath) = 0 Then
  178.     _REGUNLOADHIVE("HKLM\hSYS")
  179.     _REGUNLOADHIVE("HKLM\xSoft")
  180.     MsgBox(4096, "警告", "PE下的" & @SystemDir & "\DRIVERS" & $ImagePath & "文件不存在,驱动注入失败!")
  181.     Exit
  182.    Else
  183.     FileCopy(@SystemDir & "\DRIVERS" & $ImagePath, $SYSTEMROOT & "\system32\DRIVERS" & $ImagePath, 9)
  184.     $scsienum = StringStripWS(RegRead("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services" & $scsiname & "\Enum", "0"), 3)
  185.     If StringLeft($scsienum, 4) = "PCI" Then
  186.      RegWrite("HKEY_LOCAL_MACHINE\hSYS" & $ControlSet & "\Control\CriticalDeviceDatabase" & "pci#" & StringMid($scsienum, 5, 17), "ClassGUID", "REG_SZ", "{4D36E97B-E325-11CE-BFC1-08002BE10318}")
  187.      RegWrite("HKEY_LOCAL_MACHINE\hSYS" & $ControlSet & "\Control\CriticalDeviceDatabase" & "pci#" & StringMid($scsienum, 5, 17), "Service", "REG_SZ", $scsiname)
  188.      RegWrite("HKEY_LOCAL_MACHINE\hSYS" & $ControlSet & "\Control\CriticalDeviceDatabase" & "pci#" & StringMid($scsienum, 5), "ClassGUID", "REG_SZ", "{4D36E97B-E325-11CE-BFC1-08002BE10318}")
  189.      RegWrite("HKEY_LOCAL_MACHINE\hSYS" & $ControlSet & "\Control\CriticalDeviceDatabase" & "pci#" & StringMid($scsienum, 5), "Service", "REG_SZ", $scsiname)
  190.     ElseIf StringLeft($scsienum, 5) = "SCSI" Then
  191.      RegWrite("HKEY_LOCAL_MACHINE\hSYS" & $ControlSet & "\Control\CriticalDeviceDatabase" & "SCSI#" & StringMid($scsienum, 6, 17), "ClassGUID", "REG_SZ", "{4D36E97B-E325-11CE-BFC1-08002BE10318}")
  192.      RegWrite("HKEY_LOCAL_MACHINE\hSYS" & $ControlSet & "\Control\CriticalDeviceDatabase" & "SCSI#" & StringMid($scsienum, 6, 17), "Service", "REG_SZ", $scsiname)
  193.      RegWrite("HKEY_LOCAL_MACHINE\hSYS" & $ControlSet & "\Control\CriticalDeviceDatabase" & "SCSI#" & StringMid($scsienum, 6), "ClassGUID", "REG_SZ", "{4D36E97B-E325-11CE-BFC1-08002BE10318}")
  194.      RegWrite("HKEY_LOCAL_MACHINE\hSYS" & $ControlSet & "\Control\CriticalDeviceDatabase" & "SCSI#" & StringMid($scsienum, 6), "Service", "REG_SZ", $scsiname)
  195.     Else
  196.      RegWrite("HKEY_LOCAL_MACHINE\hSYS" & $ControlSet & "\Control\CriticalDeviceDatabase" & $scsienum, "ClassGUID", "REG_SZ", "{4D36E97B-E325-11CE-BFC1-08002BE10318}")
  197.      RegWrite("HKEY_LOCAL_MACHINE\hSYS" & $ControlSet & "\Control\CriticalDeviceDatabase" & $scsienum, "Service", "REG_SZ", $scsiname)
  198.     EndIf
  199.     RegWrite("HKEY_LOCAL_MACHINE\hSYS" & $ControlSet & "\Services" & $scsiname, "ImagePath", "REG_SZ", "system32\DRIVERS" & $ImagePath)
  200.     RegWrite("HKEY_LOCAL_MACHINE\hSYS" & $ControlSet & "\Services" & $scsiname, "ErrorControl", "REG_DWORD", "0x00000001")
  201.     RegWrite("HKEY_LOCAL_MACHINE\hSYS" & $ControlSet & "\Services" & $scsiname, "Group", "REG_SZ", "scsi miniport")
  202.     RegWrite("HKEY_LOCAL_MACHINE\hSYS" & $ControlSet & "\Services" & $scsiname, "Start", "REG_DWORD", "0x00000000")
  203.     RegWrite("HKEY_LOCAL_MACHINE\hSYS" & $ControlSet & "\Services" & $scsiname, "Tag", "REG_DWORD", "0x00000001")
  204.     RegWrite("HKEY_LOCAL_MACHINE\hSYS" & $ControlSet & "\Services" & $scsiname, "Type", "REG_DWORD", "0x00000001")
  205.    EndIf
  206.   EndIf
  207.   $i += 1
  208. WEnd
  209. EndFunc   ;==>GET_SCSI_driver
  210. Func _REGLOADHIVE($SFILE, $SKEY)
  211. Local $AVARRAY = SPLIT_SROOTKEY($SKEY)
  212. Local $HKEY = REGCONNECTREGISTRY($AVARRAY[0], $AVARRAY[1])
  213. Local $AVCURR[2][2] = [[$SE_RESTORE_NAME, $SE_PRIVILEGE_ENABLED],[$SE_BACKUP_NAME, $SE_PRIVILEGE_ENABLED]]
  214. Local $AVPREV = _SETPRIVILEGE($AVCURR)
  215. Local $AVRLH = DllCall("Advapi32.dll", "long", "RegLoadKey", "hwnd", $HKEY, "str", $AVARRAY[2], "str", $SFILE)
  216. _SETPRIVILEGE($AVPREV)
  217. REGCLOSEKEY($HKEY)
  218. Return SetError($AVRLH[0], 0, Number($AVRLH[0] = 0))
  219. EndFunc   ;==>_REGLOADHIVE
  220. Func _REGUNLOADHIVE($SKEY)
  221. Local $AVARRAY = SPLIT_SROOTKEY($SKEY)
  222. Local $HKEY = REGCONNECTREGISTRY($AVARRAY[0], $AVARRAY[1])
  223. Local $AVCURR[2][2] = [[$SE_RESTORE_NAME, $SE_PRIVILEGE_ENABLED],[$SE_BACKUP_NAME, $SE_PRIVILEGE_ENABLED]]
  224. Local $AVPREV = _SETPRIVILEGE($AVCURR)
  225. Local $AVRUH = DllCall("Advapi32.dll", "long", "RegUnLoadKey", "hwnd", $HKEY, "str", $AVARRAY[2])
  226. _SETPRIVILEGE($AVPREV)
  227. REGCLOSEKEY($HKEY)
  228. Return SetError($AVRUH[0], 0, Number($AVRUH[0] = 0))
  229. EndFunc   ;==>_REGUNLOADHIVE
  230. Func REGCLOSEKEY($HKEY)
  231. Local $AVRCK = DllCall("Advapi32.dll", "long", "RegCloseKey", "hwnd", $HKEY)
  232. Return SetError($AVRCK[0], 0, Number($AVRCK[0] = 0))
  233. EndFunc   ;==>REGCLOSEKEY
  234. Func REGCONNECTREGISTRY($SCOMPUTER, $HKEY)
  235. Local $AVRCR = DllCall("Advapi32.dll", "long", "RegConnectRegistry", "str", $SCOMPUTER, "hwnd", $HKEY, "hwnd*", 0)
  236. Return SetError($AVRCR[0], 0, $AVRCR[3])
  237. EndFunc   ;==>REGCONNECTREGISTRY
  238. Func SPLIT_SROOTKEY($SROOTKEY)
  239. Local Const $HKEY_CLASSES_ROOT = 0x80000000
  240. Local Const $HKEY_CURRENT_USER = 0x80000001
  241. Local Const $HKEY_LOCAL_MACHINE = 0x80000002
  242. Local Const $HKEY_USERS = 0x80000003
  243. Local Const $HKEY_CURRENT_CONFIG = 0x80000005
  244. Local $AVHKEY[5][3] = [["HKCR", "HKEY_CLASSES_ROOT", $HKEY_CLASSES_ROOT],["HKCU", "HKEY_CURRENT_USER", $HKEY_CURRENT_USER],["HKLM", "HKEY_LOCAL_MACHINE", $HKEY_LOCAL_MACHINE],["HKU", "HKEY_USERS", $HKEY_USERS],["HKCC", "HKEY_CURRENT_CONFIG", $HKEY_CURRENT_CONFIG]]
  245. Local $AVARRAY[3]
  246. If StringInStr($SROOTKEY, "\") = 1 Then
  247.   Local $ASCOMPUTER = StringRegExp($SROOTKEY, "\\\\[^\\]*\", 1)
  248.   If Not @error Then
  249.    $AVARRAY[0] = StringTrimRight($ASCOMPUTER[0], 1)
  250.    $SROOTKEY = StringReplace($SROOTKEY, $ASCOMPUTER[0], "", 1)
  251.   EndIf
  252. EndIf
  253. If StringInStr($SROOTKEY, "") = 1 Or StringInStr($SROOTKEY, "", 0, -1) = StringLen($SROOTKEY) Or StringInStr($SROOTKEY, "\") Then
  254.   $AVARRAY[0] = ""
  255.   Return $AVARRAY
  256. Else
  257.   Local $ASSPLIT = StringSplit($SROOTKEY, "")
  258.   For $i = 0 To UBound($AVHKEY) - 1
  259.    If $ASSPLIT[1] = $AVHKEY[$i][0] Or $ASSPLIT[1] = $AVHKEY[$i][1] Then
  260.     $AVARRAY[1] = $AVHKEY[$i][2]
  261.     ExitLoop
  262.    EndIf
  263.   Next
  264.   If $AVARRAY[1] = "" Then
  265.    $AVARRAY[0] = ""
  266.    Return $AVARRAY
  267.   EndIf
  268.   For $i = 2 To $ASSPLIT[0] - 1
  269.    $AVARRAY[2] &= $ASSPLIT[$i] & ""
  270.   Next
  271.   If $ASSPLIT[0] > 1 Then $AVARRAY[2] &= $ASSPLIT[$ASSPLIT[0]]
  272. EndIf
  273. Return $AVARRAY
  274. EndFunc   ;==>SPLIT_SROOTKEY

  275. Func _SETPRIVILEGE($AVPRIVILEGE)
  276. Local $IDIM = UBound($AVPRIVILEGE, 0), $AVPREVSTATE[1][2]
  277. If Not ($IDIM <= 2 And UBound($AVPRIVILEGE, $IDIM) = 2) Then Return SetError(1300, 0, $AVPREVSTATE)
  278. If $IDIM = 1 Then
  279.   Local $AVTEMP[1][2]
  280.   $AVTEMP[0][0] = $AVPRIVILEGE[0]
  281.   $AVTEMP[0][1] = $AVPRIVILEGE[1]
  282.   $AVPRIVILEGE = $AVTEMP
  283.   $AVTEMP = 0
  284. EndIf
  285. Local $K, $TAGTP = "dword", $ITOKENS = UBound($AVPRIVILEGE, 1)
  286. Do
  287.   $K += 1
  288.   $TAGTP &= ";dword;long;dword"
  289. Until $K = $ITOKENS
  290. Local $TCURRSTATE, $TPREVSTATE, $PPREVSTATE, $TLUID, $HADVAPI32, $HKERNEL32, $AHGCP, $AVOPT, $AIGLE
  291. $TCURRSTATE = DllStructCreate($TAGTP)
  292. $TPREVSTATE = DllStructCreate($TAGTP)
  293. $PPREVSTATE = DllStructGetPtr($TPREVSTATE)
  294. $TLUID = DllStructCreate("dword;long")
  295. DllStructSetData($TCURRSTATE, 1, $ITOKENS)
  296. $HADVAPI32 = DllOpen("Advapi32.dll")
  297. For $i = 0 To $ITOKENS - 1
  298.   DllCall($HADVAPI32, "int", "LookupPrivilegeValue", "str", "", "str", $AVPRIVILEGE[$i][0], "ptr", DllStructGetPtr($TLUID))
  299.   DllStructSetData($TCURRSTATE, 3 * $i + 2, DllStructGetData($TLUID, 1))
  300.   DllStructSetData($TCURRSTATE, 3 * $i + 3, DllStructGetData($TLUID, 2))
  301.   DllStructSetData($TCURRSTATE, 3 * $i + 4, $AVPRIVILEGE[$i][1])
  302. Next
  303. $HKERNEL32 = DllOpen("Kernel32.dll")
  304. $AHGCP = DllCall($HKERNEL32, "hwnd", "GetCurrentProcess")
  305. $AVOPT = DllCall($HADVAPI32, "int", "OpenProcessToken", "hwnd", $AHGCP[0], "dword", BitOR($TOKEN_ADJUST_PRIVILEGES, $TOKEN_QUERY), "hwnd*", 0)
  306. DllCall($HADVAPI32, "int", "AdjustTokenPrivileges", "hwnd", $AVOPT[3], "int", False, "ptr", DllStructGetPtr($TCURRSTATE), "dword", DllStructGetSize($TCURRSTATE), "ptr", $PPREVSTATE, "dword*", 0)
  307. $AIGLE = DllCall($HKERNEL32, "dword", "GetLastError")
  308. DllCall($HKERNEL32, "int", "CloseHandle", "hwnd", $AVOPT[3])
  309. DllClose($HKERNEL32)
  310. Local $ICOUNT = DllStructGetData($TPREVSTATE, 1)
  311. If $ICOUNT > 0 Then
  312.   Local $PLUID, $AVLPN, $TNAME, $AVPREVSTATE[$ICOUNT][2]
  313.   For $i = 0 To $ICOUNT - 1
  314.    $PLUID = $PPREVSTATE + 12 * $i + 4
  315.    $AVLPN = DllCall($HADVAPI32, "int", "LookupPrivilegeName", "str", "", "ptr", $PLUID, "ptr", 0, "dword*", 0)
  316.    $TNAME = DllStructCreate("char[" & $AVLPN[4] & "]")
  317.    DllCall($HADVAPI32, "int", "LookupPrivilegeName", "str", "", "ptr", $PLUID, "ptr", DllStructGetPtr($TNAME), "dword*", DllStructGetSize($TNAME))
  318.    $AVPREVSTATE[$i][0] = DllStructGetData($TNAME, 1)
  319.    $AVPREVSTATE[$i][1] = DllStructGetData($TPREVSTATE, 3 * $i + 4)
  320.   Next
  321. EndIf
  322. DllClose($HADVAPI32)
  323. Return SetError($AIGLE[0], 0, $AVPREVSTATE)
  324. EndFunc   ;==>_SETPRIVILEGE
  325. Func _WinAPI_CreateSemaphore($sName);阻止重复运行
  326. Local $Sema, $Turn
  327. $Sema = DllCall("Kernel32.dll", "ptr", "CreateSemaphore", "ptr", 0, "long", True, "long", True, "str", $sName)
  328. $Turn = DllCall("Kernel32.dll", "int", "WaitForSingleObject", "ptr", $Sema[0], "int", False)
  329. Return $Turn[0]
  330. EndFunc   ;==>_WinAPI_CreateSemaphore
复制代码

作者: 仙乃日    时间: 2010-8-5 16:59
原帖由 bwfj 于 2010-8-5 16:37 发表

不知楼主什么时候更新可以实现这个功能:清除目标系统的驱动

先前写的是调用第3方软件,现在想更改成纯粹的AU3的,对于自己来说是比较难的。
自己也不知道啥时候才能完成。主要是注册表重定向的技术,很难找着帮助的资料。
如果是在部署的时候来清除幽灵驱动或者残留的无用的驱动自己很早就完成了。
作者: zhhsh    时间: 2010-8-5 19:05
那个注册表重定向的资料我早已翻译了,在这
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=133391&highlight=
如果直接用devcon用注册表重定向的技术删除驱动应该不能实现,还是自己分析注册表吧
作者: 仙乃日    时间: 2010-8-5 19:38
原帖由 zhhsh 于 2010-8-5 19:05 发表
那个注册表重定向的资料我早已翻译了,在这
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=133391&highlight=
如果直接用devcon用注册表重定向的技术删除驱动应该不能实现,还是自己分析注册表吧

使用Runscanner的话  已经能实现了,自己现在在写的就是想实现类似Runscanner
的功能。
作者: zhhsh    时间: 2010-8-5 20:53
标题: 回复 #56 仙乃日 的帖子
莫非你有方法,而且用au3编写?
如果是那强烈支持。
而且不但是注册表重定向,还有文件重定向

不过你应该要用到HOOK

[ 本帖最后由 zhhsh 于 2010-8-5 20:54 编辑 ]
作者: 仙乃日    时间: 2010-8-5 20:56
原帖由 zhhsh 于 2010-8-5 20:53 发表
莫非你有方法,而且用au3编写?
如果是那强烈支持。
而且不但是注册表重定向,还有文件重定向

不过你应该要用到HOOK

注册表重定向是要用到hook的,文件重定向不一定要用到hook的。
作者: zhhsh    时间: 2010-8-5 21:01
标题: 回复 #58 仙乃日 的帖子
或许吧,runscanner要hook哪些函数可以通过用runscanner运行sreng
sreng会自动检测win32 api 是否正常,会有提示
作者: tzxinqing    时间: 2010-8-6 21:38
前来膜拜支持.......
作者: yyjpcx    时间: 2010-8-7 13:41
测试了 一下  联想V360笔记本  不可以成功
作者: pengjun88    时间: 2010-8-7 13:55
记好。、。。。。。。。。。
作者: ghangz    时间: 2010-8-17 06:17
很实用的工具,如果能够支持win7就更完美了
作者: lsp19880301    时间: 2010-8-17 09:08
我下载收藏了。备用..试试的新笔记本
作者: lqandy    时间: 2010-8-24 08:58
先下来测试一下,貌似挺方便的
作者: lsp19880301    时间: 2010-8-24 09:33
刚试过一台hp笔记本,型号:presario cq32-107tx 驱动注入成功,驱动控制器为intel的。。感谢楼主。。。不知在amd情况下能否成功?
作者: secowu    时间: 2010-8-24 14:10
如何反注?
即将系统所使用的驱动注入到现有PE中。
因为,有时候,有些驱动特别是磁盘驱动有些PE是没有的。
作者: diannao338    时间: 2010-8-24 15:24
支不支持 Ghost完 还没部署的系统?
作者: 66369    时间: 2010-8-24 21:38
继续完善.就是精华程序...
作者: 风神    时间: 2010-8-25 10:48
好东西,继续跟进啊
顶顶
作者: 仙乃日    时间: 2010-8-27 17:03
20100827小更新!
1.重写核心代码。
2.增加清除目标系统SRS驱动代码,界面还没写。
3.增加了从指定的驱动包注入的核心代码,界面也还没写。
作者: 66369    时间: 2010-8-27 17:34
原帖由 仙乃日 于 2010-8-27 17:03 发表
20100827小更新!
1.重写核心代码。
2.增加清除目标系统SRS驱动代码,界面还没写。
3.增加了从指定的驱动包注入的核心代码,界面也还没写。



界面下点工夫.

镶嵌"BY 仙乃日"即可...其他可省略.

供参考.
作者: JacXPS    时间: 2010-8-27 23:32
最新的驱动?不知支持什么核心!
作者: 快雪时晴    时间: 2010-8-28 11:13
势必要成为一个经典工具。
作者: 极度凶残    时间: 2010-8-28 11:35
原帖由 66369 于 2010-8-27 17:34 发表



界面下点工夫.

镶嵌"BY 仙乃日"即可...其他可省略.

供参考.

强烈支持这点....
作者: 仙乃日    时间: 2010-8-28 12:33
原帖由 66369 于 2010-8-27 17:34 发表



界面下点工夫.

镶嵌"BY 仙乃日"即可...其他可省略.

供参考.


原先的界面是参考别人的,所以文字信息多了一些,等有空自己重写下界面。
作者: cduser    时间: 2010-8-28 19:08
原帖由 66369 于 2010-8-27 17:34 发表



界面下点工夫.

镶嵌"BY 仙乃日"即可...其他可省略.

供参考.


我很赞同。。。。。。。
作者: shys    时间: 2010-8-28 21:11
标题: 回复 #1 仙乃日 的帖子
支持 标记,跟踪学习
作者: bluetooth    时间: 2010-8-28 21:47
这个工具不错,能不能支持64位的系统啊。
作者: p3506    时间: 2010-8-29 11:46
下载测试。谢谢分享!

经测试,PE下提示注入成功,但启动XP系统时仍然出现蓝屏

[ 本帖最后由 p3506 于 2010-8-29 12:27 编辑 ]
作者: shan    时间: 2010-8-29 17:49
啊,这里也能见到乃日啊,激动。。。。
作者: 仙乃日    时间: 2010-8-29 19:48
原帖由 p3506 于 2010-8-29 11:46 发表
下载测试。谢谢分享!

经测试,PE下提示注入成功,但启动XP系统时仍然出现蓝屏


如果能够,请上传能正常启动的驱动和说明所使用的PE。
蓝屏更多的是驱动本身的问题。
作者: 仙乃日    时间: 2010-8-29 19:52









[attach]98126[/attach][attach]98127[/attach][attach]98128[/attach]

[ 本帖最后由 仙乃日 于 2010-9-1 21:32 编辑 ]
作者: p3506    时间: 2010-8-30 07:49
原帖由 仙乃日 于 2010-8-29 19:48 发表


如果能够,请上传能正常启动的驱动和说明所使用的PE。
蓝屏更多的是驱动本身的问题。

我测试用的PE是H3的全功能版 H3CD100705,主板是P45的.
作者: zhhsh    时间: 2010-8-30 08:56
有一点需要注意的是win2003的磁盘控制器驱动部分是不能用于XP
有的磁盘控制器驱动依赖scsiport
作者: dmgy    时间: 2010-8-30 09:26
谢谢楼主提供这么好的工具。
作者: 2010sqzjg    时间: 2010-8-30 11:53
学习中,感谢!
作者: vocalsir    时间: 2010-8-30 15:35
提示: 作者被禁止或删除 内容自动屏蔽
作者: 仙乃日    时间: 2010-8-30 16:23
原帖由 vocalsir 于 2010-8-30 15:35 发表
支持,请提供源代码,谢谢~

在53楼有源码。http://bbs.wuyou.net/forum.php?mod=viewthread&tid=172415&extra=page%3D1&page=6
作者: xwan    时间: 2010-8-30 17:08
支持楼主的原创,希望不断完善,成为经典!
作者: 追逐灵魂    时间: 2010-8-30 17:20
感谢提供这么好的工具
作者: 仙乃日    时间: 2010-9-1 21:34
原帖由 p3506 于 2010-8-30 07:49 发表

我测试用的PE是H3的全功能版 H3CD100705,主板是P45的.

Ver:0.2时由于重写了核心代码,又生成了些新错误。谢谢反馈。
Ver:04自己已经初步测试通过,欢迎再次试用。
作者: tw555    时间: 2010-9-1 23:20
下载试用了  谢谢楼主
作者: dffd04    时间: 2010-9-1 23:24
这个很是需要,谢谢了。
作者: xhj    时间: 2010-9-2 00:01
貌似,这个又是一个新鲜玩意儿啊。
作者: ziyun    时间: 2010-9-2 07:27
品不能错过,感谢楼主分享!
作者: zhaohj    时间: 2010-9-2 08:54
支持一下,越来越完善了。
作者: ghangz    时间: 2010-9-2 10:17
下载试用了,很好用,非常不错的软件,楼主辛苦,谢谢!
作者: remix    时间: 2010-9-2 10:54
支持支持  别以前的更方便了
作者: 12077613    时间: 2010-9-2 13:53
驱动注入

提示解压需要 第4压缩分卷


为什么楼主只提供了三个?




欢迎光临 无忧启动论坛 (http://bbs.c3.wuyou.net/) Powered by Discuz! X3.3