<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
<channel>
<title><![CDATA[youstar]]></title>
<link>http://www.youstar.org.ru/</link>
<description><![CDATA[专注网络安全技术]]></description>
<language>zh-cn</language>
<copyright><![CDATA[Copyright 2005 PBlog3 v2.8]]></copyright>
<webMaster><![CDATA[1050709009@qq.com(youstar)]]></webMaster>
<generator>PBlog2 v2.4</generator> 
<image>
	<title>youstar</title>
	<url>http://www.youstar.org.ru/images/logos.gif</url>
	<link>http://www.youstar.org.ru/</link>
	<description>youstar</description>
</image>

			<item>
			<link>http://www.youstar.org.ru/article.asp?id=427</link>
			<title><![CDATA[博客准备改版~]]></title>
			<author>1050709009@qq.com(admin)</author>
			<category><![CDATA[建站设计]]></category>
			<pubDate>Mon,30 Aug 2010 17:06:48 +0800</pubDate>
			<guid>http://www.youstar.org.ru/default.asp?id=427</guid>
		<description><![CDATA[想从pj转为WP，感觉PJ的收录不是很好，PJ4一直都没出来，不想期待了。虽然现在PR=3，有点不忍，甚至面临网站暂时被封，但是一直以来就有这个想法，想改变下。<br/>&nbsp;&nbsp;&nbsp;&nbsp;同时希望有能力的朋友可以给提供个免费空间，非常感谢~]]></description>
		</item>
		
			<item>
			<link>http://www.youstar.org.ru/article.asp?id=426</link>
			<title><![CDATA[灵格斯去广告补丁下载]]></title>
			<author>1050709009@qq.com(admin)</author>
			<category><![CDATA[软件推荐]]></category>
			<pubDate>Tue,10 Aug 2010 21:58:36 +0800</pubDate>
			<guid>http://www.youstar.org.ru/default.asp?id=426</guid>
		<description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 原来一直在用灵格斯，但是后来把软件启动一段时间后就会出现一个广告页面，感觉十分不爽，前几天把金山词霸下载下来安装起，但是感觉不习惯，就想找灵格斯去广告补丁，网上找了很多都不能用，后来找到一款针对2.7.1的版本的，但是目前的最新版本是2.7.2。下载下来测试成功。先放一个在这，方便自己也方便他人。<br/>&nbsp;&nbsp; 程序加壳：UPX<br/>&nbsp;&nbsp;&nbsp;&nbsp;运行后会自动检测安装目录，选择你需要去掉的广告就OK。<br/>&nbsp;&nbsp; 版本：2.7.1&amp;&amp;2.7.2<br/>&nbsp;&nbsp;&nbsp;&nbsp;去广告原理：貌似是把原来的Up&#100;ate文件夹直接删除，然后新建一个Up&#100;ate的文件，无后缀的。<br/>&nbsp;&nbsp;&nbsp;&nbsp;下载：<a target="_blank" href="http://down.qiannao.com/space/file/youstar/share/2010/8/10/Lingoes_ADHack.exe/.page" rel="external">立即下载</a>]]></description>
		</item>
		
			<item>
			<link>http://www.youstar.org.ru/article.asp?id=425</link>
			<title><![CDATA[美DHS发布: 网际安全研究路线图]]></title>
			<author>1050709009@qq.com(admin)</author>
			<category><![CDATA[安全技术]]></category>
			<pubDate>Wed,04 Aug 2010 23:58:12 +0800</pubDate>
			<guid>http://www.youstar.org.ru/default.asp?id=425</guid>
		<description><![CDATA[From:<a target="_blank" href="http://hi.baidu.com/secway/blog/item/1e788524bbc8963e8744f9b6.html" rel="external">SoWhat </a><br/><br/>A Roadmap for Cybersecurity Research<br/><br/>Scalable trustworthy systems (including system architectures and requisite development methodology)<br/>Enterprise-level metrics (including measures of overall system trustworthiness)<br/>System evaluation life cycle (including approaches for sufficient assurance)<br/>Combating insider threats<br/>Combating malware and botnets<br/>Global-scale identity management<br/>Survivability of time-critical systems<br/>Situational understanding and attack attribution<br/>Provenance (relating to information, systems, and hardware)<br/>Privacy-aware security<br/>Usable security<br/>报告全文：<a href="http://www.cyber.st.dhs.gov/docs/DHS-Cybersecurity-Roadmap.pdf" target="_blank" rel="external">http://www.cyber.st.dhs.gov/docs/DHS-Cybersecurity-Roadmap.pdf</a><br/><br/>个人建议：<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;可以看看国外正在研究那些方向，那些可以值得参考的东西。]]></description>
		</item>
		
			<item>
			<link>http://www.youstar.org.ru/article.asp?id=424</link>
			<title><![CDATA[浅谈MD5加密算法中的加盐值(SALT)]]></title>
			<author>1050709009@qq.com(admin)</author>
			<category><![CDATA[技术共享]]></category>
			<pubDate>Wed,04 Aug 2010 15:25:08 +0800</pubDate>
			<guid>http://www.youstar.org.ru/default.asp?id=424</guid>
		<description><![CDATA[文章作者：bre4k<br/>文章备注：<a href="http://www.bre4k.org/technology/281" target="_blank" rel="external">http://www.bre4k.org/technology/281</a><br/><br/>您是否遇见过破解不了的MD5值？你是否遇见过‘奇形怪状’的hash？这些非常有可能就是带有salt（俗称加盐值），本文将为大家简单的介绍关于加盐值的一些信息。<br/><br/>0×01. 什么是加盐值?<br/>为了加强MD5的安全性（本身是不可逆的），从而加入了新的算法部分即加盐值，加盐值是随机生成的一组字符串，可以包括随机的大小写字母、数字、字符，位数可以根据要求而不一样，使用不同的加盐值产生的最终密文是不一样的。<br/><br/>0×02. 代码中如何使用加盐值?<br/>由于使用加盐值以后的密码相当的安全，即便是你获得了其中的salt和最终密文，破解也是一个耗费相当多时间的过程，可以说是破解单纯MD5的好几倍，那么使用加盐值以后的密文是如何产生的呢？<br/>1).首先我们得到的是明文的hash值<br/>2).进行计算获取MD5明文hash值<br/>3).随机生成加盐值并插入<br/>4).MD5插入加盐值得到的hash<br/>5).得到最终的密文<br/><br/>0×03. 如何破解出带有加盐值的密文<br/>因为像windows hash（未进行syskey加密）、非加盐值MD5等都可以通过大型的密码（如彩虹表）表进行对比解密，所以相对而言相当的轻松，而带有加盐值的密文就相对而言复杂的多，现在的MD5表大概是260+G，如何加盐值的可能性有10000个，那么密码表的应该是MD5 size*10000，就可以解密出原MD5表能够解密的密码了，一些网站也提供了对应的salt解密，但是测试以后效果并不是非常好，如常规的admin888也未解密出，实在是遗憾，毕竟MD5本是不可逆的，带入随机值解密出最终密码的可能性就更低了，至少是相对大多数人而言的。<br/><br/>0×04. 含加盐值MD5算法的应用<br/>目前多家的网站程序公司都已经加入了该算法，如常见的VBB论坛、discuz论坛等都采用了，甚至著名的Linux开源操作系统早已经加入了这种加密模式。可得而知，这种算法势必会在未来应用于更多的范围。<br/><br/>*0×05. 如何渗透带有加盐值的站点(实际案例)？<br/>这一段信息是来源于我近日实际渗透的片段，由于通过多种途径无法解密带有加盐值的密文，所以只能通过其他方式进行突破，本欲修改管理员密码来进行操作，但站点是通过多个网站对比密码的形式，如站A和站B，我如果修改站A的密码，一旦对比站A和站B，那么将会提示无法登陆，因为我只拥有一个站的管理权限，那么这样就非常的麻烦了，一是密文无法破解，二是修改密码无效。那么我们应该如何处理呢？这里简述下本人在这里应用的方法：<br/>1).修改admin uid为没有启用的某值<br/>2).将自己的注册用户修改为admin uid的值<br/>重新登陆，并成功获取权限，因为在站A中式依据uid来分配权限的，也就是给某uid管理员权限，如此而言轻松获取到管理员权限。]]></description>
		</item>
		
			<item>
			<link>http://www.youstar.org.ru/article.asp?id=423</link>
			<title><![CDATA[egg hunter深入研究与总结]]></title>
			<author>1050709009@qq.com(admin)</author>
			<category><![CDATA[漏洞专题]]></category>
			<pubDate>Thu,22 Jul 2010 19:34:53 +0800</pubDate>
			<guid>http://www.youstar.org.ru/default.asp?id=423</guid>
		<description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;原来一直对egg hunter有所了解，但是基本上都是表面上的，感觉看懂了，实际上还是不懂原理的，最近抽了点时间仔细研究了下这个技术。nologin的经典的egghunt-shellcode.pdf的教程，感觉nologin出品的很多专题都讲的很好，在此推荐下。本文是自己总结的一点，可能存在很多错误的地方，望指教。<br/>原理： <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; egg hunter实际上就是在缓冲区溢出中有时候我们可以利用字节数被限制了，不能达到我们想要的目的，但是可以把shellcode放到其它的地方，于是就需要在这小的字节中布置我们的代码来查找存在其它地方可以执行的shellcode。<br/>分类：<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;根据使用不同的原理可以分为以下几种方式：<br/>1、SHE<br/>&nbsp;&nbsp;&nbsp;&nbsp; 通过安装一个自定义的异常处理程序，一个egg hunter可以捕获并忽略访问异常，当他们在搜寻内存区域的期间。<br/>&nbsp;&nbsp;&nbsp;&nbsp; 优点：通用性比较好<br/>&nbsp;&nbsp;&nbsp;&nbsp; 缺点：safe seh的限制、在搜索期间发生其它的异常就无法处理了。<br/>2、IsBadReadPtr<br/>&nbsp;&nbsp;&nbsp;&nbsp; IsBadReadPtr自己会安装异常处理结构体，同时判断指向的字节是否可以被读取，如果指向的内存不能被读取，就会返回成功，否则返回失败，并且指针被假设是合法的，指向的地址可以执行。<br/>&nbsp;&nbsp;&nbsp;&nbsp; 优点：它的使用一个简单的API函数来判断地址是否可以访问，<br/>&nbsp;&nbsp;&nbsp;&nbsp; 缺点：需要IsBadReadPtr函数的确切地址，即通用性不是很好。<br/>3、NtDisplayString<br/>&nbsp;&nbsp;&nbsp;&nbsp;我们之所以能使用该函数用于执行安全内存空间搜索的主要原因是：该函数从唯一的一个参数中读取数据并且没有写操作。如果函数参数指向的地址不可读，那么函数将返回内存访问异常（0xc000000005）的错误代码。<br/>&nbsp;&nbsp;&nbsp;&nbsp; 优点：速度最快，占用字节数最少，鲁棒性最好的方法<br/>&nbsp;&nbsp;&nbsp;&nbsp; 缺点：0x43一直没有改变，支持所有系统除了window9x。<br/>4、NtAddAtom<br/>&nbsp;&nbsp;&nbsp;&nbsp; Dave/Alex在邮件列表和Twitter上分别谈到了用NtAddAtom来实现搜索shellcode的方法，而且该系统调用在NT以上的系统的调用号都是一致的(0x08)。<br/>&nbsp;&nbsp;&nbsp;&nbsp; 对这个返回地址的0xc0000033还真不能确定。<br/>总结：相对而言，最后一种方法是最好的~<br/>ps:编程能力很挫，有些东西搞不定<br/>参考文献：<br/><a href="http://hi.baidu.com/int3/blog/item/32fe34af160c60f0faed506f.html" target="_blank" rel="external">http://hi.baidu.com/int3/blog/item/32fe34af160c60f0faed506f.html</a><br/><a href="http://hi.baidu.com/lisl03/blog/item/860b1782900f7db96d811957.html" target="_blank" rel="external">http://hi.baidu.com/lisl03/blog/item/860b1782900f7db96d811957.html</a><br/><a href="http://www.nologin.org/" target="_blank" rel="external">http://www.nologin.org/</a><br/><br/>]]></description>
		</item>
		
			<item>
			<link>http://www.youstar.org.ru/article.asp?id=422</link>
			<title><![CDATA[一些涉世忠告]]></title>
			<author>1050709009@qq.com(admin)</author>
			<category><![CDATA[心情记录]]></category>
			<pubDate>Sun,18 Jul 2010 17:54:25 +0800</pubDate>
			<guid>http://www.youstar.org.ru/default.asp?id=422</guid>
		<description><![CDATA[From:<a target="_blank" href="http://hi.baidu.com/patrickpad/blog/item/0eee8052c2e36814347abe64.html" rel="external">Patrick&#39;s Blog</a><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;感觉这个比较有用，自己很缺乏这方面的能力，以后要多学习。<br/>原文：<br/>如何在涉世之初少走弯路，有一个好的开端，开始一番成功的事业？以下是一些先行者积累的10条有益的涉世忠告。好好地遵循、把握这些忠告和建议吧，比起所学的课堂课程来，它毫不逊色！<br/>　　<br/>　　1.买个闹钟，以便按时叫醒你。<br/>　　<br/>　　自贪睡和不守时，都将成为你工作和事业上的绊脚石，任何时候都一样。不仅要学会准时，更要学会提前。就如你坐车去某地，沿途的风景很美，你忍不住下车看一看，后来虽然你还是赶到了某地，却不是准时到达。“闹钟”只是一种简单的标志和提示，真正灵活、实用的时间，掌握在每个人的心中。<br/>　　<br/>　　2.如果你不喜欢现在的工作，要么辞职不干，要么就闭嘴不言。<br/>　　<br/>　　初出茅庐，往往眼高手低，心高气傲，大事做不了，小事不愿做。不要养成挑三拣四的习惯。不要雨天烦打伞，不带伞又怕淋雨，处处表现出不满的情绪。记住，不做则已，要做就要做好。<br/>　　<br/>　　3.每个人都有孤独的时候。<br/>　　<br/>　　要学会忍受孤独，这样才会成熟起来。年轻人嘻嘻哈哈、打打闹闹惯了，到了一个陌生的环境，面对形形色色的人和事，一下子不知所措起来，有时连一个可以倾心说话的地方也没有。这时，千万别浮躁，学会静心，学会忍受孤独。在孤独中思考，在思考中成熟，在成熟中升华。不要因为寂寞而乱了方寸，而去做无聊无益的事情，白白浪费了宝贵的时间。<br/>　　<br/>　　4.走运时要做好倒霉的准备。<br/>　　<br/>　　有一天，一只狐狸走到一个葡萄园外，看见里面水灵灵的葡萄垂涎欲滴。可是外面有栅栏挡着，无法进去。于是它一狠心绝食三日，减肥之后，终于钻进葡萄园内饱餐一顿。当它心满意足地想离开葡萄园时，发觉自己吃得太饱，怎么也钻不出栅栏了。相信任何人都不愿做这样的狐狸。退路同样重要。饱带干粮，晴带雨伞，点滴积累，水到渠成。有的东西今天似乎一文不值，但有朝一日也许就会身价百倍。<br/>　　<br/>　　5.不要像玻璃那样脆弱。<br/>　　<br/>　　有的人眼睛总盯着自己，所以长不高看不远；总是喜欢怨天尤人，也使别人无比厌烦。没有苦中苦，哪来甜中甜？不要像玻璃那样脆弱，而应像水晶一样透明，太阳一样辉煌，腊梅一样坚强。既然睁开眼睛享受风的清凉，就不要埋怨风中细小的沙粒。<br/>　　<br/>　　6.管住自己的嘴巴。<br/>　　<br/>　　不要谈论自己，更不要议论别人。谈论自己往往会自大虚伪，在名不副实中失去自己。议论别人往往陷入鸡毛蒜皮的是非口舌中纠缠不清。每天下班后和你的那些同事朋友喝酒聊天可不是件好事，因为，这中间往往会把议论同事、朋友当做话题。背后议论人总是不好的，尤其是议论别人的短处，这些会降低你的人格。<br/>　　<br/>　　7.机会从不会“失掉”，你失掉了，自有别人会得到。<br/>　　<br/>　　不要凡事在天，守株待兔，更不要寄希望于“机会”。机会只不过是相对于充分准备而又善于创造机会的人而言的。也许，你正为失去一个机会而懊悔、埋怨的时候，机会正被你对面那个同样的“倒霉鬼”给抓住了。没有机会，就要创造机会，有了机会，就要巧妙地抓住。<br/>　　<br/>　　8.若电话老是不响，你该打出去。<br/>　　<br/>　　很多时候，电话会给你带来意想不到的收获，它不是花瓶，仅仅成为一种摆设。交了新朋友，别忘了老朋友，朋友多了路好走。交际的一大诀窍就是主动。好的人缘好的口碑，往往助你的事业更上一个台阶。<br/>　　<br/>　　9.千万不要因为自己已经到了结婚年龄而草率结婚。<br/>　　<br/>　　想结婚，就要找一个能和你心心相印、相辅相携的伴侣。不要因为放纵和游戏而恋爱，不要因为恋爱而影响工作和事业，更不要因一桩草率而失败的婚姻而使人生受阻。感情用事往往会因小失大。<br/>　　<br/>　　10.写出你一生要做的事情，把单子放在皮夹里，经常拿出来看。<br/>　　<br/>　　人生要有目标，要有计划，要有提醒，要有紧迫感。一个又一个小目标串起来，就成了你一生的大目标。生活富足了，环境改善了，不要忘了皮夹里那张看似薄薄的单子。]]></description>
		</item>
		
			<item>
			<link>http://www.youstar.org.ru/article.asp?id=421</link>
			<title><![CDATA[Python tools for penetration testers]]></title>
			<author>1050709009@qq.com(admin)</author>
			<category><![CDATA[软件推荐]]></category>
			<pubDate>Sat,17 Jul 2010 16:04:00 +0800</pubDate>
			<guid>http://www.youstar.org.ru/default.asp?id=421</guid>
		<description><![CDATA[From:<a href="http://dirk-loss.de/python-tools.htm" target="_blank" rel="external">http://dirk-loss.de/python-tools.htm</a><br/>If you are involved in vulnerability research, reverse engineering o&#114; penetration testing, I suggest to try out the Python programming language. It has a rich set of useful libraries and programs. This page lists some of them.<br/><br/>Most of the listed tools are written in Python, others are just Python bindings for existing C libraries, i.e. they make those libraries easily usable from Python programs.<br/><br/>Some of the more aggressive tools (pentest frameworks, bluetooth smashers, web application vulnerability scanners, war-dialers, etc.) are left out, because the legal situation of these tools is still a bit unclear in Germany -- even after the decision of the highest court. This list is clearly meant to help whitehats, and for now I prefer to err on the safe side.<br/>Network<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* Scapy: send, sniff and dissect and forge network packets. Usable interactively o&#114; as a library<br/>&nbsp;&nbsp;&nbsp;&nbsp;* pypcap, Pcapy and pylibpcap: several different Python bindings for libpcap<br/>&nbsp;&nbsp;&nbsp;&nbsp;* libdnet: low-level networking routines, including interface lookup and Ethernet frame transmission<br/>&nbsp;&nbsp;&nbsp;&nbsp;* dpkt: fast, simple packet creation/parsing, with definitions for the basic TCP/IP protocols<br/>&nbsp;&nbsp;&nbsp;&nbsp;* Impacket: craft and decode network packets. Includes support for higher-level protocols such as NMB and SMB<br/>&nbsp;&nbsp;&nbsp;&nbsp;* pynids: libnids wrapper offering sniffing, IP defragmentation, TCP stream reassembly and port scan detection<br/>&nbsp;&nbsp;&nbsp;&nbsp;* Dirtbags py-pcap: read pcap files without libpcap<br/>&nbsp;&nbsp;&nbsp;&nbsp;* flowgrep: grep through packet payloads using regular e&#173;xpressions<br/>&nbsp;&nbsp;&nbsp;&nbsp;* httplib2: comprehensive HTTP client library that supports many features left out of other HTTP libraries<br/><br/>Debugging and reverse engineering<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* Paimei: reverse engineering framework, includes PyDBG, PIDA, pGRAPH<br/>&nbsp;&nbsp;&nbsp;&nbsp;* Immunity Debugger: scriptable GUI and command line debugger<br/>&nbsp;&nbsp;&nbsp;&nbsp;* IDAPython: IDA Pro plugin that integrates the Python programming language, allowing scripts to run in IDA Pro<br/>&nbsp;&nbsp;&nbsp;&nbsp;* PyEMU: fully scriptable IA-32 emulator, useful for malware analysis<br/>&nbsp;&nbsp;&nbsp;&nbsp;* pefile: read and work with Portable Executable (aka PE) files<br/>&nbsp;&nbsp;&nbsp;&nbsp;* pydasm: Python interface to the libdasm x86 disassembling library<br/>&nbsp;&nbsp;&nbsp;&nbsp;* PyDbgEng: Python wrapper for the Microsoft Windows Debugging Engine<br/>&nbsp;&nbsp;&nbsp;&nbsp;* uhooker: intercept calls to API calls inside DLLs, and also arbitrary addresses within the executable file in memory<br/>&nbsp;&nbsp;&nbsp;&nbsp;* diStorm64: disassembler library for AMD64, licensed under the BSD license<br/>&nbsp;&nbsp;&nbsp;&nbsp;* python-ptrace: debugger using ptrace (Linux, BSD and Darwin system call to trace processes) written in Python<br/><br/>Fuzzing<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* Sulley: fuzzer development and fuzz testing framework consisting of multiple extensible components<br/>&nbsp;&nbsp;&nbsp;&nbsp;* Peach Fuzzing Platform: extensible fuzzing framework for generation and mutation based fuzzing<br/>&nbsp;&nbsp;&nbsp;&nbsp;* antiparser: fuzz testing and fault injection API<br/>&nbsp;&nbsp;&nbsp;&nbsp;* TAOF, including ProxyFuzz, a man-in-the-middle non-deterministic network fuzzer<br/>&nbsp;&nbsp;&nbsp;&nbsp;* untidy: general purpose XML fuzzer<br/>&nbsp;&nbsp;&nbsp;&nbsp;* Powerfuzzer: highly automated and fully customizable web fuzzer (HTTP protocol based application fuzzer)<br/>&nbsp;&nbsp;&nbsp;&nbsp;* FileP: file fuzzer. Generates mutated files from a list of source files and feeds them to an external program in batches<br/>&nbsp;&nbsp;&nbsp;&nbsp;* SMUDGE<br/>&nbsp;&nbsp;&nbsp;&nbsp;* Mistress: probe file formats on the fly and protocols with malformed data, based on pre-defined patterns<br/>&nbsp;&nbsp;&nbsp;&nbsp;* Fuzzbox: multi-codec media fuzzer<br/>&nbsp;&nbsp;&nbsp;&nbsp;* Forensic Fuzzing Tools: generate fuzzed files, fuzzed file systems, and file systems containing fuzzed files in o&#114;der to test the robustness of forensics tools and examination systems<br/>&nbsp;&nbsp;&nbsp;&nbsp;* Windows IPC Fuzzing Tools: tools used to fuzz applications that use Windows Interprocess Communication mechanisms<br/>&nbsp;&nbsp;&nbsp;&nbsp;* WSBang: perform automated security testing of SOAP based web services<br/>&nbsp;&nbsp;&nbsp;&nbsp;* Construct: library for parsing and building of data structures (binary o&#114; textual). Define your data structures in a declarative manner<br/>&nbsp;&nbsp;&nbsp;&nbsp;* fuzzer.py (feliam): simple fuzzer by Felipe Andres anzano<br/><br/>Web<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* ProxMon: processes proxy logs and reports discovered issues<br/>&nbsp;&nbsp;&nbsp;&nbsp;* WSMap: find web service endpoints and discovery files<br/>&nbsp;&nbsp;&nbsp;&nbsp;* Twill: browse the Web from a command-line interface. Supports automated Web testing<br/>&nbsp;&nbsp;&nbsp;&nbsp;* Windmill: web testing tool designed to let you painlessly automate and debug your web application<br/>&nbsp;&nbsp;&nbsp;&nbsp;* FunkLoad: functional and load web tester<br/><br/>Forensics<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* Volatility: extract digital artifacts from volatile memory (RAM) samples<br/>&nbsp;&nbsp;&nbsp;&nbsp;* SandMan: read the hibernation file, regardless of Windows version<br/>&nbsp;&nbsp;&nbsp;&nbsp;* LibForensics: library for developing digital forensics applications<br/>&nbsp;&nbsp;&nbsp;&nbsp;* TrIDLib, identify file types from their binary signatures. Now includes Python binding<br/><br/>Malware analysis<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* pyew: command line hexadecimal editor and disassembler, mainly to analyze malware<br/>&nbsp;&nbsp;&nbsp;&nbsp;* Didier Stevens&#39; PDF tools: analyse, identify and cr&#101;ate PDF files (includes PDFiD, pdf-parser and make-pdf and mPDF)<br/>&nbsp;&nbsp;&nbsp;&nbsp;* o&#114;igapy: Python wrapper for the o&#114;igami Ruby module which sanitizes PDF files<br/>&nbsp;&nbsp;&nbsp;&nbsp;* Exefilter: filter file formats in e-mails, web pages o&#114; files. Detects many common file formats and can remove active content<br/>&nbsp;&nbsp;&nbsp;&nbsp;* pyClamAV: add virus detection capabilities to your Python software<br/><br/>Misc<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* InlineEgg: toolbox of classes for writing small assembly programs in Python<br/>&nbsp;&nbsp;&nbsp;&nbsp;* Exomind: framework for building decorated graphs and developing open-source intelligence modules and ideas, centered on social network services, search engines and instant messaging<br/>&nbsp;&nbsp;&nbsp;&nbsp;* RevHosts: enumerate virtual hosts for a given IP address<br/>&nbsp;&nbsp;&nbsp;&nbsp;* simplejson: JSON encoder/decoder, e.g. to use Google&#39;s AJAX API<br/><br/>Other useful libraries and tools<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;* IPython: enhanced interactive Python shell with many features for object introspection, system shell access, and its own special command system<br/>&nbsp;&nbsp;&nbsp;&nbsp;* Beautiful Soup: HTML parser optimized for screen-scraping<br/>&nbsp;&nbsp;&nbsp;&nbsp;* matplotlib: make 2D plots of arrays<br/>&nbsp;&nbsp;&nbsp;&nbsp;* Mayavi: 3D scientific data visualization and plotting<br/>&nbsp;&nbsp;&nbsp;&nbsp;* RTGraph3D: cr&#101;ate dynamic graphs in 3D<br/>&nbsp;&nbsp;&nbsp;&nbsp;* Twisted: event-driven networking engine<br/>&nbsp;&nbsp;&nbsp;&nbsp;* Suds: lightweight SOAP client for consuming Web Services<br/>&nbsp;&nbsp;&nbsp;&nbsp;* M2Crypto: most complete OpenSSL wrapper<br/>&nbsp;&nbsp;&nbsp;&nbsp;* NetworkX: graph library (edges, nodes)<br/>&nbsp;&nbsp;&nbsp;&nbsp;* pyparsing: general parsing module<br/>&nbsp;&nbsp;&nbsp;&nbsp;* lxml: most feature-rich and easy-to-use library for working with XML and HTML in the Python language<br/>&nbsp;&nbsp;&nbsp;&nbsp;* Pexpect: control and automate other programs, similar to Don Libes `Expect` system<br/>&nbsp;&nbsp;&nbsp;&nbsp;* Sikuli, visual technology to search and automate GUIs using screenshots. Scriptable in Jython<br/>]]></description>
		</item>
		
			<item>
			<link>http://www.youstar.org.ru/article.asp?id=420</link>
			<title><![CDATA[security cookie在栈保护上的研究]]></title>
			<author>1050709009@qq.com(admin)</author>
			<category><![CDATA[漏洞专题]]></category>
			<pubDate>Sat,10 Jul 2010 10:57:03 +0800</pubDate>
			<guid>http://www.youstar.org.ru/default.asp?id=420</guid>
		<description><![CDATA[by flyingkisser<br/>这里主要讨论栈，不是堆。<br/>首先，security cookie并不是windows系统自带的保护机制，并不是说一个确实存在溢出漏洞的<br/>程序，放到带security cookie保护的环境中，就不能正常溢出了。<br/>那么，到底是什么是security cookie呢？<br/>我觉得从广义上讲，它应该是一种保护栈的机制，提供这种保护的，是程序本身，编译进程序本身的<br/>代码提供的，而不是系统中某个运行在黑暗角落中的线程。<br/>所以，既然是程序自身就带上的，为了不给程序员带来额外的负担，这份工作就交给编译器来完成了。<br/>vc6.0的cl.exe是不带这个功能的，只有vc.net以后面版本的cl.exe才带这个功能，就所谓的/GS选项。<br/>即用vc.net的cl编译器时，/GS选项默认就打开了。<br/>现在，我们知道了这个机制的提供方，那么，这个机制到底是怎么一回事呢？<br/>熟悉函数调用及返回前后的汇编指令的人肯定很清楚，在win32平台，对于stdcall类型的函数调用，<br/>当call指令运行完毕，当前的堆栈结构基本上是这样的：<br/><br/>局变2&nbsp;&nbsp;ebp-8&nbsp;&nbsp; 低地址<br/>局变1&nbsp;&nbsp;ebp- 4<br/>ebp&nbsp;&nbsp;ebp<br/>返回地址 ebp+4<br/>参数1&nbsp;&nbsp;ebp+8<br/>参数2&nbsp;&nbsp;ebp+c<br/>参数3&nbsp;&nbsp;ebp+10<br/>参数4&nbsp;&nbsp;ebp+14&nbsp;&nbsp; 高地址<br/><br/>第一列是堆栈中存放的dword的内容，第二列是用ebp作为栈地址的索引时，它对应的应该用ebp表示的值，<br/>说得形象一点，ebp中存放着栈的一个地址(栈其实也是一片内存，ebp只是指向其中一个对当前函数内部比较<br/>重要的地址，其实是相当重要)，栈的其它位置都是通过这个ebp来寻址的，即我们给函数的第一个形参的<br/>地址，就是ebp+8,第二个就是ebp+c,我们定义的局部变量的地址，第一个局部变量是ebp-4,第二局部变量的<br/>地址就是ebp-8，依此类推。但这也不是一定的，上面说的是理想情况，如果我们在函数里定了一个数组，<br/>如 char buf[8];并且是定义的第一个局部变量，那么它的地址肯定就不是ebp-4,还是ebp-8。所以，数组<br/>比较特殊，结构体也比较特殊，其根本原因是栈是从高地址向低地址生长的，而我们的数组，结构体，<br/>却是从低向高地址生长的，两者矛盾的结果就是寻址上的微妙变化。<br/>当然，这里为了方便说明问题，都默认定义的变量，传入的参数，都是四字节对齐的，并且一个变量一个<br/>双字。你可以把数组理解一个4字节的char,也就是一个双字了。<br/>话说回来，当call运行完毕，当前的堆栈结构已经给出，如果在函数里调用strcpy()往局部变量1 里考入<br/>东西，对长度没有进行检测，那么ebp-4,ebp,ebp+4,还有后面的地址，其所在的内容都会被覆盖掉。这里<br/>溢出就发生了，我们控制住了ret的返回地址，然后...<br/>嗯，为了防止这一切，新的cl编译器的/GS选项加上入所谓的&#34;security cookie&#34;，如何加入的？在哪加入的<br/>呢？<br/>先看看加入&#34;security cookie&#34;后的call指令运行完以后，堆栈的变化。<br/><br/>局变2&nbsp;&nbsp;ebp-c&nbsp;&nbsp; 低地址<br/>局变1&nbsp;&nbsp;ebp-8<br/>XXXXX&nbsp;&nbsp;ebp-4<br/>ebp&nbsp;&nbsp;ebp<br/>返回地址 ebp+4<br/>参数1&nbsp;&nbsp;ebp+8<br/>参数2&nbsp;&nbsp;ebp+c<br/>参数3&nbsp;&nbsp;ebp+10<br/>参数4&nbsp;&nbsp;ebp+14&nbsp;&nbsp; 高地址<br/><br/>变化很明显，在ebp上面，第一个局部变量的下面，填入的一个新的值，这个值就是所谓的&#34;security cookie&#34;<br/>.按照前面说的溢出过程，ebp- 4的内容被覆盖掉，即security cookie的值被修改，在函数返回，即执行ret<br/>指令前，会call另一个函数，这个函数就是用来对比 ebp-4的值和当时push到栈中的值是不是一样，不一样的<br/>话，就说明溢出了，然后进程被终止。<br/>那么，你大概会产生以下几个问题：<br/>1. 这个security cookie是如何计算出来的？<br/>security cookie是一个双字，也可以说是一个int,其本身是保存在全局变量里的，其创建是编译器在编译<br/>阶段就创建的，然后写入到.data段里，即在PE里就保存了这个值。<br/>但这个值又是变化的，windows装载器完成必要的前期准备工作后(如创建进程，为栈分配内存，等待)<br/>把 EIP设置为PE里的代码入口处，第一个执行的指令就是一个call调用，这个call调用就是用来初始化这个<br/>cookie值的，当然，这段代码也是公开的，但没有关系，这个算法保证这个cookie值是随机的，hacker也<br/>是不能在一个shellcode中可以猜出来的。<br/>具体算法我不打算在此说明，感兴趣的读者可以自己编译一下再反汇编一下看看。<br/><br/>2.是什么时候填入到栈里面的？<br/>我们知道了这个 security cookie的计算和初始化过程，那么，它必须在函数调用时写入到ebp-4里面才有用。<br/>所以，过去的不带这种保护的代码，在函数入口处一般是这样的：<br/>push ebp<br/>mov ebp,esp<br/>sub ebp,n&nbsp;&nbsp; ;这条指令可能不同，不过多数情况下都是这样来为局部变量分配空间的<br/>然后，后面就开始执行我们的代码了，<br/>加入这种保护后，会在sub ebp,n后面，加入一条像这样的指令：<br/>mov&nbsp;&nbsp;&nbsp;&nbsp; dword ptr [ebp-4],XXX<br/>XXX就是security cookie的值，这个值保存在全局变量里，通过RVA＋PE头地址，实际上也可以说成是<br/>绝对地址来引用了。<br/>到这里security cookie的值就写入栈了，然后在函数返回前检测一下就行了。<br/><br/>到了这里，你大概又会产生一个新的问题，<br/>必须为每一个函数调用都写入security cookie进行保护吗？<br/>答案是否定的，要不然我们的程序的执行效率会受到一定的影响，并且可能还不小。<br/>那么，就应该存在一定的规则，什么时候进行这种保护，什么时候不需要。<br/>其依据当然也很简单，有溢出可能的，就加入这种保护，没有溢出可能的，就不加。<br/>那怎么样才算是有溢出可能呢？<br/>这个是编译器进行判断的，像函数里定义了char数组，后面又用字符串操作函数进行了一定的操作，就说明<br/>可能存在溢出。编译器在编译这个函数里的时候就加上security cookie的保护。<br/>当然，这里还有一些其它的很具体的规则，在msdn里有更详细的描述。<br/><br/>还有其它一些问题没有在这里说明，可以把这些问题留给大家<br/>1.有对付security cookie的检测的方法吗？(答案是有的，但好像都不是很优美)<br/>2.有关security异常的异常处理函数<br/>3./safeSEH对 SEH处理的变化]]></description>
		</item>
		
			<item>
			<link>http://www.youstar.org.ru/article.asp?id=419</link>
			<title><![CDATA[检测本机是否登录了指定QQ账号]]></title>
			<author>1050709009@qq.com(admin)</author>
			<category><![CDATA[安全技术]]></category>
			<pubDate>Fri,02 Jul 2010 12:03:39 +0800</pubDate>
			<guid>http://www.youstar.org.ru/default.asp?id=419</guid>
		<description><![CDATA[From:<a target="_blank" href="http://www.cnblogs.com/cxwx/archive/2010/07/01/1768957.html" rel="external">原文地址</a><br/>有时候做程序，喜欢把程序的注册与用户QQ号码绑定，程序仅允许登录成功了指定QQ账号时才可使用，<br/>为了实现这个目的，有人用API 取QQ窗口、QQ托盘图标上的QQ账号，<br/>但是这个方法写起来比较麻烦，如果用户有意玩玩的话，也可以自己在你软件获取之前先用API修改你要获取的目标信息！<br/>还有一种方法就是内存读取，当然要找到一个QQ登录成功后存放QQ号码的地址，基址肯定是不存在的，再加之QQ更新频繁，所以内存读取的办法也不太好，<br/>为了实现这个目的，还有一种办法那就是利用QQ网页自身的功能，这种方法既方便又准确，下面就来说下原理：<br/>打开： <a href="http://xui.ptlogin2.qq.com/cgi-bin" target="_blank" rel="external">http://xui.ptlogin2.qq.com/cgi-bin</a> /qlogin<br/>我们会发现这也页面会自动获取我们的已登录的QQ信息，并可以实现快速登录，分析之：<br/>关键的东西：<br/>&lt;script src=&#34;<a href="http://imgcache.qq.com/ptlogin/ac/v5/js/xui.js?v=1.2" target="_blank" rel="external">http://imgcache.qq.com/ptlogin/ac/v5/js/xui.js?v=1.2</a>&#34;&gt;&lt;/script&gt;<br/>通过分析这个js，我们找到如下2个重要的函数：<br/>function ptui_qInit()&nbsp;&nbsp;这个函数的作用是初始化SSOAxCtrlForPTLogin.SSOForPTLogin2对象，创建一个ActiveXObject对象<br/>hummer_loaduin()&nbsp;&nbsp;&nbsp;&nbsp; 这个函数就是真正的通过 SSOAxCtrlForPTLogin这个COM来获取已登录QQ信息的，<br/>到此，我们试着自己用程序来调用 SSOAxCtrlForPTLogin的com对象，但是发现失败，原因下面说，<br/>既然不能自己调用 SSOAxCtrlForPTLogin对象，那先试试将页面保存为本地在打开看看什么情况，结果如下：<br/>“快速登录失败，请您返回重试或切换到普通登录模式。”<br/>很明显， SSOAxCtrlForPTLogin对象是要判断当前url的，如果url不是来自以下域名的都不能初始化成功：<br/>var site=[&#34;qq.com&#34;,&#34;paipai.com&#34;,&#34;tencent.com&#34;,&#34;soso.com&#34;,&#34;taotao.com&#34;,&#34;tenpay.com&#34;,&#34;foxmail.com&#34;,&#34;wenwen.com&#34;,&#34;3366.com&#34;,&#34;imqq.com&#34;];<br/>好了，既然不能自己用本地页面，也不能自己写程序调用它的COM，那我们就直接来访问它获取它页面上已经获取好的信息吧：<br/>同时附上已经格式好了的&nbsp;&nbsp;xui.js代码，有兴趣的可以看看<br/>xui.js：下载<a target="_blank" href="http://down.qiannao.com/space/file/youstar/share/2010/7/2/xui.zip/.page" rel="external">下载</a><br/>接着我们来直接实现程序吧，代码如下：<br/><div class="UBBPanel codePanel"><div class="UBBTitle"><a onClick="copycode(code66937);" style="float:right;cursor: pointer;font-weight: normal; font-style: normal">复制内容到剪贴板</a><img src="http://www.youstar.org.ru/images/code.gif" style="margin:0px 2px -3px 0px;" alt="程序代码"/> 程序代码</div><div class="UBBContent" id=code66937><br/>using System;<br/>using System.Windows.Forms;<br/>namespace CheckLoginedQQ<br/>{<br/>&nbsp;&nbsp;&nbsp;&nbsp;public class Checker<br/>&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public Checker()<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private HtmlDocument Document;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/// &lt;summary&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/// 初始化<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/// &lt;/summary&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/// &lt;returns&gt;&lt;/returns&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public bool Initialize()<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WebBrowser browser = new WebBrowser();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;browser.Url = new Uri(&#34;<a href="http://xui.ptlogin2.qq.com/cgi-bin/qlogin" target="_blank" rel="external">http://xui.ptlogin2.qq.com/cgi-bin/qlogin</a>&#34;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while (browser.ReadyState!=WebBrowserReadyState.Complete)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Application.DoEvents();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (browser.Document.Url.AbsoluteUri == &#34;<a href="http://xui.ptlogin2.qq.com/cgi-bin/qlogin" target="_blank" rel="external">http://xui.ptlogin2.qq.com/cgi-bin/qlogin</a>&#34;)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Document = browser.Document;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return true;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return false;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;summary&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// 检测登陆账号<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;/summary&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;param name=&#34;uin&#34;&gt;&lt;/param&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;returns&gt;&lt;/returns&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public bool QQisLogined(string uin)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HtmlElementCollection elements=Document.GetElementsByTagName(&#34;input&#34;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; foreach(HtmlElement element in elements)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string type = element.GetAttribute(&#34;type&#34;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (type != &#34;radio&#34;)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; continue;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string name = element.GetAttribute(&#34;name&#34;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (name != &#34;q_uin&#34;)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; continue;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string id = element.GetAttribute(&#34;id&#34;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (id == &#34;uin_&#34; + uin)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return true;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return false;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/>}</div></div><br/>首先用Webbrowser控件访问，<a href="http://xui.ptlogin2.qq.com/cgi-bin/qlogin" target="_blank" rel="external">http://xui.ptlogin2.qq.com/cgi-bin/qlogin</a><br/>通过 ReadState属性判断页面是否加载完成<br/>通过Document.url判断加载时候为 <a href="http://xui.ptlogin2.qq.com/cgi-bin/qlogin" target="_blank" rel="external">http://xui.ptlogin2.qq.com/cgi-bin/qlogin</a>页面<br/>然后返回真或假<br/>Initialize() == true 之后通过Webbrowser.Document来获取页面上的QQ信息，具体实现看代码！<br/>好了，基本就是这样了，不过要注意的一点是Webbrowser是不能跨线程实例化的，因为他是一个基于COM的控件，所以必须使用 [STAThread] 管理线程<br/>使用示例如下：<br/>[STAThread]<br/>static void Main(string[] args)<br/>{<br/>&nbsp;&nbsp;&nbsp;&nbsp;CheckLoginedQQ.Checker checker = new CheckLoginedQQ.Checker();<br/>if (checker.Initialize())<br/>&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp; if（checker.QQisLogined(&#34;110001&#34;)）;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Console.Write(&#34;Logined&#34;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;else<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Console.Write(&#34;Not Logined&#34;);<br/>&nbsp;&nbsp;}<br/>else<br/> {<br/>&nbsp;&nbsp;&nbsp;&nbsp;Console.Write(&#34;un Initialize&#34;);<br/> }<br/>}]]></description>
		</item>
		
			<item>
			<link>http://www.youstar.org.ru/article.asp?id=418</link>
			<title><![CDATA[深入理解局部变量在堆栈中的结构]]></title>
			<author>1050709009@qq.com(admin)</author>
			<category><![CDATA[调试技术]]></category>
			<pubDate>Wed,30 Jun 2010 11:13:21 +0800</pubDate>
			<guid>http://www.youstar.org.ru/default.asp?id=418</guid>
		<description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;一直对一些东西都是模模糊糊的，有时候自我感觉已经很清楚了，但是过一段时间要用到这些知识的时候又感觉比较混乱，于是最好的办法就是通过实践来解决这些问题，这样比较直观。<br/>&nbsp;&nbsp;&nbsp;&nbsp;通过一下的分析可以对数组在内存的分布、堆栈内的顺序等一些问题得到解答，基本上就两张图，看不懂的话留言交流，个人技术也很菜，如有错误望纠正。<br/>1、摘自谭浩强里面的一段代码，修改了下：<br/><div class="UBBPanel codePanel"><div class="UBBTitle"><a onClick="copycode(code91099);" style="float:right;cursor: pointer;font-weight: normal; font-style: normal">复制内容到剪贴板</a><img src="http://www.youstar.org.ru/images/code.gif" style="margin:0px 2px -3px 0px;" alt="程序代码"/> 程序代码</div><div class="UBBContent" id=code91099>#include &#34;stdafx.h&#34;<br/>#include &#34;stdio.h&#34;<br/>int main(int argc, char* argv[])<br/>{<br/>&#160;&#160;&#160;&#160;int i,a[10];<br/>&#160;&#160;&#160;&#160;for (i=0;i&lt;=9;i++)<br/>&#160;&#160;&#160;&#160;{<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;a[i]=i;<br/>&#160;&#160;&#160;&#160;}<br/>&#160;&#160;&#160;&#160;for (i=9;i&gt;=0;i--)<br/>&#160;&#160;&#160;&#160;{<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;printf(&#34;%d&#34;,a[i]);<br/>&#160;&#160;&#160;&#160;}<br/>&#160;&#160;&#160;&#160;printf(&#34;\n&#34;);<br/>&#160;&#160;&#160;&#160;return 0;<br/>}</div></div><br/> 调试截图：<br/><img src="http://www.youstar.org.ru/download.asp?id=35" border="0" alt=""/><br/>2、修改后的一段代码再次调试：<br/><div class="UBBPanel codePanel"><div class="UBBTitle"><a onClick="copycode(code22884);" style="float:right;cursor: pointer;font-weight: normal; font-style: normal">复制内容到剪贴板</a><img src="http://www.youstar.org.ru/images/code.gif" style="margin:0px 2px -3px 0px;" alt="程序代码"/> 程序代码</div><div class="UBBContent" id=code22884>&#160;&#160;&#160;&#160;int a[10];<br/>&#160;&#160;&#160;&#160;char c;<br/>&#160;&#160;&#160;&#160;int i;<br/>&#160;&#160;&#160;&#160;for (i=0;i&lt;=9;i++)<br/>&#160;&#160;&#160;&#160;{<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;a[i]=i;<br/>&#160;&#160;&#160;&#160;}<br/>&#160;&#160;&#160;&#160;c =&#39;s&#39;;<br/></div></div><br/>就只修改了这部分，然后调试截图<br/><img src="http://www.youstar.org.ru/download.asp?id=36" border="0" alt=""/><br/>3、总结如下<br/>1）、数组的标号保存的是数组的首地址；<br/>2）、int 分配4字节，char 分配1字节；<br/>3）、堆栈从高地址到低地址增长，同时定义两个变量，参数从右向左入栈（stdcall）；]]></description>
		</item>
		
</channel>
</rss>
