<?xml version="1.0" encoding="gb2312"?>
<rss version="2.0">
<channel>
<title><![CDATA[百度黑客 Baidu hacker]]></title>
        <image>
        <title>http://hi.baidu.com</title>
        <link>http://hi.baidu.com</link>
        <url>http://img.baidu.com/img/logo-hi.gif</url>
        </image>
<description><![CDATA[兽炉沈水烟，翠沼残花片，一行行写入相思传]]></description>
<link>http://hi.baidu.com/gtomp</link>
<language>zh-cn</language>
<generator>www.baidu.com</generator>
<ttl>5</ttl>


<item>
        <title><![CDATA[MSN Editor 漏洞的检测技术]]></title>
        <link><![CDATA[http://hi.baidu.com/gtomp/blog/item/546d76e7557ff824b838205e.html]]></link>
        <description><![CDATA[
		
		<p>这个编辑器相当的简陋，下午拿站的时候碰到了一个，没有数据库备份，也没有什么可以直接上传webshell的地方，简陋到只有一个editor的界面。</p>
<p><img class="blogimg" src="http://www.anqn.com/pic/1/a2009-11-29-734511.jpg" border="0" small="0"></p>
<p>简单说下利用的方法吧。<br>
点击图片上传后会出现上传页面，地址为</p>
<p>http://www.xxx.cn/admin/uploadPic.asp?language=&amp;editImageNum=0&amp;editRemNum=</p>
<p>用普通的图片上传后，地址为<br>
/pic/1/a2009-11-29-5802_1.gif</p>
<p>记住这时候的路径</p>
<p>在点击图片的上传，这时候地址就变成了<br>
http://www.xxx.cn/news/admin/uploadPic.asp?language=&amp;editImageNum=1&amp;editRemNum=41513102009204012</p>
<p>很明显。图片的地址是根据RemNum后面的编号生成的。</p>
<p>利用很简单 配合IIS的解析漏洞，把RemNum后面的数据修改为1.asp;41513102009204012</p>
<p>变成下面这个地址</p>
<p>http://www.xxx.cn/admin/uploadPic.asp?language=&amp;editImageNum=0&amp;editRemNum=1.asp;41513102009204012</p>
<p>然后在浏览器里打开</p>
<p>然后选择你的脚本木马上传</p>
<p>将会返回下面的地址<br>
uppic/1.asp;41513102009204012_2.gif</p>
<p>然后直接打开就是我们的小马地址！</p>
<p>加上修补方法！</p>
<p>by:想你挡挡闯墙</p>
<p>关键代码：</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  if editRemNum&lt;&gt;&quot;&quot; then&nbsp;&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;  remNum = editRemNum<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  else<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  Randomize<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  remNum = Int((999 - 1 + 1) * Rnd + 1)&amp;day(date)&amp;month(date)&amp;year(date)&amp;hour(time)&amp;minute(time)&amp;second(time)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  end if<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  remFileName = remNum&amp;&quot;_&quot;&amp;(editImageNum+1)&amp;&quot;.gif&quot;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  end if</p>
<p>哎，先不讲解了 。</p>
<p>去掉自定义部分，只留下随即参数即可。</p>
<p>保留代码：</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  Randomize<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  remNum = Int((999 - 1 + 1) * Rnd + 1)&amp;day(date)&amp;month(date)&amp;year(date)&amp;hour(time)&amp;minute(time)&amp;second(time)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  end if<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  remFileName = remNum&amp;&quot;_&quot;&amp;(editImageNum+1)&amp;&quot;.gif&quot;</p> <a href="http://hi.baidu.com/gtomp/blog/item/546d76e7557ff824b838205e.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/gtomp/blog/category/%BA%DA%BF%CD%B1%E0%B3%CC">黑客编程</a>&nbsp;<a href="http://hi.baidu.com/gtomp/blog/item/546d76e7557ff824b838205e.html#comment">查看评论</a>]]></description>
        <pubDate>2009/11/29  10:15 A.M.</pubDate>
        <category><![CDATA[黑客编程]]></category>
        <author><![CDATA[GTOMP]]></author>
		<guid>http://hi.baidu.com/gtomp/blog/item/546d76e7557ff824b838205e.html</guid>
</item>

<item>
        <title><![CDATA[锐起无盘2046完美破解教程]]></title>
        <link><![CDATA[http://hi.baidu.com/gtomp/blog/item/b297dffaddfc24d4b58f315d.html]]></link>
        <description><![CDATA[
		
		<p>压缩包里共有4个文件，3个是服务器补丁，1个客户端补丁(richdisk.sys)这个文件是工作站安装了客户端后要传到客户端的：C:\WINDOWS\system32\drivers 目录下，然后重起---再重起---接着重起就OK了~<br>
原<strong style="color: white; background-color: rgb(0,170,0)">版</strong>包括：server 是服务端 client 是客户端<br>
补丁有四个文件：<br>
其中三个是服务端<strong style="color: white; background-color: rgb(136,0,0)">破解</strong>文件：Dlxpdhcp.exe Manager.exe RTIOSRV.EXE <br>
一个是客户端<strong style="color: white; background-color: rgb(136,0,0)">破解</strong>：richdisk.sys</p>
<p>这里我就提供破解文件下载和安装文件下载</p>
<p>其中客户端安装文件超过10M偶分割过 分割软件里面也有 下来后你自己合成</p>
<p>请大家进入我的163邮箱 用户名myqq511600013 密码 buyaogaimima希望大家不要更改密码免得别人下不到<br>
------------------------<br>
安装过程<br>
服务按默认装WIN2003SP1</p>
<center><img height="501" src="http://www.anqn.com/pic/1/1_112402_1.jpg" width="536" border="0"><br>
图片1<br>
</center>
<div align="left">装好后设置IP：我设IP是：192.168.1.8 <center><img height="455" src="http://www.anqn.com/pic/1/1_112607_1.jpg" width="749" border="0"><br>
图片2<br>
</center></div>
<div align="left">然后安装锐起服务端，安装没什么，一路下一步按默认安装就行了。安装完后到服务里关闭锐起的两个服务： <center><img height="456" src="http://www.anqn.com/pic/1/1_112641_1.jpg" width="636" border="0"><br>
图片3<br>
</center></div>
<div align="left">把两服务端的破解补丁：Dlxpdhcp.exe Manager.exe 复制到锐起的安装目录。再重锐起的两个服务。<br>
打开开始菜单中的锐起管理器，按提示输入映像目录、工作目录、临时目录，我是都放在D盘里（这里必须保证D盘是NTFS分区！），确定后进入管理主窗口，点击：磁盘管理建立映像盘，我就用锐起默认的80G没有变（避免麻烦）： <center><img height="424" src="http://www.anqn.com/pic/1/1_112709_1.jpg" width="660" border="0"><br>
图片4<br>
</center></div>
<div align="left">然后点击选项设置，按下图设置：先配置工作站 <center><img height="482" src="http://www.anqn.com/pic/1/1_112735_1.jpg" width="616" border="0"><br>
图片5<br>
</center></div>
<div align="left">IP地址：从192.168.1.10到192.168.1.254 <center><img height="481" src="http://www.anqn.com/pic/1/1_112754_1.jpg" width="615" border="0"><br>
图片6<br>
</center></div>
<div align="left">确定完成后关闭锐起管理窗口，到D：//rich/disk（这是我设置的，你根据自己的设置目录进去看看）中去看一下，没有发现我们建立的映像文件，没有映像文件是做不下去的！别急，这时再进系统的服务中去把锐起的两个服务停了。再把锐起的破解补丁：RTIOSRV.EXE 复制到锐起安装目录（还记得吗？刚才我们已复制了两个了）。然后重启电脑（你不重启电脑只重新打开锐起服务行不行？哈，你自己试试）！重启后再到D：//rich/disk中看看，80G的映像文件已经有了： <center><img height="248" src="http://www.anqn.com/pic/1/1_112815_1.jpg" width="696" border="0"><br>
图片7<br>
</center></div>
<div align="left">好了，先转到客户机了，开机在BIOS中设置从网络启动，之后看到这个：我们已经得到了服务器分配的IP ,并且连上了锐起的服务端, 还显示出了锐起的网址http://www.richtech.net.cn</div>
<div align="left">我们再回到服务器打开锐起管理器窗口,看到已经全自动建立了一条该工作站的启动信息,如下图 <center><img height="208" src="http://www.anqn.com/pic/1/1_112842_1.jpg" width="655" border="0"><br>
图8<br>
</center></div>
<div align="left">
<p>双击它，选其它设置，把本地硬盘启动勾选上，确定回到窗口</p>
<center><img height="508" src="http://www.anqn.com/pic/1/1_112909_1.jpg" width="682" border="0"><br>
图片9 </center>
<p> </p>
<div align="left">再点击超级用户按钮，把这个工作站设为超级用户。（如果提示先关闭工作站，就点禁用然后又启动按钮。这样就能设了。）<br>
到此服务器的工作暂时完成了，到客户端去安装客户端吧。<br>
－－－－－－－－－－－－－－－－－－－－－－－－－<br>
我的客户端安装XPsp2，右击本地连接选属性，删除QOS数据包计划程序 <center><img height="464" src="http://www.anqn.com/pic/1/1_112937_1.jpg" width="644" border="0"><br>
图片10<br>
</center></div>
<div align="left">然后设置IP：192.168.1.10（这个IP应和服务器锐起管理里显示的哪条工作站IP相符合，否则服务器和客户机不能连通） <center><img height="452" src="http://www.anqn.com/pic/1/1_112952_1.jpg" width="609" border="0"><br>
图片11<br>
</center></div>
<div align="left">设置完PING一下服务器，已经通了： <center><img height="530" src="http://www.anqn.com/pic/1/1_113012_1.jpg" width="749" border="0"><br>
图片12<br>
</center></div>
<div align="left">然后安装锐起客户端程序了，到配置这项我的设置如下： <center><img height="394" src="http://www.anqn.com/pic/1/1_113027_1.jpg" width="509" border="0"><br>
图片13<br>
</center></div>
<div align="left">然后确定完成安装！<br>
重启电脑（如果出现什么找到新硬件之类的提示，就按提示安装重启，我装了几遍，有时有有时没有，有的时候要重启2、3次），看设备管理器里，如图磁盘驱动器多出了这些东西： <center><img height="507" src="http://www.anqn.com/pic/1/1_113043_1.jpg" width="683" border="0"><br>
图片14<br>
</center></div>
<div align="left">但是进&ldquo;计算机管理&quot;－&quot;磁盘管理&quot;里还没有多出磁盘。我们把锐起客户端的破解补丁：richdisk.sys复制到C:\WINDOWS\system32\drivers 中覆盖原文件。然后又重启电脑。（从客户端安装以来，重启了几次电脑，我也不记得了。）重启后再进&ldquo;计算机管理&quot;－&quot;磁盘管理&quot;就出现这个提示，连接虚拟盘成功了： <center><img height="494" src="http://www.anqn.com/pic/1/1_113100_1.jpg" width="732" border="0"><br>
图片15<br>
</center></div>
<div align="left">然后按向导初始化磁盘，注意到这里不要勾选（不要转换成动态盘！），</div>
<div align="left">然后新建磁盘分区，我只建4G，之后用NTFS格式格式化： <center><img height="482" src="http://www.anqn.com/pic/1/1_113118_1.jpg" width="733" border="0"><br>
图片16<br>
</center></div>
<div align="left">从开始菜单中打开<u>锐起<u>无盘</u></u>上传程序：如图，它已经自动填上源盘和目标盘了，确认没有错，上传，等一会儿，上传完成退出，关机！取出硬盘。客户端设置至此全部完成！<br>
－－－－－－－－－－－－－－－－－－－－<br>
到服务端把这个超级用户重新设为普通用户，设从虚拟盘启动，所有工作完成了。<br>
客户端网络方式启动，15台客户机顺利进入系统 <center><img height="550" src="http://www.anqn.com/pic/1/1_113139_1.jpg" width="777" border="0"><br>
图片17</center></div>
</div> <a href="http://hi.baidu.com/gtomp/blog/item/b297dffaddfc24d4b58f315d.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/gtomp/blog/category/%BC%D3%C3%DC%BD%E2%C3%DC">加密解密</a>&nbsp;<a href="http://hi.baidu.com/gtomp/blog/item/b297dffaddfc24d4b58f315d.html#comment">查看评论</a>]]></description>
        <pubDate>2009/11/29  10:13 A.M.</pubDate>
        <category><![CDATA[加密解密]]></category>
        <author><![CDATA[GTOMP]]></author>
		<guid>http://hi.baidu.com/gtomp/blog/item/b297dffaddfc24d4b58f315d.html</guid>
</item>

<item>
        <title><![CDATA[天空终于 有开始降起 小雪花了……]]></title>
        <link><![CDATA[http://hi.baidu.com/gtomp/blog/item/f678f52a55fff127d52af156.html]]></link>
        <description><![CDATA[
		
		天空终于 有开始降起 小雪花了……  心情 不是 很好。当然不是因为这件事情<img src="http://img.baidu.com/hi/jx/j_0025.gif"> 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/gtomp/blog/category/%D5%BE%B3%A4%D0%C4%C9%F9">站长心声</a>&nbsp;<a href="http://hi.baidu.com/gtomp/blog/item/f678f52a55fff127d52af156.html#comment">查看评论</a>]]></description>
        <pubDate>2009/11/28  08:56 A.M.</pubDate>
        <category><![CDATA[站长心声]]></category>
        <author><![CDATA[GTOMP]]></author>
		<guid>http://hi.baidu.com/gtomp/blog/item/f678f52a55fff127d52af156.html</guid>
</item>

<item>
        <title><![CDATA[QQ停车位全能助手V1.39绿色版]]></title>
        <link><![CDATA[http://hi.baidu.com/gtomp/blog/item/d798a418356619be4aedbccc.html]]></link>
        <description><![CDATA[
		
		<span><img class="blogimg" border="0" small="0" src="http://www.anqn.com/img/2009/qqtcwqnzsv139lsb.gif">
<table cellspacing="1" cellpadding="0" width="630" bgcolor="#cdcdcd" border="0">
    <tbody>
        <tr>
            <td style="padding-left: 10px; font-size: 14px" width="553" background="/images/softnav.gif" bgcolor="#ffffff" height="25"><font color="#3b8100"><strong>外挂介绍</strong></font></td>
        </tr>
        <tr>
            <td style="padding-right: 8px; padding-left: 8px; padding-bottom: 8px; line-height: 22px; padding-top: 8px" bgcolor="#ffffff">
            <p>制作此软件的目的主要是为了能更方便的停车,为您节约时间的同时给您的QQ汽车带来更高的赢利.有了此软件您可以不用平凡的登陆QQ空间来操作停车位.可以自动停车,自动贴条,自动买车,自动换车,一键停车.<br>
            此软件为纯绿色软件,无须安装,不包含任何插件甚至后门.您可以放心的使用本软件.</p>
            <p>主要功能：<br>
            1.【贴条】可以对选定的汽车进行贴条<br>
            2.【停车】自动挑选出一辆最合理的汽车停到指定车位上.减少操作步骤.使用更简洁<br>
            3.【举报】可以举报所有QQ好友的汽车<br>
            4.【留言】不用登陆QQ空间即可给对方进行留言<br>
            5.【挂机功能】只要电脑开机时启动了挂机功能.那么就自动为您操作你想操作的事件<br>
            6.【自动停车】电脑自动为您停车,更省心更省事.可以自己设定停车时间.比QQ停车位托管更方便,还能帮您节约Money!<br>
            7.【自动贴条】您想贴的都贴!不想贴的过滤掉即可.操作方便<br>
            8.【自动购买汽车】只要您还没有10辆车时,自动为您购买新车<br>
            9.【自动换购汽车】当挂机时,有足够的钱换购赢利更高的汽车时,自动为您换购汽车.这样为您的汽车带来更高的赢利!<br>
            10.【一键换停汽车】您只需用鼠标点一下,即可将所有汽车停到您想停的位置上!几秒钟即可操作完成!效率是手动停车的几十倍!<br>
            挂机提醒：<br>
            1.使用《挂机》前请先添加《停车场列表》,这样就不会照成汽车乱停乱放的现象了!也避免了被别人贴条!<br>
            2.使用《一键换停汽车》同上<br>
            3.如果您要使用《自动贴条》,请先添加《不贴条列表》,避免将自己朋友的汽车也贴掉!<br>
            4.本软件主要操作方式为【右键操作】</p>
            </td>
        </tr>
    </tbody>
</table>
<a target="_blank" href="http://download.anqn.com/2009/qqtcwqnzsv139lsb--anqn.com.rar "><font size="4">&nbsp;&nbsp;&nbsp;  QQ停车位全能助手V1.39绿色版</font></a><br>
</span> <a href="http://hi.baidu.com/gtomp/blog/item/d798a418356619be4aedbccc.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/gtomp/blog/category/%D3%CE%CF%B7%BA%DA%BF%CD">游戏黑客</a>&nbsp;<a href="http://hi.baidu.com/gtomp/blog/item/d798a418356619be4aedbccc.html#comment">查看评论</a>]]></description>
        <pubDate>2009/11/22  09:10 A.M.</pubDate>
        <category><![CDATA[游戏黑客]]></category>
        <author><![CDATA[GTOMP]]></author>
		<guid>http://hi.baidu.com/gtomp/blog/item/d798a418356619be4aedbccc.html</guid>
</item>

<item>
        <title><![CDATA[DNF龙王1002智能稳定高效版【地下城外挂]]></title>
        <link><![CDATA[http://hi.baidu.com/gtomp/blog/item/2676b252ac38b1040cf3e3c2.html]]></link>
        <description><![CDATA[
		
		<span><img class="blogimg" border="0" small="0" src="http://www.anqn.com/img/2009/dnflw1002znwdgxb.gif">
<table cellspacing="1" cellpadding="0" width="630" bgcolor="#cdcdcd" border="0">
    <tbody>
        <tr>
            <td style="padding-left: 10px; font-size: 14px" width="553" background="/images/softnav.gif" bgcolor="#ffffff" height="25"><font color="#3b8100"><strong>外挂介绍</strong></font></td>
        </tr>
        <tr>
            <td style="padding-right: 8px; padding-left: 8px; padding-bottom: 8px; line-height: 22px; padding-top: 8px" bgcolor="#ffffff">
            <p>测试用户请勾选启动按钮右边的&ldquo;测试用户&rdquo;</p>
            <p>龙王功能列表：<br>
            　[倍击]　[无敌]　[加速]　[吸怪]　[自动3S]　[地冒火]　[牛图]<br>
            　[远程仓库]　[无限负重]　[远程修理]　[补血补蓝]　[懒人模式]</p>
            <p>注意事项：<br>
            1、请大家严格遵守功能说明中的提示进行游戏<br>
            2、刷图不要太快，过图时间控制在30秒以上<br>
            3、掉线后请等待60分钟再上号，否则会一直掉并且有封号的危险<br>
            4、龙王不支持PK场哦<br>
            5、请不要与其他程序一起使用，使用前保证系统的安全干净！<br>
            <br>
            快捷键列表<br>
            ·懒人模式<br>
            F8 - 懒人模式(开启或关闭)<br>
            ·倍击<br>
            Page Up - 增加一倍伤害<br>
            Page Down - 降低一倍伤害<br>
            Ctrl+1 - 恢复到正常伤害<br>
            Ctrl+2 - 4倍伤害<br>
            Ctrl+3 - 8倍伤害<br>
            Ctrl+4 - 12倍伤害<br>
            Ctrl+5 - 千倍伤害(牛柱专用，请勿用于刷图)<br>
            ·无敌<br>
            F3 - 开启无敌<br>
            F4 - 关闭无敌<br>
            ·加速<br>
            F9 - 开关加速（开启或关闭加速功能）<br>
            ·吸怪<br>
            F1 - 吸怪<br>
            小键盘0 - 吸怪<br>
            ·自动3S<br>
            F11 - 开启自动3S评分功能<br>
            F12 - 关闭自动3S评分功能<br>
            ·地冒火<br>
            F5 - 地冒火<br>
            加号 - 增加1倍地冒火的伤害<br>
            减号 - 减少1倍地冒火的伤害<br>
            ·远程仓库<br>
            Ctrl+7 - 立刻打开仓库<br>
            ·无限负重<br>
            Ctrl+8 - 无限负重（开启或关闭）<br>
            ·远程修理<br>
            Ctrl+9 - 立刻修理所穿装备<br>
            ·补血补蓝<br>
            F10 - 补血补蓝</p>
            </td>
        </tr>
    </tbody>
</table>
<br>
<strong><font color="#ff0000"><a target="_blank" href="http://download.anqn.com/2009/dnflw1002znwdgxb--anqn.com.rar">DNF龙王1002智能稳定高效版下载</a></font></strong></span> <a href="http://hi.baidu.com/gtomp/blog/item/2676b252ac38b1040cf3e3c2.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/gtomp/blog/category/%D3%CE%CF%B7%BA%DA%BF%CD">游戏黑客</a>&nbsp;<a href="http://hi.baidu.com/gtomp/blog/item/2676b252ac38b1040cf3e3c2.html#comment">查看评论</a>]]></description>
        <pubDate>2009/11/22  09:05 A.M.</pubDate>
        <category><![CDATA[游戏黑客]]></category>
        <author><![CDATA[GTOMP]]></author>
		<guid>http://hi.baidu.com/gtomp/blog/item/2676b252ac38b1040cf3e3c2.html</guid>
</item>

<item>
        <title><![CDATA[浅谈几款中强壳的手工脱法 二]]></title>
        <link><![CDATA[http://hi.baidu.com/gtomp/blog/item/bc92927e9799a6320cd7dac1.html]]></link>
        <description><![CDATA[
		
		记下00401620这个地址，我们来转到00401620看看，跳转过去会看到如下代码：
<div> </div>
<div class="blockcode"><span class="headactions" >复制内容到剪贴板</span>
<h5>代码:</h5>
<code ><font face="NSimsun">0040161E    0000  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;   add  &nbsp;&nbsp;&nbsp; byte ptr [eax], al<br>
00401620    0000  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;   add  &nbsp;&nbsp;&nbsp; byte ptr [eax], al<br>
00401622    0000  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;   add  &nbsp;&nbsp;&nbsp; byte ptr [eax], al<br>
00401624    0000  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;   add  &nbsp;&nbsp;&nbsp; byte ptr [eax], al<br>
00401626    0000  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;   add  &nbsp;&nbsp;&nbsp; byte ptr [eax], al<br>
00401628    0000  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;   add  &nbsp;&nbsp;&nbsp; byte ptr [eax], al<br>
0040162A    0000  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;   add  &nbsp;&nbsp;&nbsp; byte ptr [eax], al<br>
0040162C    0000  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;   add  &nbsp;&nbsp;&nbsp; byte ptr [eax], al<br>
0040162E    0000  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;   add  &nbsp;&nbsp;&nbsp; byte ptr [eax], al<br>
00401630    0000  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;   add  &nbsp;&nbsp;&nbsp; byte ptr [eax], al<br>
00401632    0000  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;   add  &nbsp;&nbsp;&nbsp; byte ptr [eax], al<br>
00401634    0000  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;   add  &nbsp;&nbsp;&nbsp; byte ptr [eax], al</font></code></div>
<div>全是0字节。没事，鼠标点选00401620这行，按下F4，也就是&ldquo;断点&rdquo;→&ldquo;运行到所选&rdquo;，看到00401620这行代码立马就变了，变成了如下代码：</div>
<div class="blockcode"><span class="headactions" >复制内容到剪贴板</span>
<h5>代码:</h5>
<code ><font face="NSimsun">00401614- FF25 84104000&nbsp;&nbsp; jmp&nbsp;&nbsp; dword ptr [401084]; MSVBVM60.PutMemStr<br>
0040161A&nbsp;&nbsp; - FF25 20114000 jmp dword ptr [401120]&nbsp;&nbsp; ; MSVBVM60.ThunRTMain<br>
00401620    68 70284000&nbsp;&nbsp; push 00402870&nbsp;&nbsp; ; ASCII &quot;VB5!6&amp;vb6chs.dll&quot;<br>
00401625    E8 F0FFFFFF call&nbsp;&nbsp; 0040161A&nbsp;&nbsp; ; jmp 到 MSVBVM60.ThunRTMain<br>
0040162A    0000  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;   add  &nbsp;&nbsp;&nbsp; byte ptr [eax], al<br>
0040162C    0000  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;   add  &nbsp;&nbsp;&nbsp; byte ptr [eax], al<br>
0040162E    0000  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;   add  &nbsp;&nbsp;&nbsp; byte ptr [eax], al<br>
00401630    3000  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;   xor  &nbsp;&nbsp;&nbsp; byte ptr [eax], al<br>
00401632    0000  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;   add  &nbsp;&nbsp;&nbsp; byte ptr [eax], al<br>
00401634    3800  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;   cmp  &nbsp;&nbsp;&nbsp; byte ptr [eax], al<br>
00401636    0000  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;   add  &nbsp;&nbsp;&nbsp; byte ptr [eax], al<br>
00401638    0000  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;   add  &nbsp;&nbsp;&nbsp; byte ptr [eax], al<br>
0040163A    0000  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;   add  &nbsp;&nbsp;&nbsp; byte ptr [eax], al<br>
0040163C    03B0 888AA4EE   add  &nbsp;&nbsp;&nbsp; esi, dword ptr [eax+EEA48A88]</font></code></div>
<div>因为被压进去了东西，这里可以看到00401620这行告诉我们，这是一个VB编写的程序，我们就在00401620这行dump出来就行啦，朋友们，并不是所有的脱壳都非要找个&ldquo;push ebp&rdquo;才肯干休的哟，这里就是入口点了啦。Dump出来之后查壳，发现PEID顺利地检测出了&ldquo;<span class="t_tag" href="http://www.7747.net/Article/200902/tag.php?name=Microsoft">Microsoft</span> Visual Basic 5.0 / 6.0&rdquo;的样子，但是程序无法运行。老方法，用ImportREC.exe修复输入表（如图7）。<br>
<br>
<img height="482" src="http://www.anqn.com/pic/1/20090206011530760.png" width="556" border="0"></div>
<div> </div>
<div><br>
图7<br>
<br>
再看修复好的程序，恩可以运行。好了，这个WinUpack的壳就算成功脱掉了呵。<br>
<br>
3、Asprotect v1.2- 2.3 （非变形）<br>
Asprotect 绝对是壳界的一位大哥，光那加壳思路就被很多其他的壳所参考借用。不过现在也不能算是强壳了哈，曾经看到网上有高手做的脱壳脚本流传，自己试了下，感觉不好用，脱出来连修复输入表之后都没有用，说是内存不能为&ldquo;read&rdquo;，狂晕。下面我来讲下这个壳的手工脱法。<br>
首先自然是要隐藏OD啦，这个就不要我讲了，Asprotect一般都会侦查调试器是否启动的。载入后会看到如下图的代码，这个就是典型的Asprotect特征码，先是push一个地址进栈，然后一个call，两个retn，那个call载的正好就是第二个retn的地址，(*^__^*) 嘻嘻……（如图8）。OD设置下调试选项，除了CPU的异常其他异常全部忽略掉，这样才能成功，如果忽略CPU异常的话就只能脱低版本的 Asprotect了。<br>
<br>
<img height="206" src="http://www.anqn.com/pic/1/20090206011532101.png" width="570" border="0"></div>
<div> </div>
<div><br>
图8<br>
<br>
这个壳不能用ESP定律，那么就用另一种常见的方法，最后一次异常法来试试看，对于这个test.exe我用 Shift+F9来跑，不是像前面一样用的F8单步跑，Shift+F9跑了15次后，这个程序自己运行起来，窗体出现了。我用OD重新载入，Shift+F9跑了14次之后，顺利来到如下的代码处：</div>
<div class="blockcode"><span class="headactions" >复制内容到剪贴板</span>
<h5>代码:</h5>
<code ><font face="NSimsun">003F2CCE    64:8920   mov  &nbsp;&nbsp;&nbsp; dword ptr fs:[eax], esp<br>
003F2CD1    3100  &nbsp;&nbsp;   xor  &nbsp;&nbsp;&nbsp; dword ptr [eax], eax    //OD运行停在这里<br>
003F2CD3    64:8F05 0000000&gt;pop  &nbsp;&nbsp;&nbsp; dword ptr fs:[0]<br>
003F2CDA    58  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;&nbsp; pop  &nbsp;&nbsp;&nbsp; eax<br>
003F2CDB    833D 7C6D3F00 0&gt;cmp  &nbsp;&nbsp;&nbsp; dword ptr [3F6D7C], 0<br>
003F2CE2    74 14  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;&nbsp; je  &nbsp;&nbsp;   short 003F2CF8<br>
003F2CE4    6A 0C  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;&nbsp; push    0C<br>
003F2CE6    B9 7C6D3F00  &nbsp;&nbsp;&nbsp; mov  &nbsp;&nbsp;&nbsp; ecx, 3F6D7C<br>
003F2CEB    8D45 F8  &nbsp;&nbsp;  &nbsp;&nbsp;   lea  &nbsp;&nbsp;&nbsp; eax, dword ptr [ebp-8]<br>
003F2CEE    BA 04000000  &nbsp;&nbsp;&nbsp; mov  &nbsp;&nbsp;&nbsp; edx, 4<br>
003F2CF3    E8 54E1FFFF  &nbsp;&nbsp;&nbsp; call    003F0E4C<br>
003F2CF8    FF75 FC  &nbsp;&nbsp;  &nbsp;&nbsp;   push    dword ptr [ebp-4]<br>
003F2CFB    FF75 F8  &nbsp;&nbsp;  &nbsp;&nbsp;   push    dword ptr [ebp-8]<br>
003F2CFE    8B45 F4  &nbsp;&nbsp;  &nbsp;&nbsp;   mov  &nbsp;&nbsp;&nbsp; eax, dword ptr [ebp-C]<br>
003F2D01    8338 00  &nbsp;&nbsp;  &nbsp;&nbsp;   cmp  &nbsp;&nbsp;&nbsp; dword ptr [eax], 0<br>
003F2D04    74 02  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;&nbsp; je  &nbsp;&nbsp;   short 003F2D08<br>
003F2D06    FF30  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;   push    dword ptr [eax]<br>
003F2D08    FF75 F0  &nbsp;&nbsp;  &nbsp;&nbsp;   push    dword ptr [ebp-10]<br>
003F2D0B    FF75 EC  &nbsp;&nbsp;  &nbsp;&nbsp;   push    dword ptr [ebp-14]<br>
003F2D0E    C3  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;&nbsp; retn<br>
003F2D0F    5F  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;&nbsp; pop  &nbsp;&nbsp;&nbsp; edi<br>
003F2D10    5E  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;&nbsp; pop  &nbsp;&nbsp;&nbsp; esi</font></code></div>
<div>OD停在了003F2CD1这一行，如果再跑一下的话，程序窗体就要出来了，不能再按shift+F9了，往下看代码，003F2D0E这里有个retn返回上一级的。我就在在这行下F2断点，按shift+F9放心大胆地再跑下，被断点断住了，很好，就是要这个效果。看看右下角的堆栈窗口，是这样的饿（如图9）：</div>
<div class="blockcode"><span class="headactions" >复制内容到剪贴板</span>
<h5>代码:</h5>
<code ><font face="NSimsun">0012FF58   0000000C<br>
0012FF5C   00982044<br>
0012FF60   00400000&nbsp;&nbsp; jiake.00400000<br>
0012FF64   4C5C2107<br>
0012FF68   0012FFA4<br>
0012FF6C   003E0000</font></code></div>
<div><img src="http://www.anqn.com/pic/1/20090206011533707.png" border="0"></div>
<div> </div>
<div><br>
图9<br>
<br>
我们设下硬件中断，hr 0012FFA4，就是jiake.00400000 下面的第二行的地址。基本上在所有的机子上都是设在这个地址断的，不会因电脑的不同而下断地址不同的。OK，按F9跑程序，应该会被断下来在一个jmp的跳转上面，我这里被断下来的一行代码是<br>
0098285E&nbsp;&nbsp; - FFE0&nbsp;&nbsp; jmp  &nbsp;&nbsp;&nbsp; eax    ; jiake.0040256F。接下来，取消硬件断点，F8单步一下，看见OEP出来了，就在OEP上dump出来即可。脱出来之后一般都有很多无效指针，用ImportREC的&ldquo;跟踪级别1（反汇编）&rdquo;就能基本恢复出来了，最后rebuid PE一下吧，应该体积会小30%的样子。这样这个壳就完美地脱掉了啦。<br>
<br>
<br>
4、Armadillo 3.78 - 4.xx <br>
穿山甲是一款很强大的壳，尤其发展到了3.78版本之后更厉害，目前市面上的自动脱<br>
壳机好像是有一款叫dilloDIE的，我没有使用过，所以对其脱壳效果如何我也不敢妄下定论，下面我给大家讲下这个强壳3.78版本后的手工脱法吧。<br>
仍然，用挂了invisible.dll隐藏插件的OD载入加壳的程序，调试设置中勾上忽略所有异常，如果OD没有隐藏好的话载入后会看到如下的代码，不能来到入口点：</div>
<div class="blockcode"><span class="headactions" >复制内容到剪贴板</span>
<h5>代码:</h5>
<code ><font face="NSimsun">0045F5C3    F0:   prefix lock:<br>
0045F5C4    F0:C7&nbsp;&nbsp; ???  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;    ; 未知命令<br>
0045F5C6    C8 64678F  &nbsp;&nbsp;    enter   6764, 8F<br>
0045F5CA    06  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;&nbsp; push    es<br>
当然你也可以手工为OD添加要忽略异常的地址，程序成功载入之后入口点附近的情况应该是这样的：<br>
00456000 &gt;&nbsp;&nbsp; 60  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;&nbsp; pushad<br>
00456001    E8 00000000  &nbsp;&nbsp;&nbsp; call    00456006<br>
00456006    5D  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;&nbsp; pop  &nbsp;&nbsp;&nbsp; ebp<br>
00456007    50  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;&nbsp; push    eax<br>
00456008    51  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;&nbsp; push    ecx<br>
00456009    0FCA  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;   bswap   edx<br>
0045600B    F7D2  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;   not  &nbsp;&nbsp;&nbsp; edx<br>
0045600D    9C  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;&nbsp; pushfd</font></code></div>
<div>我们下硬件执行断点 HE GetModuleHandleA+5 ，为什么要下这个呢？因为穿山甲的编写机制，会在开头获取自身的实例句柄，以便于下一步的操作，如果用bp断可能会失败，所以我们用HE断。按下 shift+F9让程序跑起来，发现离开了程序的领空，到kernel32.dll里面去了：</div>
<div class="blockcode"><span class="headactions" >复制内容到剪贴板</span>
<h5>代码:</h5>
<code ><font face="NSimsun">7C80B6C6    837D 08 00  &nbsp;&nbsp;   cmp  &nbsp;&nbsp;&nbsp; dword ptr [ebp+8], 0   //停在这里<br>
7C80B6CA    74 18  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;&nbsp; je  &nbsp;&nbsp;   short 7C80B6E4<br>
7C80B6CC    FF75 08  &nbsp;&nbsp;  &nbsp;&nbsp;   push    dword ptr [ebp+8]<br>
7C80B6CF    E8 C0290000  &nbsp;&nbsp;&nbsp; call    7C80E094<br>
7C80B6D4    85C0  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;   test    eax, eax<br>
7C80B6D6    74 08  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;&nbsp; je  &nbsp;&nbsp;   short 7C80B6E0<br>
7C80B6D8    FF70 04  &nbsp;&nbsp;  &nbsp;&nbsp;   push    dword ptr [eax+4]<br>
7C80B6DB    E8 7D2D0000  &nbsp;&nbsp;&nbsp; call    GetModuleHandleW<br>
7C80B6E0    5D  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;&nbsp; pop  &nbsp;&nbsp;&nbsp; ebp<br>
7C80B6E1    C2 0400  &nbsp;&nbsp;  &nbsp;&nbsp;   retn    4<br>
7C80B6E4    64:A1 18000000&nbsp;&nbsp; mov  &nbsp;&nbsp;&nbsp; eax, dword ptr fs:[18]<br>
7C80B6EA    8B40 30  &nbsp;&nbsp;  &nbsp;&nbsp;   mov  &nbsp;&nbsp;&nbsp; eax, dword ptr [eax+30]<br>
7C80B6ED    8B40 08  &nbsp;&nbsp;  &nbsp;&nbsp;   mov  &nbsp;&nbsp;&nbsp; eax, dword ptr [eax+8]<br>
7C80B6F0&nbsp;&nbsp; ^ EB EE  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;&nbsp; jmp  &nbsp;&nbsp;&nbsp; short 7C80B6E0<br>
7C80B6F2    90  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;&nbsp; nop<br>
7C80B6F3    90  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;&nbsp; nop<br>
7C80B6F4    90  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;&nbsp; nop</font></code></div>
<div>我们看右下角的堆栈窗口，代码如下：</div>
<div class="blockcode"><span class="headactions" >复制内容到剪贴板</span>
<h5>代码:</h5>
<code ><font face="NSimsun">0012EAD8&nbsp;&nbsp; /0012EB10<br>
0012EADC&nbsp;&nbsp; |77C079B2&nbsp;&nbsp; 返回到 77C079B2 来自 kernel32.GetModuleHandleA<br>
0012EAE0&nbsp;&nbsp; |77BE31BC&nbsp;&nbsp; ASCII &quot;kernel32.dll&quot;<br>
0012EAE4&nbsp;&nbsp; |77C31A70<br>
0012EAE8&nbsp;&nbsp; |00000000</font></code></div>
<div>这个时候说明还不行，我们一直不停地按shift+F9跑，注意看堆栈的变化，每按一次shift+F9，堆栈的数据就会变一次的。我按了3次，发现堆栈的数据变成了如图10的样子：<br>
<br>
<img src="http://www.anqn.com/pic/1/20090206011534783.png" border="0"></div>
<div> </div>
<div><br>
图10<br>
<br>
&ldquo;00129508&nbsp;&nbsp; |00ADCEB8&nbsp;&nbsp; ASCII &quot;VirtualFree&quot;&rdquo;这一行出现了，说明有第一个小型的曙光出现了（其实这个是所谓的Magic Jump，CPU有明显的迟缓）。我们再按一下shift+F9看看，应该会看到如图11的情况了：<br>
<br>
<br>
<img style="width: 555px; height: 474px" height="572" src="http://www.anqn.com/pic/1/20090206011535733.png" width="514" border="0"></div>
<div> </div>
<div><br>
图11<br>
<br>
这个时候堆栈的内容是这样的：</div>
<div class="blockcode"><span class="headactions" >复制内容到剪贴板</span>
<h5>代码:</h5>
<code ><font face="NSimsun">00129260&nbsp;&nbsp; /00129500<br>
00129264&nbsp;&nbsp; |00AB5CE1&nbsp;&nbsp; 返回到 00AB5CE1 来自 kernel32.GetModuleHandleA<br>
00129268&nbsp;&nbsp; |001293B4&nbsp;&nbsp; ASCII &quot;kernel32.dll&quot;<br>
0012926C&nbsp;&nbsp; |00000000<br>
00129270&nbsp;&nbsp; |EC440000<br>
00129274&nbsp;&nbsp; |92960012</font></code></div>
<div>OK，我们返回程序的领空，Alt+F9，会看到这样的代码：</div>
<div class="blockcode"><span class="headactions" >复制内容到剪贴板</span>
<h5>代码:</h5>
<code ><font face="NSimsun">00AB5CE1    8B0D AC40AE00   mov  &nbsp;&nbsp;&nbsp; ecx, dword ptr [AE40AC]//停在这一行<br>
00AB5CE1    8B0D AC40AE00   mov  &nbsp;&nbsp;&nbsp; ecx, dword ptr [AE40AC]<br>
00AB5CE7    89040E  &nbsp;&nbsp;  &nbsp;&nbsp;    mov  &nbsp;&nbsp;&nbsp; dword ptr [esi+ecx], eax<br>
00AB5CEA    A1 AC40AE00  &nbsp;&nbsp;&nbsp; mov  &nbsp;&nbsp;&nbsp; eax, dword ptr [AE40AC]<br>
00AB5CEF    391C06  &nbsp;&nbsp;  &nbsp;&nbsp;    cmp  &nbsp;&nbsp;&nbsp; dword ptr [esi+eax], ebx<br>
00AB5CF2    75 16  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;&nbsp; jnz  &nbsp;&nbsp;&nbsp; short 00AB5D0A<br>
00AB5CF4    8D85 B4FEFFFF   lea  &nbsp;&nbsp;&nbsp; eax, dword ptr [ebp-14C]<br>
00AB5CFA    50  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;&nbsp; push    eax<br>
00AB5CFB    FF15 BC62AD00   call    dword ptr [AD62BC]  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;   ; kernel32.LoadLibraryA<br>
00AB5D01    8B0D AC40AE00   mov  &nbsp;&nbsp;&nbsp; ecx, dword ptr [AE40AC]<br>
00AB5D07    89040E  &nbsp;&nbsp;  &nbsp;&nbsp;    mov  &nbsp;&nbsp;&nbsp; dword ptr [esi+ecx], eax<br>
00AB5D0A    A1 AC40AE00  &nbsp;&nbsp;&nbsp; mov  &nbsp;&nbsp;&nbsp; eax, dword ptr [AE40AC]<br>
00AB5D0F    391C06  &nbsp;&nbsp;  &nbsp;&nbsp;    cmp  &nbsp;&nbsp;&nbsp; dword ptr [esi+eax], ebx<br>
00AB5D12    0F84 2F010000   je  &nbsp;&nbsp;   00AB5E47   //要改这行！！！<br>
00AB5D18    33C9  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;   xor  &nbsp;&nbsp;&nbsp; ecx, ecx[code]<br>
<br>
现在删除掉刚刚下的那个硬件执行断点，我们向下翻代码，我们要找一个未能实现的灰色大跳，一般不出意外的话是往下的第一个je那里，中间会经过一个灰色小跳 jnz的，我们这里也就是00AB5D12这行啦，把je改为jmp让它的跳转实现躲过加密检测。跳转实现后，别忙着运行，点上面的&ldquo;M&rdquo;按钮进内存镜像，然后在.text上面进下内存断点，右击这行-&ldquo;设置内存访问断点&rdquo;。（如图12）<br>
<br>
</font><img src="http://www.anqn.com/pic/1/20090206011538831.png" border="0"><font face="新宋体"> <br>
图12<br>
断点下完之后，回去shift+F9跑一下，程序的内存被断下来了。来到这里：<br>
[code]00AD0F4A    8900  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;   mov  &nbsp;&nbsp;&nbsp; dword ptr [eax], eax&nbsp;&nbsp; //停在这里<br>
00AD0F4C    90  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;&nbsp; nop<br>
00AD0F4D    E9 57010000  &nbsp;&nbsp;&nbsp; jmp  &nbsp;&nbsp;&nbsp; 00AD10A9<br>
00AD0F52    FF75 EC  &nbsp;&nbsp;  &nbsp;&nbsp;   push    dword ptr [ebp-14]<br>
00AD0F55    E8 F5E7FFFF  &nbsp;&nbsp;&nbsp; call    00ACF74F<br>
00AD0F5A    59  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;&nbsp; pop  &nbsp;&nbsp;&nbsp; ecx<br>
00AD0F5B    C3  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;&nbsp; retn<br>
00AD0F5C    8B65 E8  &nbsp;&nbsp;  &nbsp;&nbsp;   mov  &nbsp;&nbsp;&nbsp; esp, dword ptr [ebp-18]<br>
00AD0F5F    70 07  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;&nbsp; jo  &nbsp;&nbsp;   short 00AD0F68<br>
00AD0F61    7C 03  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;&nbsp; jl  &nbsp;&nbsp;   short 00AD0F66<br>
00AD0F63    EB 05  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;&nbsp; jmp  &nbsp;&nbsp;&nbsp; short 00AD0F6A<br>
00AD0F65    E8 74FBEBF9  &nbsp;&nbsp;&nbsp; call    FA990ADE<br>
00AD0F6A    A1 14A3AE00  &nbsp;&nbsp;&nbsp; mov  &nbsp;&nbsp;&nbsp; eax, dword ptr [AEA314]<br>
00AD0F6F    85C0  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;   test    eax, eax<br>
00AD0F71    0F84 0C010000   je  &nbsp;&nbsp;   00AD1083<br>
00AD0F77    8B50 04  &nbsp;&nbsp;  &nbsp;&nbsp;   mov  &nbsp;&nbsp;&nbsp; edx, dword ptr [eax+4]<br>
00AD0F7A    8B0D D8A3AE00   mov  &nbsp;&nbsp;&nbsp; ecx, dword ptr [AEA3D8]  &nbsp;&nbsp;  &nbsp;&nbsp;    ; PortScan.00400000  &nbsp;&nbsp;   //看见基地址了吧<br>
00AD0F80    3BD1  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;   cmp  &nbsp;&nbsp;&nbsp; edx, ecx<br>
00AD0F82    8B1D DCA3AE00   mov  &nbsp;&nbsp;&nbsp; ebx, dword ptr [AEA3DC]  &nbsp;&nbsp;  &nbsp;&nbsp;    ; PortScan.004B6000</font></code></div>
<div>接下来进内存镜像把刚刚的内存断点删除掉，再回去。一路F8往下单步直到看见一行内容为&ldquo;Call ECX&rdquo;的时候停下来（途中会经过一到两个call，不要跟入），用F7跟入，OK，发现OEP出现了，dump出来即可。接下来就是Import REC修复指针了，当然，这是后话……</div> <a href="http://hi.baidu.com/gtomp/blog/item/bc92927e9799a6320cd7dac1.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/gtomp/blog/category/%BA%DA%BF%CD%B1%E0%B3%CC">黑客编程</a>&nbsp;<a href="http://hi.baidu.com/gtomp/blog/item/bc92927e9799a6320cd7dac1.html#comment">查看评论</a>]]></description>
        <pubDate>2009/11/22  09:02 A.M.</pubDate>
        <category><![CDATA[黑客编程]]></category>
        <author><![CDATA[GTOMP]]></author>
		<guid>http://hi.baidu.com/gtomp/blog/item/bc92927e9799a6320cd7dac1.html</guid>
</item>

<item>
        <title><![CDATA[浅谈几款中强壳的手工脱法 一]]></title>
        <link><![CDATA[http://hi.baidu.com/gtomp/blog/item/4d58d0d34a35d2d5a9ec9ac1.html]]></link>
        <description><![CDATA[
		
		<div>作者：tr0j4n&nbsp;&nbsp;  这篇文章发表好一阵子了，一直捏在手里没发，是我当时初学脱壳的一点笔记，现在回头看去，仍有一些稚嫩，请勿见笑当时的我<br>
<br>
前一阵子忙着泡坛子，发现一些坛子里面的朋友在不断地发求助帖，询问一些中强保护壳的手工脱法，工具有时版本较低，而且不如手工效果完美。于是我就把一些问题整合了下，写了这篇文章，希望对大家有点帮助，本文谈到了一些壳的手工脱法，以前的杂志里面提到的也比较少，像UPX还有Aspack这样的弱壳就不属本文的<span class="t_tag" href="http://www.7747.net/Article/200902/tag.php?name=%E8%AE%A8%E8%AE%BA">讨论</span>范畴了。这里我用到的东西是OllyICE（带invisible.dll隐藏插件和OllyDump脱壳插件），PEID（查壳工具），ImportREC.exe（输入表修复）。<br>
1、nSpack V2.x<br>
<img src="http://www.anqn.com/pic/1/20090206011522503.png" border="0"></div>
<div> </div>
<div><br>
图1<br>
<br>
这是一个US-ASCII的解密工具，一般我都用它来进行网马的解密工作（如图1）。首先，OD载入，来到如下代码处：</div>
<div class="blockcode"><span class="headactions" >复制内容到剪贴板</span>
<h5>代码:</h5>
<code ><font face="NSimsun">00492554 &gt;&nbsp;&nbsp; 9C  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;&nbsp; pushfd<br>
00492555    60  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;&nbsp; pushad<br>
00492556    E8 00000000  &nbsp;&nbsp;&nbsp; call    0049255B<br>
0049255B    5D  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;&nbsp; pop  &nbsp;&nbsp;&nbsp; ebp<br>
0049255C    B8 07000000  &nbsp;&nbsp;&nbsp; mov  &nbsp;&nbsp;&nbsp; eax, 7<br>
00492561    2BE8  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;   sub  &nbsp;&nbsp;&nbsp; ebp, eax<br>
00492563    8DB5 F8FBFFFF   lea  &nbsp;&nbsp;&nbsp; esi, dword ptr [ebp-408]<br>
00492569    8A06  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;   mov  &nbsp;&nbsp;&nbsp; al, byte ptr [esi]<br>
0049256B    3C 00  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;&nbsp; cmp  &nbsp;&nbsp;&nbsp; al, 0<br>
0049256D    74 12  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;&nbsp; je  &nbsp;&nbsp;   short 00492581</font></code></div>
<div>在00492556这里有一个call，不怕它，它不像Aspack，一开头第二行就会遇到一个call，一定要飞过那个call才好继续往下走，这里没关系，一直F8向下，不必害怕，所有的跳转基本上都是向下或是未实现的跳转，来到这里，小心下：</div>
<div class="blockcode"><span class="headactions" >复制内容到剪贴板</span>
<h5>代码:</h5>
<code ><font face="NSimsun">004925E7   /75 0A  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;&nbsp; jnz  &nbsp;&nbsp;&nbsp; short 004925F3<br>
004925E9   |83C7 04  &nbsp;&nbsp;  &nbsp;&nbsp;   add  &nbsp;&nbsp;&nbsp; edi, 4<br>
004925EC   |B9 00000000  &nbsp;&nbsp;&nbsp; mov  &nbsp;&nbsp;&nbsp; ecx, 0<br>
004925F1   |EB 16  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;&nbsp; jmp  &nbsp;&nbsp;&nbsp; short 00492609<br>
004925F3   \B9 01000000  &nbsp;&nbsp;&nbsp; mov  &nbsp;&nbsp;&nbsp; ecx, 1<br>
004925F8    033B  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;   add  &nbsp;&nbsp;&nbsp; edi, dword ptr [ebx]</font></code></div>
<div>004925E7这个jnz是死跳，没有必要害怕，还是往下走，但是到了004925F1就要注意了，这个无条件跳转不光是可以实现的，而且跨度挺大，我们让它跳下去，又来到了这里：</div>
<div class="blockcode"><span class="headactions" >复制内容到剪贴板</span>
<h5>代码:</h5>
<code ><font face="NSimsun">00492609    57  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;&nbsp; push    edi  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;   ; Ascii.00492E88<br>
0049260A    51  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;&nbsp; push    ecx<br>
0049260B    52  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;&nbsp; push    edx<br>
0049260C    53  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;&nbsp; push    ebx&nbsp;&nbsp; //一连串入栈<br>
0049260D    FFB5 60FCFFFF   push    dword ptr [ebp-3A0]<br>
00492613    FFB5 5CFCFFFF   push    dword ptr [ebp-3A4]<br>
00492619    8BD6  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;   mov  &nbsp;&nbsp;&nbsp; edx, esi<br>
0049261B    8BCF  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;   mov  &nbsp;&nbsp;&nbsp; ecx, edi<br>
0049261D    8B85 DCFBFFFF   mov  &nbsp;&nbsp;&nbsp; eax, dword ptr [ebp-424]<br>
00492623    05 A9050000  &nbsp;&nbsp;&nbsp; add  &nbsp;&nbsp;&nbsp; eax, 5A9<br>
00492628    FFD0  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;   call    eax    //这里有明显停顿<br>
0049262A    5B  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;&nbsp; pop  &nbsp;&nbsp;&nbsp; ebx<br>
0049262B    5A  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;&nbsp; pop  &nbsp;&nbsp;&nbsp; edx<br>
0049262C    59  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;&nbsp; pop  &nbsp;&nbsp;&nbsp; ecx  &nbsp;&nbsp;&nbsp; //一连串的出栈<br>
0049262D    5F  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;&nbsp; pop  &nbsp;&nbsp;&nbsp; edi    <br>
0049262E    83F9 00  &nbsp;&nbsp;  &nbsp;&nbsp;   cmp  &nbsp;&nbsp;&nbsp; ecx, 0<br>
00492631    74 05  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;&nbsp; je  &nbsp;&nbsp;   short 00492638<br>
00492633    83C3 08  &nbsp;&nbsp;  &nbsp;&nbsp;   add  &nbsp;&nbsp;&nbsp; ebx, 8<br>
00492636&nbsp;&nbsp; ^ EB C5  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;&nbsp; jmp  &nbsp;&nbsp;&nbsp; short 004925FD   //这个跳转很厉害，可实现！<br>
00492638    68 00800000  &nbsp;&nbsp;&nbsp; push    8000  &nbsp;&nbsp;   //断点-条件运行到所选<br>
0049263D    6A 00  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;&nbsp; push    0<br>
0049263F    FFB5 DCFBFFFF   push    dword ptr [ebp-424]<br>
00492645    FF95 60FCFFFF   call    dword ptr [ebp-3A0]<br>
0049264B    8DB5 E4FBFFFF   lea  &nbsp;&nbsp;&nbsp; esi, dword ptr [ebp-41C]<br>
00492651    8B4E 08  &nbsp;&nbsp;  &nbsp;&nbsp;   mov  &nbsp;&nbsp;&nbsp; ecx, dword ptr [esi+8]<br>
00492654    8D56 10  &nbsp;&nbsp;  &nbsp;&nbsp;   lea  &nbsp;&nbsp;&nbsp; edx, dword ptr [esi+10]<br>
00492657    8B36  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;   mov  &nbsp;&nbsp;&nbsp; esi, dword ptr [esi]<br>
00492659    8BFE  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;   mov  &nbsp;&nbsp;&nbsp; edi, esi<br>
0049265B    83F9 00  &nbsp;&nbsp;  &nbsp;&nbsp;   cmp  &nbsp;&nbsp;&nbsp; ecx, 0<br>
0049265E    74 3F  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;&nbsp; je  &nbsp;&nbsp;   short 0049269F<br>
00492660    8A07  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;   mov  &nbsp;&nbsp;&nbsp; al, byte ptr [edi]<br>
00492662    47  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;&nbsp; inc  &nbsp;&nbsp;&nbsp; edi<br>
00492663    2C E8  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;&nbsp; sub  &nbsp;&nbsp;&nbsp; al, 0E8<br>
00492665    3C 01  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;&nbsp; cmp  &nbsp;&nbsp;&nbsp; al, 1<br>
00492667&nbsp;&nbsp; ^ 77 F7  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;&nbsp; ja short 00492660  &nbsp;&nbsp;&nbsp; //这个又是可以实现的，不能让它跳！<br>
00492669    8B07  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;   mov  &nbsp;&nbsp;&nbsp; eax, dword ptr [edi]   //断点-条件运行到所选<br>
0049266B    807A 01 00  &nbsp;&nbsp;   cmp  &nbsp;&nbsp;&nbsp; byte ptr [edx+1], 0<br>
0049266F    74 14  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;&nbsp; je  &nbsp;&nbsp;   short 00492685<br>
00492671    8A1A  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;   mov  &nbsp;&nbsp;&nbsp; bl, byte ptr [edx]<br>
00492673    381F  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;   cmp  &nbsp;&nbsp;&nbsp; byte ptr [edi], bl<br>
00492675&nbsp;&nbsp; ^ 75 E9  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;&nbsp; jnz  &nbsp;&nbsp;&nbsp; short 00492660  &nbsp;&nbsp;  &nbsp;&nbsp;   //死跳，不怕<br>
00492677    8A5F 04  &nbsp;&nbsp;  &nbsp;&nbsp;   mov  &nbsp;&nbsp;&nbsp; bl, byte ptr [edi+4]<br>
0049267A    66:C1E8 08  &nbsp;&nbsp;   shr  &nbsp;&nbsp;&nbsp; ax, 8<br>
0049267E    C1C0 10  &nbsp;&nbsp;  &nbsp;&nbsp;   rol  &nbsp;&nbsp;&nbsp; eax, 10<br>
00492681    86C4  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;   xchg    ah, al<br>
00492683    EB 0A  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;&nbsp; jmp  &nbsp;&nbsp;&nbsp; short 0049268F  &nbsp;&nbsp;&nbsp; //直接跳到下面<br>
00492685    8A5F 04  &nbsp;&nbsp;  &nbsp;&nbsp;   mov  &nbsp;&nbsp;&nbsp; bl, byte ptr [edi+4]<br>
00492688    86C4  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;   xchg    ah, al<br>
0049268A    C1C0 10  &nbsp;&nbsp;  &nbsp;&nbsp;   rol  &nbsp;&nbsp;&nbsp; eax, 10<br>
0049268D    86C4  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;   xchg    ah, al<br>
0049268F    2BC7  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;   sub  &nbsp;&nbsp;&nbsp; eax, edi  &nbsp;&nbsp;    //由上面跳过来<br>
00492691    03C6  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;   add  &nbsp;&nbsp;&nbsp; eax, esi<br>
00492693    8907  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;   mov  &nbsp;&nbsp;&nbsp; dword ptr [edi], eax<br>
00492695    83C7 05  &nbsp;&nbsp;  &nbsp;&nbsp;   add  &nbsp;&nbsp;&nbsp; edi, 5<br>
00492698    80EB E8  &nbsp;&nbsp;  &nbsp;&nbsp;   sub  &nbsp;&nbsp;&nbsp; bl, 0E8<br>
0049269B    8BC3  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;   mov  &nbsp;&nbsp;&nbsp; eax, ebx<br>
0049269D&nbsp;&nbsp; ^ E2 C6  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;&nbsp; loopd   short 00492665   //当心！循环！<br>
0049269F    E8 3A010000  &nbsp;&nbsp;&nbsp; call    004927DE  &nbsp;&nbsp;&nbsp; //断点-条件运行到所选<br>
004926A4    8D8D F8FBFFFF   lea  &nbsp;&nbsp;&nbsp; ecx, dword ptr [ebp-408]<br>
004926AA    8B41 08  &nbsp;&nbsp;  &nbsp;&nbsp;   mov  &nbsp;&nbsp;&nbsp; eax, dword ptr [ecx+8]<br>
004926AD    83F8 00  &nbsp;&nbsp;  &nbsp;&nbsp;   cmp  &nbsp;&nbsp;&nbsp; eax, 0<br>
004926B0    0F84 81000000   je    00492737    //很厉害的大跳转，过了循环才能看到<br>
004926B6    8BF2  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;   mov  &nbsp;&nbsp;&nbsp; esi, edx<br>
004926B8    2B71 10  &nbsp;&nbsp;  &nbsp;&nbsp;   sub  &nbsp;&nbsp;&nbsp; esi, dword ptr [ecx+10]</font></code></div>
<div>00492636这行跳转不能让它跳上去，要在下面那行00492638按下F4，同样，00492667也是可实现的上跳，在下面的 00492669上按F4，到了0049269D当心下，有个loopd，直接在下面那个call上按F4，004926B0处的大跳转带我们来到下面：</div>
<div class="blockcode"><span class="headactions" >复制内容到剪贴板</span>
<h5>代码:</h5>
<code ><font face="NSimsun">00492737    8DB5 B4FBFFFF   lea  &nbsp;&nbsp;&nbsp; esi, dword ptr [ebp-44C]<br>
0049273D    8B16  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;   mov  &nbsp;&nbsp;&nbsp; edx, dword ptr [esi]<br>
0049273F    8DB5 10FCFFFF   lea  &nbsp;&nbsp;&nbsp; esi, dword ptr [ebp-3F0]<br>
00492745    8A06  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;   mov  &nbsp;&nbsp;&nbsp; al, byte ptr [esi]<br>
00492747    3C 01  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;&nbsp; cmp  &nbsp;&nbsp;&nbsp; al, 1<br>
00492749    75 3F  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;&nbsp; jnz  &nbsp;&nbsp;&nbsp; short 0049278A<br>
0049274B    0356 04  &nbsp;&nbsp;  &nbsp;&nbsp;   add  &nbsp;&nbsp;&nbsp; edx, dword ptr [esi+4]<br>
0049274E    56  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;&nbsp; push    esi<br>
0049274F    52  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;&nbsp; push    edx<br>
00492750    56  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;&nbsp; push    esi<br>
00492751    6A 04  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;&nbsp; push    4<br>
00492753    68 00010000  &nbsp;&nbsp;&nbsp; push    100<br>
00492758    52  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;&nbsp; push    edx<br>
00492759    FF95 58FCFFFF   call    dword ptr [ebp-3A8]<br>
0049275F    5F  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;&nbsp; pop  &nbsp;&nbsp;&nbsp; edi<br>
00492760    5E  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;&nbsp; pop  &nbsp;&nbsp;&nbsp; esi<br>
00492761    83F8 01  &nbsp;&nbsp;  &nbsp;&nbsp;   cmp  &nbsp;&nbsp;&nbsp; eax, 1<br>
00492764    0F85 BD010000   jnz  &nbsp;&nbsp;&nbsp; 00492927<br>
0049276A    83C6 08  &nbsp;&nbsp;  &nbsp;&nbsp;   add  &nbsp;&nbsp;&nbsp; esi, 8<br>
0049276D    B9 08000000  &nbsp;&nbsp;&nbsp; mov  &nbsp;&nbsp;&nbsp; ecx, 8<br>
00492772    F3:A4  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;&nbsp; rep  &nbsp;&nbsp;&nbsp; movs byte ptr es:[edi], byte ptr&gt;<br>
00492774    83EE 0C  &nbsp;&nbsp;  &nbsp;&nbsp;   sub  &nbsp;&nbsp;&nbsp; esi, 0C<br>
00492777    83EF 08  &nbsp;&nbsp;  &nbsp;&nbsp;   sub  &nbsp;&nbsp;&nbsp; edi, 8<br>
0049277A    56  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;&nbsp; push    esi<br>
0049277B    FF76 FC  &nbsp;&nbsp;  &nbsp;&nbsp;   push    dword ptr [esi-4]<br>
0049277E    68 00010000  &nbsp;&nbsp;&nbsp; push    100<br>
00492783    57  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;&nbsp; push    edi<br>
00492784    FF95 58FCFFFF   call    dword ptr [ebp-3A8]<br>
0049278A    55  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;&nbsp; push    ebp<br>
0049278B    5B  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;&nbsp; pop  &nbsp;&nbsp;&nbsp; ebx</font></code></div>
<div><img style="width: 572px; height: 305px" height="335" src="http://www.anqn.com/pic/1/20090206011523703.png" width="615" border="0"></div>
<div> </div>
<div><br>
图2<br>
<br>
一路向下，非常爽，我看到了0049278A这一行，当时我就以为这个是真的ebp了（如图2），直接在这行上面 dump，可是脱出来的东西Ascii2.exe大是变大了（231KVB到745KB），可peid却说什么也没有发现，很晕，于是我重新载入 Ascii2.exe继续向下跑：</div>
<div class="blockcode"><span class="headactions" >复制内容到剪贴板</span>
<h5>代码:</h5>
<code ><font face="NSimsun">004927BA    5A  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;&nbsp; pop  &nbsp;&nbsp;&nbsp; edx<br>
004927BB    5B  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;&nbsp; pop  &nbsp;&nbsp;&nbsp; ebx<br>
004927BC    59  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;&nbsp; pop  &nbsp;&nbsp;&nbsp; ecx<br>
004927BD    5E  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;&nbsp; pop  &nbsp;&nbsp;&nbsp; esi<br>
004927BE    83C3 0C  &nbsp;&nbsp;  &nbsp;&nbsp;   add  &nbsp;&nbsp;&nbsp; ebx, 0C<br>
004927C1&nbsp;&nbsp; ^ E2 E1  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;&nbsp; loopd   short 004927A4    //这个循环不会实现，没事<br>
004927C3    B8 00000000  &nbsp;&nbsp;&nbsp; mov  &nbsp;&nbsp;&nbsp; eax, 0<br>
004927C8    83F8 00  &nbsp;&nbsp;  &nbsp;&nbsp;   cmp  &nbsp;&nbsp;&nbsp; eax, 0<br>
004927CB    74 0A  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;&nbsp; je  &nbsp;&nbsp;   short 004927D7<br>
004927CD    61  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;&nbsp; popad<br>
004927CE    9D  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;&nbsp; popfd<br>
004927CF    B8 01000000  &nbsp;&nbsp;&nbsp; mov  &nbsp;&nbsp;&nbsp; eax, 1<br>
004927D4    C2 0C00  &nbsp;&nbsp;  &nbsp;&nbsp;   retn    0C<br>
004927D7    61  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;&nbsp; popad   //曙光出现了！<br>
004927D8    9D  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;&nbsp; popfd<br>
004927D9&nbsp;&nbsp; - E9 E225FCFF  &nbsp;&nbsp;&nbsp; jmp  &nbsp;&nbsp;&nbsp; 00454DC0<br>
004927DE    8BB5 ACFBFFFF   mov  &nbsp;&nbsp;&nbsp; esi, dword ptr [ebp-454]</font></code></div>
<div>载入Ascii2.exe后跑了没多久，就看到了004927D7这行居然有个popad！这个和UPX一个德行，记得我以前搞UPX手工脱壳的时候只要查找popad命令就可以了，老方法，在004927D8这行&ldquo;断点&rdquo;→&ldquo;条件运行到所选&rdquo;，然后004927D9的那个跨区段的jmp会带我们来到真正的入口点（如图3）。<br>
<br>
<img style="width: 567px; height: 349px" height="306" src="http://www.anqn.com/pic/1/20090206011525272.png" width="495" border="0"></div>
<div> </div>
<div><br>
图3<br>
<br>
别看这边都是ASCII码的表示，其实显式的OEP是可以通过OD的代码分析功能得出的，我直接在00454DC0上面dump出一个Ascii3.exe来，忽忽，脱壳成功了（如图4）：<br>
<br>
<img src="http://www.anqn.com/pic/1/20090206011526299.png" border="0"></div>
<div> </div>
<div><br>
图4<br>
<br>
2、WinUpack 0.93<br>
WinUpack是国产的一款比较猛的壳，可以检测调试器，查区段都不好查的，有时甚至<br>
用一些版本的PEID查壳还会出现PEID崩溃的情景哦。所以我开始提到的那个OD的invisible.dll插件就非常有用了，这个插件可以把OD的 caption变成&ldquo;ICEODBG&rdquo;，躲过侦查壳的调试器检测，当时是看雪的老大kanxue向我推荐的，非常受用。我下面用的这个PEID是修改过的（如图5）。<br>
<br>
<img src="http://www.anqn.com/pic/1/20090206011528392.png" border="0"></div>
<div> </div>
<div><br>
图5<br>
<br>
首先OD载入，不出意外OD就会提示你32位可执行文件格式错误或是格式未知和无<br>
法在内存中分配，这是很正常的现象，不管它继续载入。载入完毕后一般会看到如下的代码：</div>
<div class="blockcode"><span class="headactions" >复制内容到剪贴板</span>
<h5>代码:</h5>
<code ><font face="NSimsun">00401018 &gt;&nbsp;&nbsp; BE B0114000  &nbsp;&nbsp;&nbsp; mov  &nbsp;&nbsp;&nbsp; esi, 004011B0<br>
0040101D    AD  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;&nbsp; lods    dword ptr [esi]<br>
0040101E    50  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;&nbsp; push    eax<br>
0040101F    FF76 34  &nbsp;&nbsp;  &nbsp;&nbsp;   push    dword ptr [esi+34]<br>
00401022    EB 7C  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;&nbsp; jmp  &nbsp;&nbsp;&nbsp; short 004010A0<br>
00401024    48  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;&nbsp; dec  &nbsp;&nbsp;&nbsp; eax<br>
00401025    010F  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;   add  &nbsp;&nbsp;&nbsp; dword ptr [edi], ecx</font></code></div>
<div>这个第二行比较关键，定义了一个esi指针，这个esi的指针里面的东西我们来看下吧，按一下F8，程序顺利运行到了第二行，这时可以看到OD中是如下情况，显示内容为ds:[esi]=[004011B0]=00401620（如图6）：<br>
<br>
<img height="449" src="http://www.anqn.com/pic/1/20090206011529870.png" width="557" border="0"></div>
<div> </div>
<div><br>
图6</div> <a href="http://hi.baidu.com/gtomp/blog/item/4d58d0d34a35d2d5a9ec9ac1.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/gtomp/blog/category/%BA%DA%BF%CD%B1%E0%B3%CC">黑客编程</a>&nbsp;<a href="http://hi.baidu.com/gtomp/blog/item/4d58d0d34a35d2d5a9ec9ac1.html#comment">查看评论</a>]]></description>
        <pubDate>2009/11/22  09:01 A.M.</pubDate>
        <category><![CDATA[黑客编程]]></category>
        <author><![CDATA[GTOMP]]></author>
		<guid>http://hi.baidu.com/gtomp/blog/item/4d58d0d34a35d2d5a9ec9ac1.html</guid>
</item>

<item>
        <title><![CDATA[食堂打零工的MM 清纯可人]]></title>
        <link><![CDATA[http://hi.baidu.com/gtomp/blog/item/3a4f14d3876d770a3af3cf84.html]]></link>
        <description><![CDATA[
		
		<p><font color="#cc0000" size="3">食堂打零工的，很…M 很清纯吧……时食堂里 最M的…<img src="http://img.baidu.com/hi/jx/j_0002.gif"> 如果想知道有多可人…用我同学的一句话来形容她吧！</font></p>
<p><font color="#cc0000" size="3">我看到她的眼睛时，我的魂儿~ 都被勾走了…… <img src="http://img.baidu.com/hi/jx/j_0039.gif">  <font color="#3d85c6">我对她 可没有兴趣哦 大家别看我……别鄙视我…我真的没兴趣……<img src="http://img.baidu.com/hi/jx/j_0019.gif"></font></font></p> <a href="http://hi.baidu.com/gtomp/blog/item/3a4f14d3876d770a3af3cf84.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/gtomp/blog/category/%D5%BE%B3%A4%D0%C4%C9%F9">站长心声</a>&nbsp;<a href="http://hi.baidu.com/gtomp/blog/item/3a4f14d3876d770a3af3cf84.html#comment">查看评论</a>]]></description>
        <pubDate>2009/11/21  03:37 P.M.</pubDate>
        <category><![CDATA[站长心声]]></category>
        <author><![CDATA[GTOMP]]></author>
		<guid>http://hi.baidu.com/gtomp/blog/item/3a4f14d3876d770a3af3cf84.html</guid>
</item>

<item>
        <title><![CDATA[在下一场暴雪吧！]]></title>
        <link><![CDATA[http://hi.baidu.com/gtomp/blog/item/529ff01bee02b6dfac6e75e6.html]]></link>
        <description><![CDATA[
		
		在下一场暴雪吧！前几天，下了暴雪。在下吧<img src="http://img.baidu.com/hi/jx/j_0028.gif"> 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/gtomp/blog/category/%D5%BE%B3%A4%D0%C4%C9%F9">站长心声</a>&nbsp;<a href="http://hi.baidu.com/gtomp/blog/item/529ff01bee02b6dfac6e75e6.html#comment">查看评论</a>]]></description>
        <pubDate>2009/11/14  03:34 P.M.</pubDate>
        <category><![CDATA[站长心声]]></category>
        <author><![CDATA[GTOMP]]></author>
		<guid>http://hi.baidu.com/gtomp/blog/item/529ff01bee02b6dfac6e75e6.html</guid>
</item>

<item>
        <title><![CDATA[啊呀呀呀呀呀 ……学校停课了！暴风雪]]></title>
        <link><![CDATA[http://hi.baidu.com/gtomp/blog/item/e50147387023372996ddd8e4.html]]></link>
        <description><![CDATA[
		
		<p><font color="#ff0000" size="5"><span><img class="blogimg" border="0" small="0" src="http://hiphotos.baidu.com/gtomp/pic/item/80d0d1dec494577a94ee37af.jpg"><br>
</span>啊呀呀呀呀呀 ……学校停课了！暴风雪！百年难见的 暴雪 学校停课了……<img src="http://img.baidu.com/hi/jx/j_0028.gif"></font></p>
<p><font color="#ff0000" size="5">看下面图片：真实：<span><img class="blogimg" border="0" small="0" src="http://hiphotos.baidu.com/gtomp/pic/item/5d0a65101f3113d2c3ce79b7.jpg">当我一脚……踏进雪里……出不来了…… 有我的半个膝盖这么高……郁闷死<br>
</span></font></p> <a href="http://hi.baidu.com/gtomp/blog/item/e50147387023372996ddd8e4.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/gtomp/blog/category/%D5%BE%B3%A4%D0%C4%C9%F9">站长心声</a>&nbsp;<a href="http://hi.baidu.com/gtomp/blog/item/e50147387023372996ddd8e4.html#comment">查看评论</a>]]></description>
        <pubDate>2009/11/12  09:17 A.M.</pubDate>
        <category><![CDATA[站长心声]]></category>
        <author><![CDATA[GTOMP]]></author>
		<guid>http://hi.baidu.com/gtomp/blog/item/e50147387023372996ddd8e4.html</guid>
</item>


</channel>
</rss>