找回密码
 加入
搜索
查看: 5723|回复: 10

[系统综合] 为何跨进程API Hook无法Hook到系统服务方式运行的进程

  [复制链接]
发表于 2012-6-8 14:30:23 | 显示全部楼层 |阅读模式
我使用了P版编写的RTApiHook32.au3,目的是想Hook一个进程的CreateFile函数,并修改其中的某个参数。
程序编写好后,一直无法Hook到该进程的信息,后来分析可能该进程是以系统服务的方式启动的,于是将服务停止,手工从开始菜单的“运行”启动该进程,这样该进程就是以explorer.exe启动的了。这样我的程序可以成功Hook到信息了。
后来我又查找论坛,使用了http://www.autoitx.com/forum.php ... hlight=%BD%F8%B3%CC中提到的_CreateProcessAsSystem以及设置父进程为services.exe和http://www.autoitx.com/forum.php ... FE%CE%F1&page=1中将Hook程序通过系统服务启动的方式,但都无法成功Hook到以服务方式运行的进程信息。
我想要Hook的进程是war-ftpd.exe,是一个免费的FTP服务器程序,下载地址是http://www.warftp.org/?menu=344
如果P版有时间的话,能否帮我看看怎么能Hook到它?
谢谢!

评分

参与人数 1金钱 +30 收起 理由
pusofalse + 30 Thanks~

查看全部评分

 楼主| 发表于 2012-6-11 10:49:06 | 显示全部楼层
自己顶一下。
发表于 2012-6-14 00:02:32 | 显示全部楼层
服务是以SYSTEM权限启动的,挂钩之前需要启用DEBUG特权。

评分

参与人数 1金钱 +10 收起 理由
user3000 + 10 向您学习!

查看全部评分

 楼主| 发表于 2012-6-14 21:26:12 | 显示全部楼层
挂钩之前需要启用DEBUG特权。
pusofalse 发表于 2012-6-14 00:02

请问启用debug特权该如何操作呢?是否在 LocalSecurityAuthority.au3 中能找到吗?
 楼主| 发表于 2012-6-15 17:28:52 | 显示全部楼层
$hToken = _OpenProcessToken(-1)
If Not $hToken Then WriteLog("获取自身进程令牌失败")
Local $aPriv[1][2] = [[$SE_DEBUG_NAME, 2]]
If Not _IsPrivilegeEnabled($hToken, $SE_DEBUG_NAME) Then
        If Not _AdjustTokenPrivileges($hToken, $aPriv) Then WriteLog("设置Debug权限失败")
EndIf
我使用了上面的代码,但是还是无法hook到进程的API,请再帮忙看看。
发表于 2012-6-16 07:12:13 | 显示全部楼层
仔细想了一下,这个库确实无法操作服务程序。普通进程运行在Default桌面下,而服务进程则不然,分处于两个不同桌面的进程无法实现消息传递,而这个库在截取到API调用时,内部则是调用了SendMessage函数来通知Autoit进程,因此导致了这个BUG。若要操作服务程序,需要重写整个库文件。
感谢楼主兄提出的这个问题,我现在才知道它确是有很多BUG。
 楼主| 发表于 2012-6-16 15:38:33 | 显示全部楼层
还好被hook的程序能够以非服务方式起动。看来au3在处理这些底层方面还是比较弱,希望能越来越完善吧。
发表于 2012-6-16 16:42:45 | 显示全部楼层
学习了,积累经验也是件好事。
发表于 2012-6-16 16:50:25 | 显示全部楼层
回复 7# lvjing79


    只是我在编写之初没有考虑全面而已,何以见得Au3在处理这所谓底层的问题时不够强大?
发表于 2012-6-17 11:12:19 | 显示全部楼层
希望早日见到P版的新作品哈。
 楼主| 发表于 2012-6-17 20:27:09 | 显示全部楼层
回复 9# pusofalse
大体就是觉得windows系统编程的代码大多是用c或c++编写的,但转换为au3对于我来说还是高深了一点。但个人没有看低au3的意思,反而觉得au3在某些方面是非常方便好用的。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-12-28 03:11 , Processed in 0.080230 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表