<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet href='http://feeds.feedsky.com/styles/temp01.xsl' type='text/xsl' ?><!--这是一个由Feedsy提供技术支持的Feed，为了提高读者阅读的体验，以及满足用户美化自己Feed的需要，我们设计了多种精美的Feed模板，提供给大家选择，所有最终呈现出来的样式，皆由用户自愿选择使用，未经许可，任何团体和个人，请不要擅自修改样式或者盗用，这是对于用户选择权的尊重。--><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:fs="http://www.feedsky.com/namespace/feed" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><atom:link href="http://feeds.feedsky.com/csdn.net/galihoo" type="application/rss+xml" rel="self"></atom:link><fs:self_link href="http://feeds.feedsky.com/csdn.net/galihoo" type="application/rss+xml"></fs:self_link><lastBuildDate>Fri, 18 Apr 2008 23:06:00 GMT</lastBuildDate><title>galihoo的专栏</title><link>http://blog.csdn.net/galihoo/</link><item><title>[分析]detours 通过修改输入表注入DLL -- UpdateImports 函数的分析</title><link>http://blog.csdn.net/galihoo/archive/2008/04/18/2305898.aspx</link><wfw:comment>http://blog.csdn.net/galihoo/comments/2305898.aspx</wfw:comment><slash:comments>0</slash:comments><wfw:commentRss>http://blog.csdn.net/galihoo/comments/commentRss/2305898.aspx</wfw:commentRss><trackback:ping>http://tb.blog.csdn.net/TrackBack.aspx?PostId=2305898</trackback:ping><description>前段时间有一个需求,就是在进程启动的第一时间实现dll的注入,当时一想以为很简单嘛,比如拦截CreateProcessInternalW等不就行了吗?后来发现如果你在CreateProcessInternalW前处理进程还没有启动,而之后处理的话,进程的主线程已经开始工作了,再后来通过修改创建标志把创建的进程的主线程挂起,等进程创建后我来注入,此时才发现创建远线程搞不定, 此时进程只有NTDLL,其他模块还没有加载呢.再最后终于发现了detours 2.1为我们提供了一个函数DetourCreateProcessWithDllW,它可以实现在进程创建初期就将dll加载进去,下面我就来分析一下detours怎么做到在进程初期就将dll加载进程的.

&lt;img src =&quot;http://blog.csdn.net/galihoo/aggbug/2305898.aspx&quot; width = &quot;1&quot; height = &quot;1&quot; /&gt;</description><pubDate>Sat, 19 Apr 2008 07:06:00 +0800</pubDate><author>galihoo</author><comments>http://blog.csdn.net/galihoo/archive/2008/04/18/2305898.aspx#Feedback</comments><guid isPermaLink="false">http://blog.csdn.net/galihoo/archive/2008/04/18/2305898.aspx</guid><dc:creator>galihoo</dc:creator></item><item><title>[讨论]关于缓冲区溢出的检测</title><link>http://blog.csdn.net/galihoo/archive/2008/04/17/2299151.aspx</link><wfw:comment>http://blog.csdn.net/galihoo/comments/2299151.aspx</wfw:comment><slash:comments>0</slash:comments><wfw:commentRss>http://blog.csdn.net/galihoo/comments/commentRss/2299151.aspx</wfw:commentRss><trackback:ping>http://tb.blog.csdn.net/TrackBack.aspx?PostId=2299151</trackback:ping><description>目前,缓冲区溢出应该是攻击的最直接的方式,因此如何检测缓冲区溢出以及保护刻不容缓 ,然而当前并没有很稳定可靠的方法来对缓冲区溢出进行检测,MACFEE应该是提出缓冲区溢出保护的最早的安全厂商,然而如今也不再对该技术进行大肆宣传了,这几天在网上翻了一下,感觉Comodo公司对缓冲区溢出的检测做的比较好,然后我也看不懂他采用的什么技术,如果哪位牛人来介绍一下他采用的技术就好了.后来又看了gyzy的文章&quot;基于栈指纹检测缓冲区溢出的一点思路&quot;以及czy对其的点评,可以看出,这两位牛人对漏洞的分析利用都有着非凡的经验,然而从文章中也看的出按照这样的技术思路还不能应对很多缓冲区溢出, 首先就是基于这样的返回地址检测本身的不稳定,kaba也只是把他作为特征码扫描的一个补充,如果单单这样的话,绕过的方法肯定不只是 修改teb和push ret+jmp这两种方法, 其次就是对于堆溢出的检测,目前很多堆溢出漏洞通过大面积的喷射然后跳转都能够稳定的利用,特别是与IE相关的堆溢出. 牛人们对于缓冲区溢出的检测尚且如此,我就更不说了,但是我还是把这几天的想法总结一下,希望对自己以及研究的溢出检测的朋友有帮助:&lt;img src =&quot;http://blog.csdn.net/galihoo/aggbug/2299151.aspx&quot; width = &quot;1&quot; height = &quot;1&quot; /&gt;</description><pubDate>Thu, 17 Apr 2008 10:13:00 +0800</pubDate><author>galihoo</author><comments>http://blog.csdn.net/galihoo/archive/2008/04/17/2299151.aspx#Feedback</comments><guid isPermaLink="false">http://blog.csdn.net/galihoo/archive/2008/04/17/2299151.aspx</guid><dc:creator>galihoo</dc:creator></item><item><title>通过PspTerminateThreadByPointer结束进程</title><link>http://blog.csdn.net/galihoo/archive/2008/04/16/2298731.aspx</link><wfw:comment>http://blog.csdn.net/galihoo/comments/2298731.aspx</wfw:comment><slash:comments>0</slash:comments><wfw:commentRss>http://blog.csdn.net/galihoo/comments/commentRss/2298731.aspx</wfw:commentRss><trackback:ping>http://tb.blog.csdn.net/TrackBack.aspx?PostId=2298731</trackback:ping><description>很早前写的代码了,免得腐烂了,贴出来
这个思想是在读了PJF牛人 &quot;终止进程内幕&quot; 后才晓得
基本思想就是用户态将欲结束的进程PID传递到内核驱动,驱动通过PsLookupProcessByProcessId得到进程的EPROCESS结构,再通过EPROCESS结构找到线程的链表头,遍历这个链表,逐一调用PspTerminateThreadByPointer,将其一个一个的KILL掉&lt;img src =&quot;http://blog.csdn.net/galihoo/aggbug/2298731.aspx&quot; width = &quot;1&quot; height = &quot;1&quot; /&gt;</description><pubDate>Thu, 17 Apr 2008 06:15:00 +0800</pubDate><author>galihoo</author><comments>http://blog.csdn.net/galihoo/archive/2008/04/16/2298731.aspx#Feedback</comments><guid isPermaLink="false">http://blog.csdn.net/galihoo/archive/2008/04/16/2298731.aspx</guid><dc:creator>galihoo</dc:creator></item><item><title>绕过安全软件挂钩SSDT的检测</title><link>http://blog.csdn.net/galihoo/archive/2008/04/16/2298626.aspx</link><wfw:comment>http://blog.csdn.net/galihoo/comments/2298626.aspx</wfw:comment><slash:comments>0</slash:comments><wfw:commentRss>http://blog.csdn.net/galihoo/comments/commentRss/2298626.aspx</wfw:commentRss><trackback:ping>http://tb.blog.csdn.net/TrackBack.aspx?PostId=2298626</trackback:ping><description>很多安全软件都靠挂钩SSDT中的函数来检测恶意代码,就拿卡巴举例吧,他挂了NtCreateKey来检测注册表的创建,NtCreateThread和NtResumeThread/NtWriteVirtualMemory来检测远程注入, 等等,这些钩子让我们后期的动作很可能暴露,怎么样才能为所欲为呢?&lt;img src =&quot;http://blog.csdn.net/galihoo/aggbug/2298626.aspx&quot; width = &quot;1&quot; height = &quot;1&quot; /&gt;</description><pubDate>Thu, 17 Apr 2008 05:31:00 +0800</pubDate><author>galihoo</author><comments>http://blog.csdn.net/galihoo/archive/2008/04/16/2298626.aspx#Feedback</comments><guid isPermaLink="false">http://blog.csdn.net/galihoo/archive/2008/04/16/2298626.aspx</guid><dc:creator>galihoo</dc:creator></item><item><title>guitoolkit 的使用问题</title><link>http://blog.csdn.net/galihoo/archive/2008/04/16/2298515.aspx</link><wfw:comment>http://blog.csdn.net/galihoo/comments/2298515.aspx</wfw:comment><slash:comments>0</slash:comments><wfw:commentRss>http://blog.csdn.net/galihoo/comments/commentRss/2298515.aspx</wfw:commentRss><trackback:ping>http://tb.blog.csdn.net/TrackBack.aspx?PostId=2298515</trackback:ping><description>guitoolkit 的使用问题.&lt;img src =&quot;http://blog.csdn.net/galihoo/aggbug/2298515.aspx&quot; width = &quot;1&quot; height = &quot;1&quot; /&gt;</description><pubDate>Thu, 17 Apr 2008 04:56:00 +0800</pubDate><author>galihoo</author><comments>http://blog.csdn.net/galihoo/archive/2008/04/16/2298515.aspx#Feedback</comments><guid isPermaLink="false">http://blog.csdn.net/galihoo/archive/2008/04/16/2298515.aspx</guid><dc:creator>galihoo</dc:creator></item><item><title>vc6定制驱动程序AppWizard -- vc6 custom AppWiZard for Simple Driver Development</title><link>http://blog.csdn.net/galihoo/archive/2007/10/27/1848396.aspx</link><wfw:comment>http://blog.csdn.net/galihoo/comments/1848396.aspx</wfw:comment><slash:comments>0</slash:comments><wfw:commentRss>http://blog.csdn.net/galihoo/comments/commentRss/1848396.aspx</wfw:commentRss><trackback:ping>http://tb.blog.csdn.net/TrackBack.aspx?PostId=1848396</trackback:ping><description>本文提供了vc下定制的驱动程序AppWizard的源代码&lt;img src =&quot;http://blog.csdn.net/galihoo/aggbug/1848396.aspx&quot; width = &quot;1&quot; height = &quot;1&quot; /&gt;</description><pubDate>Sun, 28 Oct 2007 02:03:00 +0800</pubDate><author>galihoo</author><comments>http://blog.csdn.net/galihoo/archive/2007/10/27/1848396.aspx#Feedback</comments><guid isPermaLink="false">http://blog.csdn.net/galihoo/archive/2007/10/27/1848396.aspx</guid><dc:creator>galihoo</dc:creator></item><item><title>更加稳定的HOOK SSDT(通过MDL方式)</title><link>http://blog.csdn.net/galihoo/archive/2007/10/27/1848267.aspx</link><wfw:comment>http://blog.csdn.net/galihoo/comments/1848267.aspx</wfw:comment><slash:comments>0</slash:comments><wfw:commentRss>http://blog.csdn.net/galihoo/comments/commentRss/1848267.aspx</wfw:commentRss><trackback:ping>http://tb.blog.csdn.net/TrackBack.aspx?PostId=1848267</trackback:ping><description>一个更加稳定的写SSDT表的方式&lt;img src =&quot;http://blog.csdn.net/galihoo/aggbug/1848267.aspx&quot; width = &quot;1&quot; height = &quot;1&quot; /&gt;</description><pubDate>Sun, 28 Oct 2007 01:02:00 +0800</pubDate><author>galihoo</author><comments>http://blog.csdn.net/galihoo/archive/2007/10/27/1848267.aspx#Feedback</comments><guid isPermaLink="false">http://blog.csdn.net/galihoo/archive/2007/10/27/1848267.aspx</guid><dc:creator>galihoo</dc:creator></item><item><title>卸载其他进程中的模块/dll</title><link>http://blog.csdn.net/galihoo/archive/2007/08/08/1730931.aspx</link><wfw:comment>http://blog.csdn.net/galihoo/comments/1730931.aspx</wfw:comment><slash:comments>0</slash:comments><wfw:commentRss>http://blog.csdn.net/galihoo/comments/commentRss/1730931.aspx</wfw:commentRss><trackback:ping>http://tb.blog.csdn.net/TrackBack.aspx?PostId=1730931</trackback:ping><description>前段时间做了一个东西,在所有进程中都挂接了自己的DLL,结果每次要重新编译DLL让其运行都需要重启计算机,这下可有点郁闷, 得想想办法手动卸载了这些DLL,因此变有了这个程序
&lt;img src =&quot;http://blog.csdn.net/galihoo/aggbug/1730931.aspx&quot; width = &quot;1&quot; height = &quot;1&quot; /&gt;</description><pubDate>Wed, 08 Aug 2007 11:37:00 +0800</pubDate><author>galihoo</author><comments>http://blog.csdn.net/galihoo/archive/2007/08/08/1730931.aspx#Feedback</comments><guid isPermaLink="false">http://blog.csdn.net/galihoo/archive/2007/08/08/1730931.aspx</guid><dc:creator>galihoo</dc:creator></item><item><title>如何使用 C++ 方式来编写驱动</title><link>http://blog.csdn.net/galihoo/archive/2007/08/06/1727870.aspx</link><wfw:comment>http://blog.csdn.net/galihoo/comments/1727870.aspx</wfw:comment><slash:comments>0</slash:comments><wfw:commentRss>http://blog.csdn.net/galihoo/comments/commentRss/1727870.aspx</wfw:commentRss><trackback:ping>http://tb.blog.csdn.net/TrackBack.aspx?PostId=1727870</trackback:ping><description>问题的由来:
        c源文件是以&quot;c&quot;为后缀的 ,而纯c语言都是在函数的开始就将所有用的变量全部定义好,然后在函数中使用,如果不按照这个规定,那么等待你的就是在编译的时候将你处以极刑,这个让我觉得非常郁闷,我就是想在使用的时候再定义一个变量,这样可以让我的程序更加让自己读懂,因此就产生了这个话题 &quot;如何使用 C++ 方式来编写驱动&quot;&lt;img src =&quot;http://blog.csdn.net/galihoo/aggbug/1727870.aspx&quot; width = &quot;1&quot; height = &quot;1&quot; /&gt;</description><pubDate>Mon, 06 Aug 2007 11:09:00 +0800</pubDate><author>galihoo</author><comments>http://blog.csdn.net/galihoo/archive/2007/08/06/1727870.aspx#Feedback</comments><guid isPermaLink="false">http://blog.csdn.net/galihoo/archive/2007/08/06/1727870.aspx</guid><dc:creator>galihoo</dc:creator></item><item><title>用户态轻松调用ntdll中的native api</title><link>http://blog.csdn.net/galihoo/archive/2007/08/06/1727865.aspx</link><wfw:comment>http://blog.csdn.net/galihoo/comments/1727865.aspx</wfw:comment><slash:comments>0</slash:comments><wfw:commentRss>http://blog.csdn.net/galihoo/comments/commentRss/1727865.aspx</wfw:commentRss><trackback:ping>http://tb.blog.csdn.net/TrackBack.aspx?PostId=1727865</trackback:ping><description>ntdll中的native api功能非常强大,然而微软却没有提供用户态调用native api的接口,而这些native api所需要的数据结构微软也基本没有公布,幸好有了一批牛人的贡献,给出了很多native api的定义,让我们的生活免去了许多痛苦,本文在介绍了最基本的native api的调用方式之外,还介绍了一种更加优美,移植性更强的调用方式。&lt;img src =&quot;http://blog.csdn.net/galihoo/aggbug/1727865.aspx&quot; width = &quot;1&quot; height = &quot;1&quot; /&gt;</description><pubDate>Mon, 06 Aug 2007 09:47:00 +0800</pubDate><author>galihoo</author><comments>http://blog.csdn.net/galihoo/archive/2007/08/06/1727865.aspx#Feedback</comments><guid isPermaLink="false">http://blog.csdn.net/galihoo/archive/2007/08/06/1727865.aspx</guid><dc:creator>galihoo</dc:creator></item></channel></rss>