<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[0xC0000005]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/xiaoxinjiang</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; xiaoxinjiang]]></copyright><item><title><![CDATA[Crash Dump自动化分析的尝试]]></title><link>https://blog.youkuaiyun.com/xiaoxinjiang/article/details/7931288</link><guid>https://blog.youkuaiyun.com/xiaoxinjiang/article/details/7931288</guid><author>xiaoxinjiang</author><pubDate>Sat, 01 Sep 2012 01:51:48 +0800</pubDate><description><![CDATA[其实另一个产品线的同事已经开发了自动分析的工具，但是非常不好用。同组的同事花了好几天也没能应用到目前的产品上来。
后来我接手了Crash Dump分析的工作，也了解了一下那个工具（称为A），它还需要调用另一个工具（称为B），过程繁琐，并且几乎无法维护和扩展。可以看出B也是尝试进行Crash Dump自动分析的结果，但需要人工干预和交互，算个半自动工具。一个C#的WinForm程序，仅通过wind]]></description><category></category></item><item><title><![CDATA[reCAPTCHA：通过网络安全措施进行基于人类的的字符识别]]></title><link>https://blog.youkuaiyun.com/xiaoxinjiang/article/details/7686687</link><guid>https://blog.youkuaiyun.com/xiaoxinjiang/article/details/7686687</guid><author>xiaoxinjiang</author><pubDate>Sat, 23 Jun 2012 21:53:22 +0800</pubDate><description><![CDATA[原文链接：http://www.cs.cmu.edu/~biglou/reCAPTCHA_Science.pdf

reCAPTCHA：通过网络安全措施进行基于人类的的字符识别
Luis von Ahn,* Benjamin Maurer, Colin McMillen, David Abraham, Manuel Blum
CAPTCHA（Completely Automated Pub]]></description><category></category></item><item><title><![CDATA[关于飞机加油的问题]]></title><link>https://blog.youkuaiyun.com/xiaoxinjiang/article/details/7038407</link><guid>https://blog.youkuaiyun.com/xiaoxinjiang/article/details/7038407</guid><author>xiaoxinjiang</author><pubDate>Sat, 03 Dec 2011 23:48:25 +0800</pubDate><description><![CDATA[看到一道关于飞机加油的问题，挺有意思。题目是这样的：

每个飞机只有一个油箱， 飞机之间可以相互加油（注意是相互，没有加油机） 一箱油可供一架飞机绕地球飞半圈，问题：为使至少一架飞机绕地球一圈回到起飞时的飞机场，至少需要出动几架飞机？（所有飞机从同一机场起飞，而且必须安全返回机场，不允许中途降落，中间没有飞机场）

在不考虑地球自转和加油消耗的时间，以及认为多架飞机可以同时加油的情况下，花]]></description><category></category></item><item><title><![CDATA[山寨OBJECT_TYPE隐藏技术的检测方法]]></title><link>https://blog.youkuaiyun.com/xiaoxinjiang/article/details/7013491</link><guid>https://blog.youkuaiyun.com/xiaoxinjiang/article/details/7013491</guid><author>xiaoxinjiang</author><pubDate>Fri, 25 Nov 2011 22:32:44 +0800</pubDate><description><![CDATA[针对《对抗内存搜索对象-教主》一文中山寨OBJECT_TYPE隐藏技术的检测方法：
 
方法1：
 
[Windows XP sp2] 
 
nt!_OBJECT_TYPE
   +0x000 Mutex            : _ERESOURCE
   +0x038 TypeList         : _LIST_ENTRY [ 0x821a55f0 - 0x821a55f]]></description><category></category></item><item><title><![CDATA[利用PDB文件获取未导出全局变量、函数等信息]]></title><link>https://blog.youkuaiyun.com/xiaoxinjiang/article/details/7013488</link><guid>https://blog.youkuaiyun.com/xiaoxinjiang/article/details/7013488</guid><author>xiaoxinjiang</author><pubDate>Fri, 25 Nov 2011 22:31:28 +0800</pubDate><description><![CDATA[方法来源于对Sysinternals的procexp的逆向。

在通过kernel的pdb获取未导出的MmSizeOfPagedPoolInBytes和MmMaximumNonPagedPoolInBytes时，procexp执行了如下几个步骤：
1. 获取kernel的映像文件名称
    调用IsProcessorFeaturePresent判断PAE是否开启，以确定使用ntoskrn]]></description><category></category></item><item><title><![CDATA[内核对象有效性的判定]]></title><link>https://blog.youkuaiyun.com/xiaoxinjiang/article/details/7013486</link><guid>https://blog.youkuaiyun.com/xiaoxinjiang/article/details/7013486</guid><author>xiaoxinjiang</author><pubDate>Fri, 25 Nov 2011 22:30:36 +0800</pubDate><description><![CDATA[一. 内核对象

1.  进程对象（EPROCESS）
较简单的方法是判断EPROCESS中的ExitTime是否为0，如果是0则说明该进程正在运行。但是由于该值不会对进程的运行产生任何影响，如果rootkit会在此处填值，使判断失效。
根据《Windows 核心编程 第五版》 P231中的叙述，Windows中的进程内核对象中存在一个布尔变量，标示进程是否终止，使得WaitForSing]]></description><category></category></item><item><title><![CDATA[SSDT中几个函数的原型和用处]]></title><link>https://blog.youkuaiyun.com/xiaoxinjiang/article/details/7013484</link><guid>https://blog.youkuaiyun.com/xiaoxinjiang/article/details/7013484</guid><author>xiaoxinjiang</author><pubDate>Fri, 25 Nov 2011 22:29:25 +0800</pubDate><description><![CDATA[1. Rpc
NtConnectPort  PortName: "\\Rpc Control\\DNSResolver" 
NtRequestWaitReplyPort 
 获得DNS解析的内容。
 
2.监控注册表操作
NtCreateKey
NtEnumrateKey
NtSetValueKey
 
3.监控文件操作
NtCreateFile
NtQueryDirect]]></description><category></category></item><item><title><![CDATA[返回地址HOOK]]></title><link>https://blog.youkuaiyun.com/xiaoxinjiang/article/details/7013477</link><guid>https://blog.youkuaiyun.com/xiaoxinjiang/article/details/7013477</guid><author>xiaoxinjiang</author><pubDate>Fri, 25 Nov 2011 22:28:07 +0800</pubDate><description><![CDATA[通过几次栈回溯，找到需要hook的地点，将返回地址替换为自己的hook函数。 

这种方法应用场景应该不常见，但对于之前提到的《PsSetCreateThreadNotify回调PsLookupThreadByThreadId失败》，这应该是一个不错的解决方案。下面详细说明。

第一次回溯，找到了上一级调用函数，在这里为“PspCreateThread”。在这里HOOK依然不能成功调用“P]]></description><category></category></item><item><title><![CDATA[PsSetCreateThreadNotify回调PsLookupThreadByThreadId失败]]></title><link>https://blog.youkuaiyun.com/xiaoxinjiang/article/details/7013413</link><guid>https://blog.youkuaiyun.com/xiaoxinjiang/article/details/7013413</guid><author>xiaoxinjiang</author><pubDate>Fri, 25 Nov 2011 22:04:41 +0800</pubDate><description><![CDATA[PsSetCreateThreadNotify设置的回调函数中调用PsLookupThreadByThreadId失败。原因在此。


在这个回调中因微软的疏忽，VISTA之前的系统调用PsLookupThreadByThreadId查找ThreadId对应的ETHREAD一定会失败。
因此应采用二次hook：
1.首先保存此处的三个参数，然后找到调用ThreadNotifyRoutin]]></description><category></category></item><item><title><![CDATA[世上只有知识不存在再分配]]></title><link>https://blog.youkuaiyun.com/xiaoxinjiang/article/details/7013370</link><guid>https://blog.youkuaiyun.com/xiaoxinjiang/article/details/7013370</guid><author>xiaoxinjiang</author><pubDate>Fri, 25 Nov 2011 22:00:37 +0800</pubDate><description><![CDATA[时间久了，再熟悉的东西也会慢慢淡忘。在Google Docs上记录了的那些技巧性的东西，若不分享，怕是将会永远淹没在字节海洋，像从未出现过一样。
因此，打算分享部分前几年写的东西。并且今后会经常更新博客，“技巧”可能会少些，更多会记录“技术”积累的点滴。朋友的一句话：“世上只有知识不存在再分配。”]]></description><category></category></item><item><title><![CDATA[关于IRC]]></title><link>https://blog.youkuaiyun.com/xiaoxinjiang/article/details/5417590</link><guid>https://blog.youkuaiyun.com/xiaoxinjiang/article/details/5417590</guid><author>xiaoxinjiang</author><pubDate>Thu, 25 Mar 2010 22:12:00 +0800</pubDate><description><![CDATA[今天尝试在IRC向ReactOS的老外求助，热心肠~ 以后有必要通过各种途径加强与外国技术牛人的交流。 在线IRC:http://www.mibbit.com/http://webchat.freenode.net/IRC Client:mIRC等，不一一列举了。要勇于提问，用于求助！]]></description><category></category></item><item><title><![CDATA[由_SEGMENT结构的变化引出的PAE问题]]></title><link>https://blog.youkuaiyun.com/xiaoxinjiang/article/details/5362829</link><guid>https://blog.youkuaiyun.com/xiaoxinjiang/article/details/5362829</guid><author>xiaoxinjiang</author><pubDate>Tue, 09 Mar 2010 22:44:00 +0800</pubDate><description><![CDATA[由_SEGMENT结构的变化引出的PAE问题


在根据微软提供的符号文件查找_SEGMENT中BaseAddress成员偏移的时候，发现这个成员的在结构中的偏移在ntoskrnl.exe/ntkrnlmp.exe中与ntkrnlpa.exe/ntkrpamp.exe中是不同的，自Windows 2000至Windows 2003都这样，而且_SEGMENT结构都不同。因此google了一下]]></description><category></category></item><item><title><![CDATA[Windows对象(Object)结构--关于Win7的补充]]></title><link>https://blog.youkuaiyun.com/xiaoxinjiang/article/details/5362827</link><guid>https://blog.youkuaiyun.com/xiaoxinjiang/article/details/5362827</guid><author>xiaoxinjiang</author><pubDate>Tue, 09 Mar 2010 22:43:00 +0800</pubDate><description><![CDATA[Windows对象(Object)结构--关于Win7的补充续 《Windows对象(Object)结构》自Window 7开始，_OBJECT_HEADER及其之前的一些结构发生了变化。首先来对比下Win7与XP的_OBJECT_HEADER：[Windows 7]0: kd> dt _object_headernt!_OBJECT_HEADER   +0x0]]></description><category></category></item><item><title><![CDATA[[转]Windows对象(Object)结构]]></title><link>https://blog.youkuaiyun.com/xiaoxinjiang/article/details/5362824</link><guid>https://blog.youkuaiyun.com/xiaoxinjiang/article/details/5362824</guid><author>xiaoxinjiang</author><pubDate>Tue, 09 Mar 2010 22:43:00 +0800</pubDate><description><![CDATA[Windows对象(Object)结构






CDrea
来源：WSS

Windows系统的各种资源以对象（Object）的形式来组织，例如File Object, Driver Object, Device Object等等，但实际上这些所谓的“对象”在系统的对象管理器（Object Manager）看来只是完整对象的一个部分——对象实体（Object Body）。W]]></description><category></category></item><item><title><![CDATA[UDP的checksum]]></title><link>https://blog.youkuaiyun.com/xiaoxinjiang/article/details/5362819</link><guid>https://blog.youkuaiyun.com/xiaoxinjiang/article/details/5362819</guid><author>xiaoxinjiang</author><pubDate>Tue, 09 Mar 2010 22:40:00 +0800</pubDate><description><![CDATA[只讨论IPv4
1. 概念
简单说，UDP的checksum计算，就是伪首部+UDP首部+UDP数据。伪首部并不是IP首部的一部分，而是由IP首部中的源IP（32 bit）、目的IP（32 bit）、协议号（8 bit），和UDP首部中的UDP长度（16 bit）共同拼凑起来的。
 
2. 实现
《TCP/IP详解》卷1第11章第3节中指出：UDP检验和的基本计算方法与IP首部检验和计算]]></description><category></category></item><item><title><![CDATA[[转]应用层结束进程方法]]></title><link>https://blog.youkuaiyun.com/xiaoxinjiang/article/details/5362814</link><guid>https://blog.youkuaiyun.com/xiaoxinjiang/article/details/5362814</guid><author>xiaoxinjiang</author><pubDate>Tue, 09 Mar 2010 22:38:00 +0800</pubDate><description><![CDATA[转自：http://blog.youkuaiyun.com/wxdvc/archive/2009/12/08/4965046.aspx


方法一针对有窗口的
消息攻击法
void main(void)
{
   HWND hwnd = FindWindow(NULL, "sai");
   SendMessage(hwnd,WM_CLOSE,0,0);
//PostMessage(hwnd]]></description><category></category></item></channel></rss>