﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-逆向分析专栏</title><link>http://www.cppblog.com/xunbu7/</link><description>内心的平静是一种修为，容易激动不是件好事。</description><language>zh-cn</language><lastBuildDate>Tue, 07 Apr 2026 21:51:14 GMT</lastBuildDate><pubDate>Tue, 07 Apr 2026 21:51:14 GMT</pubDate><ttl>60</ttl><item><title>python学习笔记</title><link>http://www.cppblog.com/xunbu7/archive/2013/04/26/199730.html</link><dc:creator>寻步</dc:creator><author>寻步</author><pubDate>Fri, 26 Apr 2013 07:13:00 GMT</pubDate><guid>http://www.cppblog.com/xunbu7/archive/2013/04/26/199730.html</guid><wfw:comment>http://www.cppblog.com/xunbu7/comments/199730.html</wfw:comment><comments>http://www.cppblog.com/xunbu7/archive/2013/04/26/199730.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/xunbu7/comments/commentRss/199730.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/xunbu7/services/trackbacks/199730.html</trackback:ping><description><![CDATA[<strong>列表</strong><br />word['a','b','c','d','e','f','g']<br />b=word[1:3]<br />print(b)<br />这里输出的是b,c。<br /><strong style="color: red">总结：1、3指的是下标为1和3的元素，输出下标为1和下标为3之间的元素（包括&#8220;：&#8221;之前的元素而不包括&#8220;：&#8221;之后的元素）</strong><img src ="http://www.cppblog.com/xunbu7/aggbug/199730.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/xunbu7/" target="_blank">寻步</a> 2013-04-26 15:13 <a href="http://www.cppblog.com/xunbu7/archive/2013/04/26/199730.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>病毒在线分析</title><link>http://www.cppblog.com/xunbu7/archive/2013/03/14/198407.html</link><dc:creator>寻步</dc:creator><author>寻步</author><pubDate>Thu, 14 Mar 2013 04:00:00 GMT</pubDate><guid>http://www.cppblog.com/xunbu7/archive/2013/03/14/198407.html</guid><wfw:comment>http://www.cppblog.com/xunbu7/comments/198407.html</wfw:comment><comments>http://www.cppblog.com/xunbu7/archive/2013/03/14/198407.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/xunbu7/comments/commentRss/198407.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/xunbu7/services/trackbacks/198407.html</trackback:ping><description><![CDATA[[病毒在线扫描]<br />http://www.virustotal.com&nbsp;<br />http://www.filterbit.com&nbsp;<br />http://www.virscan.org&nbsp;<br />http://virusscan.jotti.org&nbsp;<br />http://online.us.drweb.com&nbsp;<br /><br />&nbsp;<br /><br />[沙盘在线分析]<br />http://anubis.iseclab.org&nbsp;<br />http://eureka.cyber-ta.org&nbsp;<br />http://www.threatexpert.com&nbsp;<br />http://camas.comodo.com/cgi-bin/submit&nbsp;<br />http://www.joebox.org/submit.php&nbsp;<br />http://mwanalysis.org/?site=1&amp;page=submit&nbsp;<br />http://www.suspectfile.com/index.php&nbsp;<br />https://analysis.f-secure.com/portal/login.html&nbsp;<br />https://aerie.cs.berkeley.edu/submitsample-d.php&nbsp;<br />http://autovin.pandasecurity.my/?page_id=332&nbsp;<br /><br />&nbsp;<br /><br />[WEB&nbsp;安全工具]<br />http://linkscanner.explabs.com/linkscanner/default.aspx&nbsp;<br />http://vurl.mysteryfcm.co.uk/&nbsp;<br />http://malfease.oarci.net/&nbsp;<br />http://sandsprite.com/shellcode_2_exe.php&nbsp;<br />http://jsunpack.jeek.org/dec/go&nbsp;<br />http://web-sniffer.net&nbsp;<br />http://wepawet.iseclab.org&nbsp;<br />http://www.yougetsignal.com/tools/visual-tracert/&nbsp;<br />http://www.cproxyer.com&nbsp;<br />http://tools88.com/<br />http://www.exploit-db.com/<br />http://www.ip866.com<br />http://www.mxcz.net/tools/<br />http://just-ping.com/<br />http://www.yougetsignal.com/<br /><br />还有&nbsp;扬中河豚素1号。 <img src ="http://www.cppblog.com/xunbu7/aggbug/198407.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/xunbu7/" target="_blank">寻步</a> 2013-03-14 12:00 <a href="http://www.cppblog.com/xunbu7/archive/2013/03/14/198407.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>多种脱壳方法总结</title><link>http://www.cppblog.com/xunbu7/archive/2013/03/13/198385.html</link><dc:creator>寻步</dc:creator><author>寻步</author><pubDate>Wed, 13 Mar 2013 08:05:00 GMT</pubDate><guid>http://www.cppblog.com/xunbu7/archive/2013/03/13/198385.html</guid><wfw:comment>http://www.cppblog.com/xunbu7/comments/198385.html</wfw:comment><comments>http://www.cppblog.com/xunbu7/archive/2013/03/13/198385.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/xunbu7/comments/commentRss/198385.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/xunbu7/services/trackbacks/198385.html</trackback:ping><description><![CDATA[<p style="padding-bottom: 0px; widows: 2; text-transform: none; background-color: rgb(252,248,233); text-indent: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 12px/24px tahoma, helvetica, arial; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">&nbsp;一.脱壳基础知识要点</p>
<p style="padding-bottom: 0px; widows: 2; text-transform: none; background-color: rgb(252,248,233); text-indent: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 12px/24px tahoma, helvetica, arial; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">1.PUSHAD :（压栈） 代表程序的入口点</p>
<p style="padding-bottom: 0px; widows: 2; text-transform: none; background-color: rgb(252,248,233); text-indent: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 12px/24px tahoma, helvetica, arial; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">2.POPAD :（出栈） 代表程序的出口点，与PUSHAD想对应.看到这个,就说明快到OEP了.</p>
<p style="padding-bottom: 0px; widows: 2; text-transform: none; background-color: rgb(252,248,233); text-indent: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 12px/24px tahoma, helvetica, arial; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">3.OEP:程序的入口点,软件加壳就是隐藏OEP.而我们脱壳就是为了找OEP.</p>
<p style="padding-bottom: 0px; widows: 2; text-transform: none; background-color: rgb(252,248,233); text-indent: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 12px/24px tahoma, helvetica, arial; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><br />&nbsp;二.脱壳调试过程中辨认快到OEP的简单方法</p>
<p style="padding-bottom: 0px; widows: 2; text-transform: none; background-color: rgb(252,248,233); text-indent: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 12px/24px tahoma, helvetica, arial; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">下面二个条件是快到OEP的共同现象:</p>
<p style="padding-bottom: 0px; widows: 2; text-transform: none; background-color: rgb(252,248,233); text-indent: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 12px/24px tahoma, helvetica, arial; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">若出现下面情况时,说明OEP就要到了:</p>
<p style="padding-bottom: 0px; widows: 2; text-transform: none; background-color: rgb(252,248,233); text-indent: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 12px/24px tahoma, helvetica, arial; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">1. OD跟踪过程中如果发现:<br />popad<span class="Apple-converted-space">&nbsp;</span><br />popfd<span class="Apple-converted-space">&nbsp;</span><br />或<br />popad</p>
<p style="padding-bottom: 0px; widows: 2; text-transform: none; background-color: rgb(252,248,233); text-indent: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 12px/24px tahoma, helvetica, arial; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">2.同时,紧接着,有retn ,jmp等其它跳转指令,发生跨段跳跃时.<br />说明OEP马上到了.</p>
<p style="padding-bottom: 0px; widows: 2; text-transform: none; background-color: rgb(252,248,233); text-indent: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 12px/24px tahoma, helvetica, arial; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"></p>
<p style="padding-bottom: 0px; widows: 2; text-transform: none; background-color: rgb(252,248,233); text-indent: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 12px/24px tahoma, helvetica, arial; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><br />三.脱壳必需牢记的要领</p>
<p style="padding-bottom: 0px; widows: 2; text-transform: none; background-color: rgb(252,248,233); text-indent: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 12px/24px tahoma, helvetica, arial; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">1.单步往前走,不要让程序向上走,遇到向上跳时,在下一句按F4,运行到所选.</p>
<p style="padding-bottom: 0px; widows: 2; text-transform: none; background-color: rgb(252,248,233); text-indent: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 12px/24px tahoma, helvetica, arial; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">2.刚载入程序,在附近就call时,我们按F7跟进去.</p>
<p style="padding-bottom: 0px; widows: 2; text-transform: none; background-color: rgb(252,248,233); text-indent: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 12px/24px tahoma, helvetica, arial; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">3.若跟踪时,运行某个call程序就运行时,这个call也用F7进入.</p>
<p style="padding-bottom: 0px; widows: 2; text-transform: none; background-color: rgb(252,248,233); text-indent: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 12px/24px tahoma, helvetica, arial; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">4.在跟踪时,出现比如 jmp XXXXXX 或者 JE XXXXXX 或者有RETN同时发生大跨段跳转时,说明很快就到OEP了.<br /><br /><br /></p>
<p style="padding-bottom: 0px; widows: 2; text-transform: none; background-color: rgb(252,248,233); text-indent: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 12px/24px tahoma, helvetica, arial; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"></p>
<p style="padding-bottom: 0px; widows: 2; text-transform: none; background-color: rgb(252,248,233); text-indent: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 12px/24px tahoma, helvetica, arial; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">四.常用脱壳方法总结</p>
<p style="padding-bottom: 0px; widows: 2; text-transform: none; background-color: rgb(252,248,233); text-indent: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 12px/24px tahoma, helvetica, arial; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">------------------<br />方法一:单步跟踪法<br />------------------<br />介绍:这是最通用的方法,对于未知壳,基本都用这种方法,这种方法过程比较麻烦,要一步一步的跟踪分析,要有一定的耐心.</p>
<p style="padding-bottom: 0px; widows: 2; text-transform: none; background-color: rgb(252,248,233); text-indent: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 12px/24px tahoma, helvetica, arial; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">1.用OD载入,选"不分析代码"</p>
<p style="padding-bottom: 0px; widows: 2; text-transform: none; background-color: rgb(252,248,233); text-indent: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 12px/24px tahoma, helvetica, arial; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">2.单步向下跟踪按F8，实现向下的跳.不让程序往回跳.</p>
<p style="padding-bottom: 0px; widows: 2; text-transform: none; background-color: rgb(252,248,233); text-indent: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 12px/24px tahoma, helvetica, arial; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">3.遇到程序往回跳的（包括循环），我们在下一句代码处按F4（或者右健单击代码，选择断点&#8212;&#8212;&gt;运行到所选）</p>
<p style="padding-bottom: 0px; widows: 2; text-transform: none; background-color: rgb(252,248,233); text-indent: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 12px/24px tahoma, helvetica, arial; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">4.如果刚载入程序，在附近就有一个CALL的，我们就F7跟进去，不然程序很容易运行.</p>
<p style="padding-bottom: 0px; widows: 2; text-transform: none; background-color: rgb(252,248,233); text-indent: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 12px/24px tahoma, helvetica, arial; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">5.在跟踪的时候，如果运行到某个CALL程序就运行的，就在这个CALL中F7进入.</p>
<p style="padding-bottom: 0px; widows: 2; text-transform: none; background-color: rgb(252,248,233); text-indent: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 12px/24px tahoma, helvetica, arial; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">6.一般遇到很大的跳转（跨段跳），比如 jmp XXXXXX 或 JE XXXXXX 或有RETN的一般很快就会到程序的OEP。</p>
<p style="padding-bottom: 0px; widows: 2; text-transform: none; background-color: rgb(252,248,233); text-indent: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 12px/24px tahoma, helvetica, arial; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><br />-----------------<br />方法二:ESP定律法<br />-----------------<br />介绍: 这种方法可以脱大部的压缩壳和少数加密壳,操作起来比较简单,脱壳速度也相对比较快.</p>
<p style="padding-bottom: 0px; widows: 2; text-transform: none; background-color: rgb(252,248,233); text-indent: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 12px/24px tahoma, helvetica, arial; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">1.开始就点F8向下走，注意观察OD右上角的寄存器中ESP有没突现（变成红色）</p>
<p style="padding-bottom: 0px; widows: 2; text-transform: none; background-color: rgb(252,248,233); text-indent: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 12px/24px tahoma, helvetica, arial; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">2.在命令行下：dd XXXXXXXX(指在当前代码中的ESP地址，或者hr<br />XXXXXXXX)，按回车！</p>
<p style="padding-bottom: 0px; widows: 2; text-transform: none; background-color: rgb(252,248,233); text-indent: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 12px/24px tahoma, helvetica, arial; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">3.选中下断的地址，断点---&gt;硬件访问---&gt;WORD断点。</p>
<p style="padding-bottom: 0px; widows: 2; text-transform: none; background-color: rgb(252,248,233); text-indent: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 12px/24px tahoma, helvetica, arial; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">4.按一下F9运行程序，直接来到了跳转处，按下F8向下走，就到达程序OEP。</p>
<p style="padding-bottom: 0px; widows: 2; text-transform: none; background-color: rgb(252,248,233); text-indent: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 12px/24px tahoma, helvetica, arial; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">-----------------<br />方法三:内存镜像法<br />-----------------<br />介绍:也是一种比较好用的脱壳方法,大部分的压缩壳和加密壳用内存镜像法能快速脱掉.非常实用.</p>
<p style="padding-bottom: 0px; widows: 2; text-transform: none; background-color: rgb(252,248,233); text-indent: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 12px/24px tahoma, helvetica, arial; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">1.用OD打开,设置选项&#8212;&#8212;调试选项&#8212;&#8212;异常,忽略所有异常(也就是把里面的忽略全部&#8730;上),然后CTRL+F2重载下程序！</p>
<p style="padding-bottom: 0px; widows: 2; text-transform: none; background-color: rgb(252,248,233); text-indent: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 12px/24px tahoma, helvetica, arial; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">2.按ALT+M,打开内存镜象，找到程序的第一个.rsrc.按F2下断点，然后按SHIFT+F9运行到断点.</p>
<p style="padding-bottom: 0px; widows: 2; text-transform: none; background-color: rgb(252,248,233); text-indent: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 12px/24px tahoma, helvetica, arial; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">3.接着再按ALT+M,打开内存镜象，找到程序的第一个.rsrc.上面的.CODE，按F2下断点！然后按SHIFT+F9，直接到达程序OEP！</p>
<p style="padding-bottom: 0px; widows: 2; text-transform: none; background-color: rgb(252,248,233); text-indent: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 12px/24px tahoma, helvetica, arial; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">----------------<br />方法四:一步到OEP<br />----------------<br />介绍:这是一种巧方法,脱壳速度最快,前提是要知道这个壳的特征,利用这种壳的共性快速找到程序的OEP.这种方法只用于少数壳.</p>
<p style="padding-bottom: 0px; widows: 2; text-transform: none; background-color: rgb(252,248,233); text-indent: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 12px/24px tahoma, helvetica, arial; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">1.开始按Ctrl+F,输入：popad,然后按下F2下断，按F9运行到此处.</p>
<p style="padding-bottom: 0px; widows: 2; text-transform: none; background-color: rgb(252,248,233); text-indent: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 12px/24px tahoma, helvetica, arial; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">2.很快来到大跳转,按F8向下走,来到OEP.</p>
<p style="padding-bottom: 0px; widows: 2; text-transform: none; background-color: rgb(252,248,233); text-indent: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 12px/24px tahoma, helvetica, arial; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><br />----------------------<br />方法五:最后一次异常法:<br />----------------------<br />介绍:这种方法一般用于加密壳,这是脱加密壳的一种通用方法.</p>
<p style="padding-bottom: 0px; widows: 2; text-transform: none; background-color: rgb(252,248,233); text-indent: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 12px/24px tahoma, helvetica, arial; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">第一步:用OD打开程序,点击选项&#8212;&#8212;调试选项&#8212;&#8212;异常，把里面的&#8730;全部去掉！CTRL+F2重载下程序.</p>
<p style="padding-bottom: 0px; widows: 2; text-transform: none; background-color: rgb(252,248,233); text-indent: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 12px/24px tahoma, helvetica, arial; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">第二步:接着我们按SHIFT+F9,直到程序运行,记下从开始按SHIFT+F9到程序运行的次数n.</p>
<p style="padding-bottom: 0px; widows: 2; text-transform: none; background-color: rgb(252,248,233); text-indent: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 12px/24px tahoma, helvetica, arial; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">第三步:重载程序,再按SHIFT+F9,这次按的次数为上次让程序运行时的次数的n-1次.</p>
<p style="padding-bottom: 0px; widows: 2; text-transform: none; background-color: rgb(252,248,233); text-indent: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 12px/24px tahoma, helvetica, arial; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">第四步:此时观察OD的右下角有一个"SE 句柄",这时我们按CTRL+G，输入SE 句柄前的地址！来到这个地址.</p>
<p style="padding-bottom: 0px; widows: 2; text-transform: none; background-color: rgb(252,248,233); text-indent: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 12px/24px tahoma, helvetica, arial; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">第五步:在这里,按F2下断点！然后按SHIFT+F9来到断点处！</p>
<p style="padding-bottom: 0px; widows: 2; text-transform: none; background-color: rgb(252,248,233); text-indent: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; font: 12px/24px tahoma, helvetica, arial; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(69,69,69); word-spacing: 0px; padding-top: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">第六步:这时候我们已经跳过了所有异常,然后去掉断点，按F8慢慢向下跟踪很快就到达OEP了.</p><img src ="http://www.cppblog.com/xunbu7/aggbug/198385.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/xunbu7/" target="_blank">寻步</a> 2013-03-13 16:05 <a href="http://www.cppblog.com/xunbu7/archive/2013/03/13/198385.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>OD被Anti的原因分析及应对之道(转载)</title><link>http://www.cppblog.com/xunbu7/archive/2013/01/07/197056.html</link><dc:creator>寻步</dc:creator><author>寻步</author><pubDate>Mon, 07 Jan 2013 02:10:00 GMT</pubDate><guid>http://www.cppblog.com/xunbu7/archive/2013/01/07/197056.html</guid><wfw:comment>http://www.cppblog.com/xunbu7/comments/197056.html</wfw:comment><comments>http://www.cppblog.com/xunbu7/archive/2013/01/07/197056.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/xunbu7/comments/commentRss/197056.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/xunbu7/services/trackbacks/197056.html</trackback:ping><description><![CDATA[<font color="#333333">标 题:</font><font color="#000000"> 【原创】OD被Anti的原因分析及应对之道</font><font color="#666666"><br /><font color="#333333">作 者:</font> <font color="#000000">tangjiutao</font><br /><font color="#333333">时 间:</font> 2009-12-02,22:21:56<br /><font color="#333333">链 接:</font> http://bbs.pediy.com/showthread.php?t=102366<br /></font><br /><!-- google_ad_section_start  -->本文链接：http://bbs.pediy.com/showthread.php?t=102366<br />OD载入程序就自动退出是比较恼人的，还没开始调试呢就退出了，这可让人如何是好。初学破解的人一定会遇到这个问题,怎样解决呢，网上虽然有零星的介绍但都不全面，以下是我总结的一些，希望能对各位初学者有所帮助。<br />（比如Peid、FI查壳查不到，OD一载入就退出，这极有可能是VMProtect的保护（虚拟机保护），用EXEinfo可以查出来一些版本的VMP，如果有这个提示那就更确定无疑了&#8220;A&nbsp;debugger&nbsp;has&nbsp;been&nbsp;found&nbsp;running&nbsp;in&nbsp;your&nbsp;system.Please,&nbsp;unload&nbsp;it&nbsp;from&nbsp;memory&nbsp;and&nbsp;restart&nbsp;your&nbsp;program&#8221;。）<br /><strong>1.更换几个OD试试，OllyICE、Shadow、加强版等</strong><br /><strong>2.用附加的方式加载程序，文件--&gt;附加,能解决很多问题</strong><br /><strong>3.OD目录下，将475K&nbsp;的DbgHelp.dll文件换成近1M大小的DbgHelp.dll文件，475K的有溢出漏洞，这条比较关键</strong><br /><strong>4.使用StrongOD插件，（StrongOD+原版OD试试），这条比较关键</strong><br />5.StrongOD中选择CreateAsRestrict<br />6.尝试命令bp&nbsp;ExitProcess，看能否发现什么线索<br />7.改变ollydbg.ini中的驱动名称，修改版的OD不需要自己改&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />DriverName&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;驱动文件名，设备对象名<br />DriverKey&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;和驱动通信的key<br />HideWindow&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;&nbsp;&nbsp;&nbsp;是否隐藏窗口，1为隐藏，0为不隐藏<br />HideProcess&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;是否隐藏od进程，1为隐藏，0为不隐藏<br />ProtectProcess&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;是否隐藏保护Od进程，1为保护，0为不保护<br />8.改OD窗体类名，用的修改版的话一般都改过了，不需要自己再改<br />方法如下：<br />主窗体类名:<br />引用:<br />VA:004B7218<br />Offset:000B6018<br />各子窗体类名：<br />引用:<br />VA:004B565B&nbsp;~&nbsp;004B568A<br />Offset:000B445B&nbsp;~&nbsp;000B448A<br />改成任意，可以过GetWindow检测<br /><strong>9.手动修改程序&#8220;导出表&#8221;中的&#8220;函数名数目&#8221;值</strong>，上面方法不管用再试试它<br />方法：使用&#8220;LordPE&#8221;打开要编辑的PE程序，然后依次选择[目录]-&gt;[导出表对应的&#8220;..&#8221;按钮]，把&#8220;函数名数目&#8221;的值减1，并点击&#8220;保存&#8221;按钮，就OK了。为了好看些，也可以把&#8220;函数数目&#8221;和&#8220;函数名数目&#8221;的值都同时减1并保存，效果一样。<br />&nbsp;&nbsp;&nbsp;解释：一般情况下EXE不会加&#8220;导出表&#8221;，如果加了，就应该给出所导出的API函数。当我们打开这类PE程序(EXE版)时，会发现它存在&#8220;导出表&#8221;，但&#8220;导出表&#8221;中并没有导出的API函数。同时&#8220;函数数目&#8221;和&#8220;函数名数目&#8221;的值都比原PE程序设置的值大了1(如：EXE版&#8220;导出表&#8221;列表中显示了0个导出的API函数，壳将其&#8220;函数数目&#8221;和&#8220;函数名数目&#8221;的值都设置成了1；DLL版&#8220;导出表&#8221;列表中显示了0xD个导出的API函数，壳将其&#8220;函数数目&#8221;和&#8220;函数名数目&#8221;的值都设置成了0xE。)。所以我们将其减1，就OK了。被修改过的PE程序，可以正常运行，不会有任何影响。<br /><br />&nbsp;这只是我的一点总结，附加方式加载、替换DBGHELP.DLL、使用StrongOD插件和修改导出表函数名数目的方法是可行的，能够解决一些问题。当然这些方法可能并不全面。<br /><br /><strong>ANTI-OD原因解读：</strong><br />&nbsp;概括来说：TLS回调函数在入口点之前执行，并进行了ANTI-OD的操作.<br />&nbsp;具体请看：TLS数据初始化和TLS回调函数都会在入口点之前执行，也就是说TLS是程序最开始运行的地方，因此可以在这里防止ANTI-OD的代码，检测并关闭OD。<br />&nbsp;应对方法：<br />&nbsp;&nbsp;默认情况下OllyDbg载入程序将会暂停在入口点，应该配置一下OllyDbg使其在TLS回调被调用之前中断在实际的loader。<br />&nbsp;&nbsp;通过&#8220;选项-&gt;调试选项-&gt;事件-&gt;第一次中断于-&gt;系统断点&#8221;来设置中断于ntdll.dll内的实际loader代码。这样设置以后，OllyDbg将会中断在位于执行TLS回调的ntdll!LdrpRunInitializeRoutines()之前的ntdll!_LdrpInitializeProcess()，这时就可以在回调例程中下断并跟踪了。例如：在内存映像的.text代码段上设置内存访问断点，就可以断在TLS回调函数里。<br /><br />更多TLS内容请看我的两篇博文：<br />TLS回调函数，Anti-od原理分析：<a href="http://hi.baidu.com/tjt999/blog/item/1e9c4b49496c222808f7eff1.html" target="_blank"><font color="#000000">http://hi.baidu.com/tjt999/blog/item...808f7eff1.html</font></a><br />TLS回调函数，Anti-od实例：&nbsp;<a href="http://hi.baidu.com/tjt999/blog/item/13e7212e55e04c3f359bf7f3.html" target="_blank"><font color="#000000">http://hi.baidu.com/tjt999/blog/item...f359bf7f3.html</font></a><br /><br />更多反调试知识请看《脱壳的艺术》和我的<br />《各种反调试技术原理与实例》：&nbsp;<a href="http://bbs.pediy.com/showthread.php?t=106143" target="_blank"><font color="#000000">http://bbs.pediy.com/showthread.php?t=106143</font></a><br />如需交流请进群：1684360<br /><br />实例代码：程序见附件，用原版OD测试，参考了某位大虾的代码。<br />.386<br />.model&nbsp;&nbsp;&nbsp;flat,stdcall<br />option&nbsp;&nbsp;&nbsp;casemap:none<br />include&nbsp;windows.inc<br />include&nbsp;user32.inc<br />include&nbsp;kernel32.inc<br />includelib&nbsp;user32.lib<br />includelib&nbsp;kernel32.lib<br /><br />.data?<br />dwTLS_Index&nbsp;dd&nbsp;&nbsp;?<br /><br />OPTION&nbsp;&nbsp;&nbsp;&nbsp;DOTNAME<br />;;&nbsp;定义一个TLS节&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />.<span class="highlight"><strong><font color="#ff0000">tls</font></strong></span>&nbsp;&nbsp;SEGMENT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />TLS_Start&nbsp;LABEL&nbsp;&nbsp;DWORD<br />&nbsp;dd&nbsp;&nbsp;&nbsp;&nbsp;0100h&nbsp;&nbsp;&nbsp;&nbsp;dup&nbsp;("slt.")<br />TLS_End&nbsp;&nbsp;&nbsp;LABEL&nbsp;&nbsp;DWORD<br />.<span class="highlight"><strong><font color="#ff0000">tls</font></strong></span>&nbsp;&nbsp;&nbsp;ENDS<br />OPTION&nbsp;&nbsp;&nbsp;&nbsp;NODOTNAME<br /><br />.data<br />TLS_CallBackStart&nbsp;&nbsp;dd&nbsp;&nbsp;TlsCallBack0<br />TLS_CallBackEnd&nbsp;&nbsp;&nbsp;&nbsp;dd&nbsp;&nbsp;0<br />szTitle&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db&nbsp;&nbsp;"Hello&nbsp;TLS",0<br />szInTls&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db&nbsp;&nbsp;"我在TLS里",0<br />szInNormal&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db&nbsp;&nbsp;"我在正常代码内",0<br />szClassName&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db&nbsp;&nbsp;"ollydbg"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;OD&nbsp;类名<br />;这里需要注意的是，必须要将此结构声明为PUBLIC,用于让连接器连接到指定的位置，<br />;其次结构名必须为_<span class="highlight"><strong><font color="#ff0000">tls</font></strong></span>_uesd这是微软的一个规定。编译器引入的位置名称也如此。<br />PUBLIC&nbsp;_<span class="highlight"><strong><font color="#ff0000">tls</font></strong></span>_used<br />_<span class="highlight"><strong><font color="#ff0000">tls</font></strong></span>_used&nbsp;IMAGE_TLS_DIRECTORY&nbsp;&lt;TLS_Start,&nbsp;TLS_End,&nbsp;dwTLS_Index,&nbsp;TLS_CallBackStart,&nbsp;0,&nbsp;?&gt;<br /><br />.code<br />;***************************************************************<br />;;&nbsp;TLS的回调函数<br />TlsCallBack0&nbsp;proc&nbsp;Dllhandle:LPVOID,dwReason:DWORD,lpvReserved:LPVOID&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;eax,dwReason&nbsp;;判断dwReason发生的条件<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cmp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;eax,DLL_PROCESS_ATTACH&nbsp;&nbsp;;&nbsp;在进行加载时被调用<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jnz&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ExitTlsCallBack0<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;invoke&nbsp;&nbsp;FindWindow,addr&nbsp;szClassName,NULL&nbsp;&nbsp;;通过类名进行检测<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.if&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;eax&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;找到<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;invoke&nbsp;&nbsp;&nbsp;&nbsp;SendMessage,eax,WM_CLOSE,NULL,NULL<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.endif<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;invoke&nbsp;&nbsp;MessageBox,NULL,addr&nbsp;szInTls,addr&nbsp;szTitle,MB_OK<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dword&nbsp;ptr[TLS_Start],0&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xor&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;eax,eax<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;inc&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;eax<br />ExitTlsCallBack0:&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ret<br />TlsCallBack0&nbsp;&nbsp;&nbsp;ENDP<br />;****************************************************************<br />Start:<br />&nbsp;&nbsp;&nbsp;&nbsp;invoke&nbsp;&nbsp;&nbsp;MessageBox,NULL,addr&nbsp;szInNormal,addr&nbsp;szTitle,MB_OK<br />&nbsp;&nbsp;&nbsp;&nbsp;invoke&nbsp;&nbsp;&nbsp;ExitProcess,&nbsp;1<br />&nbsp;&nbsp;&nbsp;&nbsp;end&nbsp;&nbsp;Start<br /><br /><br />参考文献：<br />&nbsp;&nbsp;&nbsp;http://www.unpack.cn/viewthread.php?tid=35013&amp;extra=page%3D1<br /><img src ="http://www.cppblog.com/xunbu7/aggbug/197056.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/xunbu7/" target="_blank">寻步</a> 2013-01-07 10:10 <a href="http://www.cppblog.com/xunbu7/archive/2013/01/07/197056.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>反调试技巧总结-原理和实现</title><link>http://www.cppblog.com/xunbu7/archive/2013/01/05/196963.html</link><dc:creator>寻步</dc:creator><author>寻步</author><pubDate>Sat, 05 Jan 2013 02:59:00 GMT</pubDate><guid>http://www.cppblog.com/xunbu7/archive/2013/01/05/196963.html</guid><wfw:comment>http://www.cppblog.com/xunbu7/comments/196963.html</wfw:comment><comments>http://www.cppblog.com/xunbu7/archive/2013/01/05/196963.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/xunbu7/comments/commentRss/196963.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/xunbu7/services/trackbacks/196963.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 摘自：http://www.cnblogs.com/huhu0013/archive/2011/07/05/2098358.html一、 前言&nbsp;&nbsp;&nbsp; 前段学习反调试和vc，写了antidebug-tester，经常会收到message希望交流或索要实现代码，我都没有回复。其实代码已经在编程版提供了1个版本，另其多是vc内嵌asm写的，对cracker而言，只要反下就知...&nbsp;&nbsp;<a href='http://www.cppblog.com/xunbu7/archive/2013/01/05/196963.html'>阅读全文</a><img src ="http://www.cppblog.com/xunbu7/aggbug/196963.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/xunbu7/" target="_blank">寻步</a> 2013-01-05 10:59 <a href="http://www.cppblog.com/xunbu7/archive/2013/01/05/196963.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>2013，年计划</title><link>http://www.cppblog.com/xunbu7/archive/2012/12/29/196800.html</link><dc:creator>寻步</dc:creator><author>寻步</author><pubDate>Sat, 29 Dec 2012 07:07:00 GMT</pubDate><guid>http://www.cppblog.com/xunbu7/archive/2012/12/29/196800.html</guid><wfw:comment>http://www.cppblog.com/xunbu7/comments/196800.html</wfw:comment><comments>http://www.cppblog.com/xunbu7/archive/2012/12/29/196800.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/xunbu7/comments/commentRss/196800.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/xunbu7/services/trackbacks/196800.html</trackback:ping><description><![CDATA[<p>&nbsp;</p>
<ol><li><strong style="color: #008000">Windows核心编程书(思想)</strong></li><li><strong style="color: #008000">C++、汇编(语言)</strong></li><li><strong style="color: #008000">OD、IDA验证思想(工具)</strong></li></ol>
<p><br />&nbsp;</p><img src ="http://www.cppblog.com/xunbu7/aggbug/196800.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/xunbu7/" target="_blank">寻步</a> 2012-12-29 15:07 <a href="http://www.cppblog.com/xunbu7/archive/2012/12/29/196800.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>遍历输入表的简单逆向</title><link>http://www.cppblog.com/xunbu7/archive/2012/12/28/196747.html</link><dc:creator>寻步</dc:creator><author>寻步</author><pubDate>Fri, 28 Dec 2012 09:01:00 GMT</pubDate><guid>http://www.cppblog.com/xunbu7/archive/2012/12/28/196747.html</guid><wfw:comment>http://www.cppblog.com/xunbu7/comments/196747.html</wfw:comment><comments>http://www.cppblog.com/xunbu7/archive/2012/12/28/196747.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/xunbu7/comments/commentRss/196747.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/xunbu7/services/trackbacks/196747.html</trackback:ping><description><![CDATA[<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;main(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;argc,&nbsp;</span><span style="color: #0000ff">char</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;argv[])<br /><img id="Codehighlighter1_33_974_Open_Image" onclick="this.style.display='none'; Codehighlighter1_33_974_Open_Text.style.display='none'; Codehighlighter1_33_974_Closed_Image.style.display='inline'; Codehighlighter1_33_974_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif"><img style="display: none" id="Codehighlighter1_33_974_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_33_974_Closed_Text.style.display='none'; Codehighlighter1_33_974_Open_Image.style.display='inline'; Codehighlighter1_33_974_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif"></span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_33_974_Closed_Text"><img src="http://www.cppblog.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_33_974_Open_Text"><span style="color: #000000">{<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;HMODULE&nbsp;&nbsp;hMod&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;GetModuleHandle(NULL);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;IMAGE_DOS_HEADER</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;pDosHeader&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;(IMAGE_DOS_HEADER</span><span style="color: #000000">*</span><span style="color: #000000">)hMod;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;IMAGE_OPTIONAL_HEADER</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;pOptHeader&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;(IMAGE_OPTIONAL_HEADER</span><span style="color: #000000">*</span><span style="color: #000000">)((BYTE</span><span style="color: #000000">*</span><span style="color: #000000">)hMod</span><span style="color: #000000">+</span><span style="color: #000000">pDosHeader</span><span style="color: #000000">-&gt;</span><span style="color: #000000">e_lfanew</span><span style="color: #000000">+</span><span style="color: #000000">24</span><span style="color: #000000">);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;IMAGE_IMPORT_DESCRIPTOR</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;pImportDesc&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;(IMAGE_IMPORT_DESCRIPTOR</span><span style="color: #000000">*</span><span style="color: #000000">)((BYTE</span><span style="color: #000000">*</span><span style="color: #000000">)hMod</span><span style="color: #000000">+</span><span style="color: #000000">pOptHeader</span><span style="color: #000000">-&gt;</span><span style="color: #000000">DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT].VirtualAddress);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">while</span><span style="color: #000000">&nbsp;(pImportDesc</span><span style="color: #000000">-&gt;</span><span style="color: #000000">FirstThunk)<br /><img id="Codehighlighter1_418_947_Open_Image" onclick="this.style.display='none'; Codehighlighter1_418_947_Open_Text.style.display='none'; Codehighlighter1_418_947_Closed_Image.style.display='inline'; Codehighlighter1_418_947_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_418_947_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_418_947_Closed_Text.style.display='none'; Codehighlighter1_418_947_Open_Image.style.display='inline'; Codehighlighter1_418_947_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_418_947_Closed_Text"><img src="http://www.cppblog.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_418_947_Open_Text"><span style="color: #000000">{<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">char</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;pszDllName&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;(</span><span style="color: #0000ff">char</span><span style="color: #000000">*</span><span style="color: #000000">)((BYTE</span><span style="color: #000000">*</span><span style="color: #000000">)hMod</span><span style="color: #000000">+</span><span style="color: #000000">pImportDesc</span><span style="color: #000000">-&gt;</span><span style="color: #000000">Name);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000">"</span><span style="color: #000000">\nModule&nbsp;Name：%s\n</span><span style="color: #000000">"</span><span style="color: #000000">,pszDllName);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IMAGE_THUNK_DATA</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;pThunk&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;(IMAGE_THUNK_DATA</span><span style="color: #000000">*</span><span style="color: #000000">)((BYTE</span><span style="color: #000000">*</span><span style="color: #000000">)hMod</span><span style="color: #000000">+</span><span style="color: #000000">pImportDesc</span><span style="color: #000000">-&gt;</span><span style="color: #000000">OriginalFirstThunk);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;n&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">while</span><span style="color: #000000">&nbsp;(pThunk</span><span style="color: #000000">-&gt;</span><span style="color: #000000">u1.Function)<br /><img id="Codehighlighter1_667_927_Open_Image" onclick="this.style.display='none'; Codehighlighter1_667_927_Open_Text.style.display='none'; Codehighlighter1_667_927_Closed_Image.style.display='inline'; Codehighlighter1_667_927_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_667_927_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_667_927_Closed_Text.style.display='none'; Codehighlighter1_667_927_Open_Image.style.display='inline'; Codehighlighter1_667_927_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_667_927_Closed_Text"><img src="http://www.cppblog.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_667_927_Open_Text"><span style="color: #000000">{<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">char</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;pszFunName&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;(</span><span style="color: #0000ff">char</span><span style="color: #000000">*</span><span style="color: #000000">)((BYTE</span><span style="color: #000000">*</span><span style="color: #000000">)hMod</span><span style="color: #000000">+</span><span style="color: #000000">(DWORD)pThunk</span><span style="color: #000000">-&gt;</span><span style="color: #000000">u1.AddressOfData</span><span style="color: #000000">+</span><span style="color: #000000">2</span><span style="color: #000000">);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PDWORD&nbsp;lpAddr&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;(DWORD</span><span style="color: #000000">*</span><span style="color: #000000">)((BYTE</span><span style="color: #000000">*</span><span style="color: #000000">)hMod</span><span style="color: #000000">+</span><span style="color: #000000">pImportDesc</span><span style="color: #000000">-&gt;</span><span style="color: #000000">FirstThunk)</span><span style="color: #000000">+</span><span style="color: #000000">n;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000">"</span><span style="color: #000000">Fuction&nbsp;Name：%-27s,</span><span style="color: #000000">"</span><span style="color: #000000">,pszFunName);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000">"</span><span style="color: #000000">Fuction&nbsp;Address：%X\n</span><span style="color: #000000">"</span><span style="color: #000000">,</span><span style="color: #000000">*</span><span style="color: #000000">lpAddr);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;n</span><span style="color: #000000">++</span><span style="color: #000000">;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pThunk</span><span style="color: #000000">++</span><span style="color: #000000">;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pImportDesc</span><span style="color: #000000">++</span><span style="color: #000000">;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;getchar();<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockEnd.gif"  alt="" />}</span></span></div><br />得到输入表地址：<br /><img border="0" alt="" src="http://www.cppblog.com/images/cppblog_com/xunbu7/QQ截图20121228170123.jpg" width="684" longdesc="" height="422" /><br /><br />后面的两个循环：<br /><img border="0" alt="" src="http://www.cppblog.com/images/cppblog_com/xunbu7/QQ截图20121228165826.jpg" width="761" longdesc="" height="794" /><img src ="http://www.cppblog.com/xunbu7/aggbug/196747.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/xunbu7/" target="_blank">寻步</a> 2012-12-28 17:01 <a href="http://www.cppblog.com/xunbu7/archive/2012/12/28/196747.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SYSTEM_INFORMATION_CLASS枚举类型</title><link>http://www.cppblog.com/xunbu7/archive/2012/12/27/196726.html</link><dc:creator>寻步</dc:creator><author>寻步</author><pubDate>Thu, 27 Dec 2012 06:34:00 GMT</pubDate><guid>http://www.cppblog.com/xunbu7/archive/2012/12/27/196726.html</guid><wfw:comment>http://www.cppblog.com/xunbu7/comments/196726.html</wfw:comment><comments>http://www.cppblog.com/xunbu7/archive/2012/12/27/196726.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/xunbu7/comments/commentRss/196726.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/xunbu7/services/trackbacks/196726.html</trackback:ping><description><![CDATA[SYSTEM_INFORMATION_CLASS是一个类型信息，它大概提供了50余种信息，所以你需要哪一种信息，就需要设置一个枚举值。<br />enum&nbsp;SYSTEM_INFORMATION_CLASS&nbsp;{SystemKernelDebuggerInformation=35};&nbsp;<br />这样得到的是SYSTEM_KERNEL_DEBUGGER_INFORMATION这个结构体代表的信息。<br /><br />SYSTEM_INFORMATION_CLASS的完整定义：<br /><br />
<div id="wrap">typedef enum _SYSTEM_INFORMATION_CLASS {<br />&nbsp;&nbsp;&nbsp; SystemBasicInformation,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 0 Y N<br />&nbsp;&nbsp;&nbsp; SystemProcessorInformation,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 1 Y N<br />&nbsp;&nbsp;&nbsp; SystemPerformanceInformation,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 2 Y N<br />&nbsp;&nbsp;&nbsp; SystemTimeOfDayInformation,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 3 Y N<br />&nbsp;&nbsp;&nbsp; SystemNotImplemented1,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 4 Y N<br />&nbsp;&nbsp;&nbsp; SystemProcessesAndThreadsInformation, // 5 Y N<br />&nbsp;&nbsp;&nbsp; SystemCallCounts,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 6 Y N<br />&nbsp;&nbsp;&nbsp; SystemConfigurationInformation,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 7 Y N<br />&nbsp;&nbsp;&nbsp; SystemProcessorTimes,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 8 Y N<br />&nbsp;&nbsp;&nbsp; SystemGlobalFlag,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 9 Y Y<br />&nbsp;&nbsp;&nbsp; SystemNotImplemented2,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 10 Y N<br />&nbsp;&nbsp;&nbsp; SystemModuleInformation,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 11 Y N<br />&nbsp;&nbsp;&nbsp; SystemLockInformation,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 12 Y N<br />&nbsp;&nbsp;&nbsp; SystemNotImplemented3,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 13 Y N<br />&nbsp;&nbsp;&nbsp; SystemNotImplemented4,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 14 Y N<br />&nbsp;&nbsp;&nbsp; SystemNotImplemented5,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 15 Y N<br />&nbsp;&nbsp;&nbsp; SystemHandleInformation,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 16 Y N<br />&nbsp;&nbsp;&nbsp; SystemObjectInformation,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 17 Y N<br />&nbsp;&nbsp;&nbsp; SystemPagefileInformation,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 18 Y N<br />&nbsp;&nbsp;&nbsp; SystemInstructionEmulationCounts,&nbsp;&nbsp;&nbsp; // 19 Y N<br />&nbsp;&nbsp;&nbsp; SystemInvalidInfoClass1,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 20<br />&nbsp;&nbsp;&nbsp; SystemCacheInformation,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 21 Y Y<br />&nbsp;&nbsp;&nbsp; SystemPoolTagInformation,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 22 Y N<br />&nbsp;&nbsp;&nbsp; SystemProcessorStatistics,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 23 Y N<br />&nbsp;&nbsp;&nbsp; SystemDpcInformation,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 24 Y Y<br />&nbsp;&nbsp;&nbsp; SystemNotImplemented6,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 25 Y N<br />&nbsp;&nbsp;&nbsp; SystemLoadImage,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 26 N Y<br />&nbsp;&nbsp;&nbsp; SystemUnloadImage,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 27 N Y<br />&nbsp;&nbsp;&nbsp; SystemTimeAdjustment,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 28 Y Y<br />&nbsp;&nbsp;&nbsp; SystemNotImplemented7,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 29 Y N<br />&nbsp;&nbsp;&nbsp; SystemNotImplemented8,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 30 Y N<br />&nbsp;&nbsp;&nbsp; SystemNotImplemented9,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 31 Y N<br />&nbsp;&nbsp;&nbsp; SystemCrashDumpInformation,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 32 Y N<br />&nbsp;&nbsp;&nbsp; SystemExceptionInformation,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 33 Y N<br />&nbsp;&nbsp;&nbsp; SystemCrashDumpStateInformation,&nbsp;&nbsp;&nbsp; // 34 Y Y/N<br />&nbsp;&nbsp;&nbsp; SystemKernelDebuggerInformation,&nbsp;&nbsp;&nbsp; // 35 Y N<br />&nbsp;&nbsp;&nbsp; SystemContextSwitchInformation,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 36 Y N<br />&nbsp;&nbsp;&nbsp; SystemRegistryQuotaInformation,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 37 Y Y<br />&nbsp;&nbsp;&nbsp; SystemLoadAndCallImage,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 38 N Y<br />&nbsp;&nbsp;&nbsp; SystemPrioritySeparation,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 39 N Y<br />&nbsp;&nbsp;&nbsp; SystemNotImplemented10,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 40 Y N<br />&nbsp;&nbsp;&nbsp; SystemNotImplemented11,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 41 Y N<br />&nbsp;&nbsp;&nbsp; SystemInvalidInfoClass2,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 42<br />&nbsp;&nbsp;&nbsp; SystemInvalidInfoClass3,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 43<br />&nbsp;&nbsp;&nbsp; SystemTimeZoneInformation,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 44 Y N<br />&nbsp;&nbsp;&nbsp; SystemLookasideInformation,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 45 Y N<br />&nbsp;&nbsp;&nbsp; SystemSetTimeSlipEvent,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 46 N Y<br />&nbsp;&nbsp;&nbsp; SystemCreateSession,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 47 N Y<br />&nbsp;&nbsp;&nbsp; SystemDeleteSession,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 48 N Y<br />&nbsp;&nbsp;&nbsp; SystemInvalidInfoClass4,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 49<br />&nbsp;&nbsp;&nbsp; SystemRangeStartInformation,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 50 Y N<br />&nbsp;&nbsp;&nbsp; SystemVerifierInformation,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 51 Y Y<br />&nbsp;&nbsp;&nbsp; SystemAddVerifier,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 52 N Y<br />&nbsp;&nbsp;&nbsp; SystemSessionProcessesInformation&nbsp;&nbsp;&nbsp; // 53 Y N<br />} SYSTEM_INFORMATION_CLASS;<br /> <!-- google_ad_section_end  --></div><img src ="http://www.cppblog.com/xunbu7/aggbug/196726.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/xunbu7/" target="_blank">寻步</a> 2012-12-27 14:34 <a href="http://www.cppblog.com/xunbu7/archive/2012/12/27/196726.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>驱动程序环境搭配（VS2010 + WDK + VirtualDDK + VMware）</title><link>http://www.cppblog.com/xunbu7/archive/2012/12/26/196687.html</link><dc:creator>寻步</dc:creator><author>寻步</author><pubDate>Wed, 26 Dec 2012 08:17:00 GMT</pubDate><guid>http://www.cppblog.com/xunbu7/archive/2012/12/26/196687.html</guid><wfw:comment>http://www.cppblog.com/xunbu7/comments/196687.html</wfw:comment><comments>http://www.cppblog.com/xunbu7/archive/2012/12/26/196687.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/xunbu7/comments/commentRss/196687.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/xunbu7/services/trackbacks/196687.html</trackback:ping><description><![CDATA[感谢两文作者！<br /><br /><a href="http://techird.blog.163.com/blog/static/1215640362011112385241568/">http://techird.blog.163.com/blog/static/1215640362011112385241568/</a><br /><br /><a href="http://www.cnblogs.com/BoyXiao/archive/2011/07/31/2122755.html">http://www.cnblogs.com/BoyXiao/archive/2011/07/31/2122755.html</a> <br /><br />所有的配置工作完成后，在新的调试的时候，需要注意的是：<br />每次在重启虚拟机的时候，在选择操作系统的界面要停一下，等待我们机器上的VS上相关的操作。<img border="0" alt="" src="http://www.cppblog.com/images/cppblog_com/xunbu7/QQ截图20121226173704.jpg" width="653" longdesc="" height="210" /><br /><br />1.驱动文件编译连接后，下好调试断点(这些东西之前就要做好)，<br /><br />2.调试运行驱动。<br /><img border="0" alt="" src="http://www.cppblog.com/images/cppblog_com/xunbu7/QQ截图20121226174849.jpg" width="887" longdesc="" height="398" /><br /><br />3.出现下面的连接虚拟机的连接内核调试对话窗口。<br /><img border="0" alt="" src="http://www.cppblog.com/images/cppblog_com/xunbu7/QQ截图20121227094509.jpg" width="486" longdesc="" height="254" /><br />此时显示的失败。<br /><br />4.进入虚拟机调试系统，会中断在下面的界面。<br /><img border="0" alt="" src="http://www.cppblog.com/images/cppblog_com/xunbu7/QQ截图20121226180231.jpg" width="808" longdesc="" height="262" /><br />连接虚拟机的连接内核调试对话窗口显示数据信息，代表连接虚拟机成功，窗口很快就消失了，不好截图。<br />紧接着下载符号窗口，这个图不好截，借用别人一下。<br /><img border="0" alt="" src="http://www.cppblog.com/images/cppblog_com/xunbu7/2866822637815190354.jpg" width="576" longdesc="" height="113" /><br />VS会出现如下控制台界面：<br /><img border="0" alt="" src="http://www.cppblog.com/images/cppblog_com/xunbu7/QQ截图20121227093727.jpg" width="510" longdesc="" height="528" /><br /><br />5.在VS中按F5运行，则虚拟机系统正常运行。 <br /><img border="0" alt="" src="http://www.cppblog.com/images/cppblog_com/xunbu7/QQ截图20121226180938.jpg" width="642" longdesc="" height="482" /><br /><br />6.在虚拟机进入桌面后，DDKLauncherMonitor启动后，等待我们在ddk控制台加载驱动。<img border="0" alt="" src="http://www.cppblog.com/images/cppblog_com/xunbu7/QQ截图20121226181818.jpg" width="734" longdesc="" height="372" /><br /><br />7.控制台加载驱动后，会显示几行错误信息，这个是正常的。<br /><img border="0" alt="" src="http://www.cppblog.com/images/cppblog_com/xunbu7/QQ截图20121227100313.jpg" width="510" longdesc="" height="528" /><br />此时，虚拟机中的DDKLaunchMonitor对话框会显示两行信息。<br /><img border="0" alt="" src="http://www.cppblog.com/images/cppblog_com/xunbu7/QQ截图20121227100141.jpg" width="627" longdesc="" height="314" /><br />结果在VS中断到了我们的断点上，可以成功调试。<br /><img border="0" alt="" src="http://www.cppblog.com/images/cppblog_com/xunbu7/QQ截图20121227100832.jpg" width="899" longdesc="" height="359" /><br /><br />8.一次完成调试后(调试中，虚拟机中的操作系统是不能动的，因为它在被调试，废话，哈哈)，虚拟机中的DDKLaunchMonitor对话框会显示一行信息。虚拟机中的操作系统正常运行。<br /><img border="0" alt="" src="http://www.cppblog.com/images/cppblog_com/xunbu7/QQ截图20121227102139.jpg" width="625" longdesc="" height="317" /><br /><br />9.在不关闭虚拟机的前提下，可以反复轻松调试。 <img src ="http://www.cppblog.com/xunbu7/aggbug/196687.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/xunbu7/" target="_blank">寻步</a> 2012-12-26 16:17 <a href="http://www.cppblog.com/xunbu7/archive/2012/12/26/196687.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>找基址的整体思路</title><link>http://www.cppblog.com/xunbu7/archive/2012/12/26/196648.html</link><dc:creator>寻步</dc:creator><author>寻步</author><pubDate>Wed, 26 Dec 2012 02:09:00 GMT</pubDate><guid>http://www.cppblog.com/xunbu7/archive/2012/12/26/196648.html</guid><wfw:comment>http://www.cppblog.com/xunbu7/comments/196648.html</wfw:comment><comments>http://www.cppblog.com/xunbu7/archive/2012/12/26/196648.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/xunbu7/comments/commentRss/196648.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/xunbu7/services/trackbacks/196648.html</trackback:ping><description><![CDATA[<p>游戏里&#8220;人物&#8221;是以对象形式存在。<br />对象有很多&#8220;属性&#8221;，和&#8220;方法&#8221;，<br />&#8220;人物&#8220;可以有血，蓝，坐标x,坐标y。等等属性。<br />可以有&#8220;攻击&#8221;，&#8220;选怪&#8221;，&#8220;走路&#8221;等方法。<br />在游戏编程的时候，定义了一个对象。<br />他的属性是按照线性的地址排列。<br />&#8220;对象&#8221;在内存中的地址，就是基址。<br />&#8220;属性&#8221;和&#8220;方法&#8221;相对于对象的内存排列，就是偏移。<br />比如刚开始，游戏定义了&#8220;人物&#8221;对象具有，1.血2.蓝3.坐标x.4.坐标y<br />这时候，血值相当于&#8220;对象&#8221;基址的偏移就是4，蓝的偏移就是8，坐标x就是12，坐标y就是16<br />然后大更新了一次，游戏给&#8220;人物&#8221;对象添加了一个属性&#8220;经验&#8221;。且插入在在"2.蓝"这个属性之后，这时候，其他属性的&#8220;相对于对象基址的偏移&#8221;就发生了改变。<br />1.血2.蓝3.经验4.坐标x.5.坐标y</p>
<p>血偏移4，蓝8，经验12，坐标x16，坐标y20。。依次类推。<br /><br />游戏一般会维护一个&#8220;对象列表&#8221;，就是把&#8220;对象&#8220;在内存中的地址存放在特定的数据结构之中，这个数据结构可以是&#8221;数组&#8220;，&#8221;链表&#8220;，&#8221;树&#8220;之类的。</p><img src ="http://www.cppblog.com/xunbu7/aggbug/196648.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/xunbu7/" target="_blank">寻步</a> 2012-12-26 10:09 <a href="http://www.cppblog.com/xunbu7/archive/2012/12/26/196648.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>