📄 subject_45066.htm
字号:
<p>
序号:45066 发表者:阿蝌 发表日期:2003-06-26 10:28:49
<br>主题:Neil_gan/dr0进来看看,有个问题(截获Api的)
<br>内容:2.system threads locate in system processes, you can only inject a dll to these processes if your code is running under a system process.(Neil说的)<BR><BR>///以上何解?像Ie/资源管理器 这类东东是不是就是在系统进程中,我测试过注入IE没有任何问题,只是资源管理器只能注入一次,第二次就不行了(用的Jmp方法)<BR>
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
回复者:Neil Gan 回复日期:2003-06-26 10:46:20
<br>内容:我指的是像smss.exe,winlogon.exe,smss.exe之类的进程。它们是由System用户启动的,只有同样由System用户启动的进程才有CreateRemoteThread的权限。<BR><BR>印象中有一个Privilege,我忘了具体是什么。拥有这个privilege的进程可以debugopen其它的进程,当然也就可以CreateRemoteThread了
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:阿蝌 回复日期:2003-06-26 11:22:41
<br>内容:smss.exe,winlogon.exe是做什么用的?<BR>CreateRemoteThread又是什么?<BR>System用户是不是管理员?
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:Neil Gan 回复日期:2003-06-26 11:33:28
<br>内容:它们都是nt/2000下的系统进程。是作为system用户启动的,你用taskmgr就可以看到。<BR><BR>CreateRemoteThread是用来在另外的进程中create线程的,这是一种常用的注入远程dll的方法<BR><BR>system用户拥有完全的本地权限。有一些privilege缺省是不给administrator的,虽然adminstrator可以用用户管理器给自己这些权限。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:阿蝌 回复日期:2003-06-26 11:44:16
<br>内容:麻烦了Neil Gan这么长时间真不好意思。<BR>小弟再问最后一个问题:CreateRemoteThread和用全局钩子哪个更好一点?<BR>还有就是 我用Dll注入资源管理器为什么只能注入一次,第二次就不行了?<BR>多谢
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:Neil Gan 回复日期:2003-06-26 11:54:28
<br>内容:不用谢,大家互相帮助罢了。<BR><BR>Jeffrey Richter的书里面有几种方法的比较。不过如果是nt/2000的话应该用CreateRemoteThread,如果是9x的话,CreateRemoteThread没有被实现。<BR><BR>我猜第二个问题是因为第一次是真正的注入,DllMain会被调用。第二次Dll已经被载入,所以DllMain不被调用。<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:阿蝌 回复日期:2003-06-27 11:29:50
<br>内容:可是我的注入部分没有写在DllMain中阿
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:Neil Gan 回复日期:2003-06-27 11:33:51
<br>内容:你的目的是什么?你如何知道第二次没有注入成功?
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:阿蝌 回复日期:2003-06-27 21:57:30
<br>内容:我用钩子dll注入了其它应用程序后,Hook了这些程序的TranslateMessage函数(是在消息回掉函数中修改TranslateMessage的),在新的TranslateMessage中加入了一个自己写的函数,,然后改回TranslateMessage地址,再重新调用原来的TranslateMessage。<BR><BR>这时在所有启动的所有应用程序中(包括启动了多个副本的),我自己写的函数都会起作用(只要被钩到),但是如果我打开了资源管理器,第一次起作用,再打开一个就没有用了。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:dr0 回复日期:2003-06-27 22:14:54
<br>内容:打开一个explorer窗口,相当于新开一个explorer process .
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:Neil Gan 回复日期:2003-06-28 03:02:28
<br>内容:dr0:<BR>我试了一下,explorer共享同一个进程,只是多了一个线程。再说,阿蝌用的应该是全局钩子,自动勾住每一个新进程,所以就算是不同进程也应该没有问题。如果在同一个进程里面,就更不应该有问题了,TranslateMessage的指令是被所有进程共享的啊。<BR><BR>我也不知道为什么。建议阿蝌跟踪一下,explorer有没有进到修改过的TranslateMessage里面。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:阿蝌 回复日期:2003-06-28 10:57:44
<br>内容:多谢两位,我再看看吧<BR><BR>Neil_Gan能不能告诉我你是用什么东东跟出来explorer只有一个进程,但有多个线程的?<BR>Spy++?<BR><BR>2003-6-28 12:05:41
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -