<?xml version="1.0" standalone="yes"?>
<?xml-stylesheet type="text/xsl" href="css/rss.xslt"?>
<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>redwolf在路上 - 加密解密</title><link>http://www.redwolf.com.cn/redwolf/</link><description>红狼咖啡吧,红狼,咖啡,redwolf,IT,考试认证,网络,网络安全,BLOG,博客,情感,狼,注册 破解， - </description><generator>RainbowSoft Studio Z-Blog 1.8 Arwen Build 81206</generator><language>zh-CN</language><copyright>Copyright 2005-2008 redwolf.com.cn  Rights Reserved.</copyright><pubDate>Thu, 09 Sep 2010 07:44:28 +0800</pubDate><item><title>利用ESP定律脱 UPX 0.89.6 - 1.02 / 1.05 - 1.24 壳实例[转]</title><author>redwolf@redwolf.com.cn (redwolf)</author><link>http://www.redwolf.com.cn/redwolf/post/367.html</link><pubDate>Sun, 10 May 2009 11:12:00 +0800</pubDate><guid>http://www.redwolf.com.cn/redwolf/post/367.html</guid><description><![CDATA[<p>利用ESP定律脱 UPX 0.89.6 - 1.02 / 1.05 - 1.24 壳实例   <br />利用ESP定律不仅使得脱压缩壳变得非常简单，而且可以应付不少加密壳。    <br />简单地说，ESP定律就是利用了堆栈平衡的原理。    <br />可以把壳假设为一个子程序，当壳把代码解压前和解压后，必须要做的是遵循堆栈平衡的原理。    <br />让ESP执行到OEP时，使ESP和壳初始入栈时的ESP相一致。    <br />ESP定律的使用方法：载入加壳程序，当ESP中的值第一次改变时记下这个值。    <br />对这个值下的硬件访问断点，运行程序后，一般的压缩壳都会停在待转向OEP的那条语句上。    <br />利用ESP定律脱 UPX 0.89.6 - 1.02 / 1.05 - 1.24 壳实例    <br />1.OllyDbg打开加了UPX壳的Crackme.exe    <br />地址&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; HEX数据&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 反汇编&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 注释    <br />00457B40&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 60&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; PUSHAD&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 程序的入口点    <br />寄存器 （ FFU ）    <br />EAX 00000000    <br />ECX 0012FFB0    <br />EDX 7C92EB94 ntdll.KiFastSystemCallRet    <br />EBX 7FFDD000    <br />ESP 0012FFC4    <br />EBP 0012FFF0    <br />ESI FFFFFFFF    <br />EDI 7C930738 ntdll.7C930738    <br />EIP 00457B40 Crackme.&lt;模块入口点&gt;    <br />C 0 ES 0023 32位 0(FFFFFFFF)    <br />P 1 CS 001B 32位 0(FFFFFFFF)    <br />A 0 SS 0023 32位 0(FFFFFFFF)    <br />Z 1 DS 0023 32位 0(FFFFFFFF)    <br />S 0 FS 003B 32位 7FFDF000(FFF)    <br />T 0 GS 0000 NULL    <br />D 0    <br />O 0 LastErr ERROR_SUCCESS (00000000)    <br />EFL 00000246 (NO,NB,E,BE,NS,PE,GE,LE)    <br />ST0 empty -UNORM BCE0 01050104 00000000    <br />ST1 empty 0.0    <br />ST2 empty 0.0    <br />ST3 empty 0.0    <br />ST4 empty 0.0    <br />ST5 empty 0.0    <br />ST6 empty 0.0    <br />ST7 empty 0.0    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 3 2 1 0&#160;&#160;&#160;&#160;&#160; E S P U O Z D I    <br />FST 0000 Cond 0 0 0 0 Err 0 0 0 0 0 0 0 0 (GT)    <br />FCW 027F Prec NEAR,53 掩码&#160;&#160;&#160; 1 1 1 1 1 1    <br />2.按F8键单步运行到第二句    <br />地址&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; HEX数据&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 反汇编    <br />00457B41&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; BE 00B04300&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; MOV ESI,Crackme.0043B000    <br />发现ESP寄存器中的值发生变化 -- 变为0012FFA4 （ 硬件不同 - 此值可能不相同 ）    <br />EAX 00000000    <br />ECX 0012FFB0    <br />EDX 7C92EB94 ntdll.KiFastSystemCallRet    <br />EBX 7FFDD000    <br />ESP 0012FFA4    <br />EBP 0012FFF0    <br />ESI FFFFFFFF    <br />EDI 7C930738 ntdll.7C930738    <br />EIP 00457B41 Crackme.00457B41    <br />C 0 ES 0023 32位 0(FFFFFFFF)    <br />P 1 CS 001B 32位 0(FFFFFFFF)    <br />A 0 SS 0023 32位 0(FFFFFFFF)    <br />Z 1 DS 0023 32位 0(FFFFFFFF)    <br />S 0 FS 003B 32位 7FFDF000(FFF)    <br />T 0 GS 0000 NULL    <br />D 0    <br />O 0 LastErr ERROR_SUCCESS (00000000)    <br />EFL 00000246 (NO,NB,E,BE,NS,PE,GE,LE)    <br />ST0 empty -UNORM BCE0 01050104 00000000    <br />ST1 empty 0.0    <br />ST2 empty 0.0    <br />ST3 empty 0.0    <br />ST4 empty 0.0    <br />ST5 empty 0.0    <br />ST6 empty 0.0    <br />ST7 empty 0.0    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 3 2 1 0&#160;&#160;&#160;&#160;&#160; E S P U O Z D I    <br />FST 0000 Cond 0 0 0 0 Err 0 0 0 0 0 0 0 0 (GT)    <br />FCW 027F Prec NEAR,53 掩码&#160;&#160;&#160; 1 1 1 1 1 1    <br />3.HR 地址 -- 设置硬件访问断点    <br />在命令行输入 hr 0012FFA4    <br />[ Enter... ]    <br />然后按F9键调用程序运行，    <br />可以发现已经来到了 00457C65 - E9 D295FAFF&#160;&#160;&#160;&#160; JMP Crackme.0040123C 地址处，    <br />这正好是跳向OEP的那条指令Jmp语句，    <br />再按F8键跳向0040123C地址处。    <br />4：对其右键，选择“用OllyDump脱壳调试进程”，    <br />起始地址一般都是400000，文件大小自动识别即可。    <br />入口点地址也自动定位到了程序OEP的偏移地址123C处，    <br />代码起始RVA和数据起始也按默认识别的就可以。    <br />5：勾选下面的重建输入表，OllyDump会自动修复引入表。    <br />一般选择方式1，如果方式1脱壳后修复的效果不理想，可以尝试方式2，    <br />不过最好还是用专业的 Import REConstructor 修复最好。    <br />6：单击“脱壳”按钮    <br />用PEiD扫描一下，检测到程序是用 Microsoft Visual Basic 5.0 / 6.0 编写的。    <br />[ Finish... ]    <br />可以看出，ESP定律的效果是非常明显的，    <br />熟练掌握ESP定律对于手动脱壳是非常有用的。    <br />Crack by Cr4ckk3y    <br />转载请注明出自暗组技术论坛 <a href="http://forum.darkst.com/,本贴地址:http://forum.darkst.com/viewthread.php?tid=36781">http://forum.darkst.com/,本贴地址:http://forum.darkst.com/viewthread.php?tid=36781</a></p>]]></description><category>加密解密</category><comments>http://www.redwolf.com.cn/redwolf/post/367.html#comment</comments><wfw:comment>http://www.redwolf.com.cn/redwolf/</wfw:comment><wfw:commentRss>http://www.redwolf.com.cn/redwolf/feed.asp?cmt=367</wfw:commentRss><trackback:ping>http://www.redwolf.com.cn/redwolf/cmd.asp?act=tb&amp;id=367&amp;key=e12279e4</trackback:ping></item><item><title>手动脱壳入门第十九篇ASProtect 1.1</title><author>redwolf@redwolf.com.cn (redwolf)</author><link>http://www.redwolf.com.cn/redwolf/post/06102421.html</link><pubDate>Tue, 24 Oct 2006 17:26:28 +0800</pubDate><guid>http://www.redwolf.com.cn/redwolf/post/06102421.html</guid><description><![CDATA[【脱文标题】 手动脱壳入门第十九篇ASProtect 1.1<BR><BR>【脱文作者】 weiyi75[Dfcg] <BR>&nbsp;&nbsp;<BR>【作者邮箱】 <A href="mailto:weiyi75@sohu.com">weiyi75@sohu.com</A><BR><BR>【作者主页】 Dfcg官方大本营 <BR><BR>【使用工具】 Peid,Ollydbg,Loadpe,ImportREC1.42<BR><BR>【脱壳平台】 Win2000/XP <BR><BR>【<A href="http://cnxhacker.net/download/"><A href="http://cnxhacker.net/download/">软件</A></A>名称】 chap709.exe<BR><BR>【<A href="http://cnxhacker.net/download/"><A href="http://cnxhacker.net/download/">下载</A></A>地址】 本地<A href="http://cnxhacker.net/download/"><A href="http://cnxhacker.net/download/">下载</A></A><IMG src="http://www.cnxhacker.com/editor/sysimage/file/rar.gif" border=0><A href="http://www.cnxhacker.com/editor/UploadFile/2005-6/12/200561224058843.rar" target=_blank>chap709.rar</A><BR><BR>【<A href="http://cnxhacker.net/download/"><A href="http://cnxhacker.net/download/">软件</A></A>简介】 ASProtect 1.1b Registered 加密Win98的记事本。<BR><BR>【<A href="http://cnxhacker.net/download/"><A href="http://cnxhacker.net/download/">软件</A></A>大小】 58.2K<BR><BR>【加壳方式】 ASProtect 1.1b Registered [SAC] -&gt; Alexey Solodovnikov<BR><BR>【脱壳声明】 我是一只小菜鸟，偶得一点心得，愿与大家分享： <BR><BR>-------------------------------------------------------------------------------- <BR><BR>【脱壳内容】 <BR><BR>首先Peid查壳，为ASProtect 1.1b Registered [SAC] -&gt; Alexey Solodovnikov,ASProtect 1.1b Registered 很少弄过，与现在的Asprotect1.2X SEH不同，不过也很容易。SEH异常全部是由13个精心设计的非法指令SEH组成的，这样就无法用模拟跟踪找Oep了。二哥脱壳没有什么耐心，喜欢快。先大概了解了一下程序开始脱壳。<BR><BR>OD载入程序，除了错误或有特权的指令外异常全部忽略,1.1b不检测OD，根本无需隐藏。<BR><BR>0040D001 &gt;&nbsp;&nbsp;60&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;pushad&nbsp; &nbsp;//外壳入口,F9运行。<BR>0040D002&nbsp; &nbsp; E9 95050000&nbsp; &nbsp;&nbsp;&nbsp;jmp chap709.0040D59C<BR>0040D007&nbsp; &nbsp; F710&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;not dword ptr ds:[eax]<BR>0040D009&nbsp; &nbsp; 0F0F&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;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;; 未知命令<BR>0040D00B&nbsp; &nbsp; 0F9F6C90 FC&nbsp; &nbsp;&nbsp;&nbsp;setg byte ptr ds:[eax+edx*4-4]<BR>0040D010&nbsp; &nbsp; 57&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;push edi<BR>0040D011&nbsp; &nbsp; C5540F CA&nbsp; &nbsp;&nbsp; &nbsp; lds edx, fword ptr ds:[edi+ecx-36]<BR>0040D015&nbsp; &nbsp; 4B&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;dec ebx<BR>0040D016&nbsp; &nbsp; C5540F 12&nbsp; &nbsp;&nbsp; &nbsp; lds edx, fword ptr ds:[edi+ecx+12]<BR>0040D01A&nbsp; &nbsp; EC&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;in al, dx<BR>0040D01B&nbsp; &nbsp; 3AAC90 CD540F92 cmp ch, byte ptr ds:[eax+edx*4+920F54CD]<BR>0040D022&nbsp; &nbsp; CC&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;int3<BR>.............................................................<BR><BR>第一次异常<BR><BR>0092FF94&nbsp; &nbsp; 8DC0&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;lea eax, eax&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;; 非法使用寄存器<BR>0092FF96&nbsp; &nbsp; EB 01&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;jmp short 0092FF99<BR>0092FF98&nbsp; &nbsp; 68 648F0500&nbsp; &nbsp;&nbsp;&nbsp;push 58F64<BR>0092FF9D&nbsp; &nbsp; 0000&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;add byte ptr ds:[eax], al<BR>0092FF9F&nbsp; &nbsp; 00EB&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;add bl, ch<BR>0092FFA1&nbsp; &nbsp; 02E8&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;add ch, al<BR>0092FFA3&nbsp; &nbsp; 0158 68&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;add dword ptr ds:[eax+68], ebx<BR>0092FFA6&nbsp; &nbsp; 98&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;cwde<BR>0092FFA7&nbsp; &nbsp; E5 92&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;in eax, 92<BR>0092FFA9&nbsp; &nbsp; 0068 D0&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;add byte ptr ds:[eax-30], ch<BR>0092FFAC&nbsp; &nbsp; FF92 00687CF5&nbsp; &nbsp;call dword ptr ds:[edx+F57C6800]<BR>0092FFB2&nbsp; &nbsp; 92&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;xchg eax, edx<BR>0092FFB3&nbsp; &nbsp; 0068 14&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;add byte ptr ds:[eax+14], ch<BR>...................................................................<BR><BR>继续Shift+F9 12次达第十三次也是最后一次异常。<BR><BR>0093053D&nbsp; &nbsp; 8DC0&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;lea eax, eax&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;; 非法使用寄存器<BR>0093053F&nbsp; &nbsp; EB 01&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;jmp short 00930542<BR>00930541&nbsp; &nbsp; 68 648F0500&nbsp; &nbsp;&nbsp;&nbsp;push 58F64<BR>00930546&nbsp; &nbsp; 0000&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;add byte ptr ds:[eax], al<BR>00930548&nbsp; &nbsp; 00EB&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;add bl, ch<BR>0093054A&nbsp; &nbsp; 02E8&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;add ch, al<BR>0093054C&nbsp; &nbsp; 0158 33&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;add dword ptr ds:[eax+33], ebx<BR>0093054F&nbsp; &nbsp; C05A 59 59&nbsp; &nbsp;&nbsp; &nbsp;rcr byte ptr ds:[edx+59], 59<BR>00930553&nbsp; &nbsp; 64:8910&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;mov dword ptr fs:[eax], edx<BR>00930556&nbsp; &nbsp; 68 78059300&nbsp; &nbsp;&nbsp;&nbsp;push 930578<BR>0093055B&nbsp; &nbsp; 8D45 F0&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;lea eax, dword ptr ss:[ebp-10]<BR>0093055E&nbsp; &nbsp; E8 2D2CFFFF&nbsp; &nbsp;&nbsp;&nbsp;call 00923190<BR>00930563&nbsp; &nbsp; 8D45 F8&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;lea eax, dword ptr ss:[ebp-8]<BR>.............................................................<BR><BR>ALT+M 打开内存镜像。<BR><BR>内存镜像，项目 21<BR>地址=00401000<BR>大小=00004000 (16384.)<BR>Owner=chap709&nbsp;&nbsp;00400000<BR>区段=<BR>包含=code&nbsp; &nbsp;//对这里下内存访问断点,Shift+F9运行。<BR>类型=Imag 01001002<BR>访问=R<BR>初始访问=RWE<BR><BR>004010CC&nbsp; &nbsp; 55&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;push ebp&nbsp;&nbsp;//到达Oep,用Loadpe脱壳吧。<BR>004010CD&nbsp; &nbsp; 8BEC&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;mov ebp, esp<BR>004010CF&nbsp; &nbsp; 83EC 44&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;sub esp, 44<BR>004010D2&nbsp; &nbsp; 56&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;push esi<BR>004010D3&nbsp; &nbsp; FF15 E4634000&nbsp; &nbsp;call dword ptr ds:[4063E4]<BR>004010D9&nbsp; &nbsp; 8BF0&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;mov esi, eax<BR>004010DB&nbsp; &nbsp; 8A00&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;mov al, byte ptr ds:[eax]<BR>004010DD&nbsp; &nbsp; 3C 22&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;cmp al, 22<BR>004010DF&nbsp; &nbsp; 75 1B&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;jnz short chap709.004010FC&nbsp; &nbsp;//往下看看IAT被加密了不少。<BR>004010E1&nbsp; &nbsp; 56&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;push esi<BR>004010E2&nbsp; &nbsp; FF15 F4644000&nbsp; &nbsp;call dword ptr ds:[4064F4]<BR>004010E8&nbsp; &nbsp; 8BF0&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;mov esi, eax<BR>004010EA&nbsp; &nbsp; 8A00&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;mov al, byte ptr ds:[eax]<BR>004010EC&nbsp; &nbsp; 84C0&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;test al, al<BR>004010EE&nbsp; &nbsp; 74 04&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;je short chap709.004010F4<BR>004010F0&nbsp; &nbsp; 3C 22&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;cmp al, 22<BR>004010F2&nbsp;&nbsp;^ 75 ED&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;jnz short chap709.004010E1<BR>004010F4&nbsp; &nbsp; 803E 22&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;cmp byte ptr ds:[esi], 22<BR>004010F7&nbsp; &nbsp; 75 15&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;jnz short chap709.0040110E<BR>004010F9&nbsp; &nbsp; 46&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;inc esi<BR>004010FA&nbsp; &nbsp; EB 12&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;jmp short chap709.0040110E<BR>...........................................................<BR><BR>IAT修复 <BR><BR>运行ImportREC，OEP填入10CC，自动搜索，获得输入信息，有111个指针没有修复，先用跟踪等级1修复98个，剩下的13个用等级3全部修复，正常运行。<BR><BR>火眼金精区段减肥，去除垃圾区段，重建PE。<BR><BR>这个需要一点PE知识，没有也不要紧，跟着一起学，积累经验。<BR><BR>备份好脱壳程序，区段减肥有时过量会导致程序无法运行。<BR><BR>这次区段减肥只是例子，大家要学会举一反三。<BR><BR>我们用OD同时载入未加密的Win98计事本，和脱壳程序。<BR><BR>Win98 记事本<BR><BR>本地<A href="http://cnxhacker.net/download/">下载</A><IMG src="http://www.cnxhacker.com/editor/sysimage/file/rar.gif" border=0><A href="http://www.cnxhacker.com/editor/UploadFile/2005-6/12/200561225542651.rar" target=_blank>Notepad.rar</A></A><BR><BR>Alt+M打开内存镜像同步分析。<BR><BR>原程序内存镜像<BR><BR>地址&nbsp; &nbsp;&nbsp; &nbsp; 大小&nbsp; &nbsp;&nbsp; &nbsp; Owner&nbsp; &nbsp;&nbsp; &nbsp;Section&nbsp; &nbsp; Contains&nbsp; &nbsp;&nbsp; &nbsp;类型&nbsp; &nbsp;访问&nbsp; &nbsp;&nbsp; &nbsp;初始访问&nbsp;&nbsp;映射为<BR><BR>003E0000&nbsp; &nbsp;00002000&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;Map&nbsp; &nbsp; R&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;R<BR>00400000&nbsp; &nbsp;00001000&nbsp; &nbsp;NOTEPAD&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;PE header&nbsp; &nbsp;&nbsp;&nbsp;Imag&nbsp; &nbsp;R&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;RWE<BR>00401000&nbsp; &nbsp;00004000&nbsp; &nbsp;NOTEPAD&nbsp; &nbsp; .text&nbsp; &nbsp;&nbsp; &nbsp;code&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; Imag&nbsp; &nbsp;R&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;RWE<BR>00405000&nbsp; &nbsp;00001000&nbsp; &nbsp;NOTEPAD&nbsp; &nbsp; .data&nbsp; &nbsp;&nbsp; &nbsp;data&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; Imag&nbsp; &nbsp;R&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;RWE<BR>00406000&nbsp; &nbsp;00001000&nbsp; &nbsp;NOTEPAD&nbsp; &nbsp; .idata&nbsp; &nbsp;&nbsp;&nbsp;imports&nbsp; &nbsp;&nbsp; &nbsp; Imag&nbsp; &nbsp;R&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;RWE<BR>00407000&nbsp; &nbsp;00005000&nbsp; &nbsp;NOTEPAD&nbsp; &nbsp; .rsrc&nbsp; &nbsp;&nbsp; &nbsp;resources&nbsp; &nbsp;&nbsp;&nbsp;Imag&nbsp; &nbsp;R&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;RWE<BR>0040C000&nbsp; &nbsp;00001000&nbsp; &nbsp;NOTEPAD&nbsp; &nbsp; .reloc&nbsp; &nbsp;&nbsp;&nbsp;relocations&nbsp; &nbsp;Imag&nbsp; &nbsp;R&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;RWE<BR><BR>Contains <BR><BR>.text&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;//代码段，我们反编译程序经常看到。<BR><BR>.data&nbsp; &nbsp;&nbsp; &nbsp; //数据快，程序初始化用。<BR><BR>.idata&nbsp; &nbsp; //输入表，现在加密壳搞破坏的对象,坏的输入表让你无法运行脱壳程序，怒。<BR><BR>.rsrc&nbsp; &nbsp;//全部资源，如图标，菜单，位图。<BR><BR>.reloc //保存基地址重定位。<BR><BR><BR>脱壳程序内存镜像<BR><BR>地址&nbsp; &nbsp;&nbsp; &nbsp; 大小&nbsp; &nbsp;&nbsp; &nbsp; Owner&nbsp; &nbsp;&nbsp; &nbsp;Section&nbsp; &nbsp; Contains&nbsp; &nbsp;&nbsp; &nbsp;类型&nbsp; &nbsp;访问&nbsp; &nbsp;&nbsp; &nbsp;初始访问&nbsp;&nbsp;映射为<BR><BR>00400000&nbsp; &nbsp;00001000&nbsp; &nbsp;dumped_&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;PE header&nbsp; &nbsp;&nbsp;&nbsp;Imag&nbsp; &nbsp;R&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;RWE<BR>00401000&nbsp; &nbsp;00004000&nbsp; &nbsp;dumped_&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;code&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; Imag&nbsp; &nbsp;R&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;RWE<BR>00405000&nbsp; &nbsp;00001000&nbsp; &nbsp;dumped_&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;Imag&nbsp; &nbsp;R&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;RWE<BR>00406000&nbsp; &nbsp;00001000&nbsp; &nbsp;dumped_&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;Imag&nbsp; &nbsp;R&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;RWE<BR>00407000&nbsp; &nbsp;00005000&nbsp; &nbsp;dumped_&nbsp; &nbsp; .rsrc&nbsp; &nbsp;&nbsp; &nbsp;resources&nbsp; &nbsp;&nbsp;&nbsp;Imag&nbsp; &nbsp;R&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;RWE<BR>0040C000&nbsp; &nbsp;00001000&nbsp; &nbsp;dumped_&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;Imag&nbsp; &nbsp;R&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;RWE<BR>0040D000&nbsp; &nbsp;0000F000&nbsp; &nbsp;dumped_&nbsp; &nbsp; .data&nbsp; &nbsp;&nbsp; &nbsp;data,relocat&nbsp;&nbsp;Imag&nbsp; &nbsp;R&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;RWE<BR>0041C000&nbsp; &nbsp;00001000&nbsp; &nbsp;dumped_&nbsp; &nbsp; .data&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;Imag&nbsp; &nbsp;R&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;RWE<BR>0041D000&nbsp; &nbsp;00001000&nbsp; &nbsp;dumped_&nbsp; &nbsp; .mackt&nbsp; &nbsp;&nbsp;&nbsp;imports&nbsp; &nbsp;&nbsp; &nbsp; Imag&nbsp; &nbsp;R&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;RWE<BR><BR>现在我们要识别无用区段，文件减肥。<BR><BR>几个Contains 有标记的区段一般不能删除，没有标记的优先考虑。<BR><BR>00405000&nbsp; &nbsp;00001000&nbsp; &nbsp;//原先是数据段，现在被Asprotect移动到0040D000里面去了,但这个区段不能删除，否则无法运行。<BR><BR>00406000&nbsp; &nbsp;00001000&nbsp;&nbsp;//原先是引入表，这里已经被破坏了，被0041D000重建的引入表替换,但这个区段不<BR>能删除，否则无法运行,感觉它和0041D000重建的引入表一起工作的。<BR><BR>0040C000&nbsp; &nbsp;00001000 //原先是基地址从定位用的,现在被0040D000处取代，是垃圾区段，可以删除。<BR><BR>0041C000&nbsp; &nbsp;00001000 //理论就是垃圾区段,实际也是，可以删除。<BR><BR>分析出 <BR><BR>0040C000&nbsp; &nbsp;00001000 <BR><BR>0041C000&nbsp; &nbsp;00001000 <BR><BR>两个垃圾区段。<BR><BR>用Loadpe清除它们，重建PE<BR><BR>120 KB&nbsp;&nbsp;To&nbsp;&nbsp;97.8 KB&nbsp;&nbsp;正常运行。<BR><BR>原计事本 52k<BR><BR>还是有垃圾，没有办法了。]]></description><category>加密解密</category><comments>http://www.redwolf.com.cn/redwolf/post/06102421.html#comment</comments><wfw:comment>http://www.redwolf.com.cn/redwolf/</wfw:comment><wfw:commentRss>http://www.redwolf.com.cn/redwolf/feed.asp?cmt=240</wfw:commentRss><trackback:ping>http://www.redwolf.com.cn/redwolf/cmd.asp?act=tb&amp;id=240&amp;key=026e3bdf</trackback:ping></item><item><title>手动脱壳入门第十八篇 PC Shrinker 0.71</title><author>redwolf@redwolf.com.cn (redwolf)</author><link>http://www.redwolf.com.cn/redwolf/post/06102420.html</link><pubDate>Tue, 24 Oct 2006 17:25:12 +0800</pubDate><guid>http://www.redwolf.com.cn/redwolf/post/06102420.html</guid><description><![CDATA[【脱文标题】 手动脱壳入门第十八篇 PC Shrinker 0.71<BR><BR>【脱文作者】 weiyi75[Dfcg] <BR><BR>【作者邮箱】 <A href="mailto:weiyi75@sohu.com">weiyi75@sohu.com</A> <BR><BR>【作者主页】 Dfcg官方大本营 <BR><BR>【使用工具】 Peid,Ollydbg,ImportREC<BR><BR>【脱壳平台】 Win2K/XP<BR><BR>【<A href="http://cnxhacker.net/download/">软件</A>名称】 Pcshrink.exe<BR><BR>【<A href="http://cnxhacker.net/download/">软件</A>简介】 Phrozen Crew PE Shrinker is an windows 9x/NT executable file compressor, allowing compressed executables to run, functionally,the same as always, but occupy a significantly less amount of disk space. <BR><BR>【<A href="http://cnxhacker.net/download/">软件</A>大小】 15 KB <BR><BR>【<A href="http://cnxhacker.net/download/">下载</A>地址】 本地<A href="http://cnxhacker.net/download/">下载</A><IMG src="http://www.cnxhacker.com/editor/sysimage/file/rar.gif" border=0><A href="http://www.cnxhacker.com/editor/UploadFile/2005-6/12/20056122374441.rar" target=_blank>PC Shrinker 0.71.rar</A><BR><BR>【加壳方式】 PC Shrinker 0.71 -&gt; Virogen<BR><BR>【保护方式】 PC Shrinker压缩壳<BR><BR>【脱壳声明】 我是一只小菜鸟，偶得一点心得，愿与大家分享：)<BR><BR>-------------------------------------------------------------------------------- <BR><BR>【脱壳内容】 <BR><BR>这个程序的压缩选项是非常丰富的,从界面中也没有加密选项，无效隐藏OD和设置异常。<BR><BR>先看看它加壳的记事本<BR><BR>本地<A href="http://cnxhacker.net/download/">下载</A><IMG src="http://www.cnxhacker.com/editor/sysimage/file/rar.gif" border=0><A href="http://www.cnxhacker.com/editor/UploadFile/2005-6/12/200561223748181.rar" target=_blank>NOTEPAD.rar</A><BR><BR>首先Peid查壳，为PC Shrinker 0.71 -&gt; Virogen，OD载入运行，无任何异常，判断其为压缩壳。<BR><BR>0040AAFB &gt;&nbsp;&nbsp;9C&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;PUSHFD&nbsp; &nbsp;//记事本外壳入口。<BR>0040AAFC&nbsp; &nbsp; 60&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;PUSHAD&nbsp;&nbsp;//仍然是ESP定律<BR>0040AAFD&nbsp; &nbsp; BD B7710000&nbsp; &nbsp;&nbsp;&nbsp;MOV EBP,71B7&nbsp;&nbsp;//这里的ESP为12FFA0<BR>0040AB02&nbsp; &nbsp; 01AD 543A4000&nbsp; &nbsp;ADD DWORD PTR SS:[EBP+403A54],EBP<BR>0040AB08&nbsp; &nbsp; FFB5 503A4000&nbsp; &nbsp;PUSH DWORD PTR SS:[EBP+403A50]<BR>0040AB0E&nbsp; &nbsp; 6A 40&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;PUSH 40<BR>0040AB10&nbsp; &nbsp; FF95 883A4000&nbsp; &nbsp;CALL DWORD PTR SS:[EBP+403A88]<BR>0040AB16&nbsp; &nbsp; 50&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;PUSH EAX<BR>0040AB17&nbsp; &nbsp; 50&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;PUSH EAX<BR>0040AB18&nbsp; &nbsp; 2D 7D394000&nbsp; &nbsp;&nbsp;&nbsp;SUB EAX,NOTEPAD.0040397D<BR>0040AB1D&nbsp; &nbsp; 8985 7E394000&nbsp; &nbsp;MOV DWORD PTR SS:[EBP+40397E],EAX<BR>0040AB23&nbsp; &nbsp; 5F&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;POP EDI<BR>0040AB24&nbsp; &nbsp; 8DB5 7D394000&nbsp; &nbsp;LEA ESI,DWORD PTR SS:[EBP+40397D]<BR>0040AB2A&nbsp; &nbsp; B9 FC000000&nbsp; &nbsp;&nbsp;&nbsp;MOV ECX,0FC<BR>0040AB2F&nbsp; &nbsp; F3:A5&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;REP MOVS DWORD PTR ES:[EDI],DWORD PTR DS&gt;<BR>0040AB31&nbsp; &nbsp; 5F&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;POP EDI<BR>0040AB32&nbsp; &nbsp; FFE7&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;JMP EDI<BR>..................................................<BR><BR>命令行 dd 12ffa0<BR><BR>下硬件访问-Dword断点。<BR><BR>F9运行<BR><BR>硬件中断。<BR><BR>标签1<BR><BR>★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★<BR><BR>0040AAFB &gt;&nbsp;&nbsp;9C&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;PUSHFD&nbsp; &nbsp;//记事本外壳入口。<BR>0040AAFC&nbsp; &nbsp; 60&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;PUSHAD&nbsp;&nbsp;//<BR><BR>解压缩过程，就是我们以前慢慢跟踪的一下循环圈。<BR><BR>00132DC6&nbsp; &nbsp; 61&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;POPAD&nbsp; &nbsp;//堆栈平衡，完全工整对应。<BR>00132DC7&nbsp; &nbsp; 9D&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;POPFD&nbsp;&nbsp;//这里是出口，我们断在这里。<BR><BR>★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★<BR><BR>00132DC6&nbsp; &nbsp; 61&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;POPAD<BR>00132DC7&nbsp; &nbsp; 9D&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;POPFD&nbsp;&nbsp;//这里是出口，我们断在这里。转标签1看看<BR>00132DC8&nbsp; &nbsp; BA CC104000&nbsp; &nbsp;&nbsp;&nbsp;MOV EDX,4010CC<BR>00132DCD&nbsp; &nbsp; FFE2&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;JMP EDX&nbsp;&nbsp;//EDX=4010CC,这个是地球人都只道的记事本的OEP<BR><BR>004010CC&nbsp; &nbsp; 55&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;PUSH EBP&nbsp; &nbsp; //在这里用Loadpe直接脱壳<BR>004010CD&nbsp; &nbsp; 8BEC&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;MOV EBP,ESP<BR>004010CF&nbsp; &nbsp; 83EC 44&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;SUB ESP,44<BR>004010D2&nbsp; &nbsp; 56&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;PUSH ESI&nbsp; &nbsp;//我们看到加密表没有破坏,往下看到KERNEL32.GetCommandLineA<BR>004010D3&nbsp; &nbsp; FF15 E4634000&nbsp; &nbsp;CALL DWORD PTR DS:[4063E4]&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;; KERNEL32.GetCommandLineA<BR>004010D9&nbsp; &nbsp; 8BF0&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;MOV ESI,EAX<BR>004010DB&nbsp; &nbsp; 8A00&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;MOV AL,BYTE PTR DS:[EAX]<BR>004010DD&nbsp; &nbsp; 3C 22&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;CMP AL,22<BR>004010DF&nbsp; &nbsp; 75 1B&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;JNZ SHORT NOTEPAD.004010FC<BR>004010E1&nbsp; &nbsp; 56&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;PUSH ESI<BR>004010E2&nbsp; &nbsp; FF15 F4644000&nbsp; &nbsp;CALL DWORD PTR DS:[4064F4]&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;; USER32.CharNextA<BR>004010E8&nbsp; &nbsp; 8BF0&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;MOV ESI,EAX<BR>004010EA&nbsp; &nbsp; 8A00&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;MOV AL,BYTE PTR DS:[EAX]<BR>004010EC&nbsp; &nbsp; 84C0&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;TEST AL,AL<BR>004010EE&nbsp; &nbsp; 74 04&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;JE SHORT NOTEPAD.004010F4<BR>004010F0&nbsp; &nbsp; 3C 22&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;CMP AL,22<BR>004010F2&nbsp;&nbsp;^ 75 ED&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;JNZ SHORT NOTEPAD.004010E1<BR>...........................................................<BR><BR>运行ImportREC，选择这个进程。把OEP改为000010cc，点IT AutoSearch，点“Get Import”,函数都是有效的。FixDump，正常运行,记事本脱壳完毕。<BR><BR>脱壳主程序<BR><BR>继续OD载入它的主程序。<BR><BR>004066F8 &gt;&nbsp;&nbsp;9C&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;PUSHFD&nbsp; &nbsp;//主程序外壳入口。<BR>004066F9&nbsp; &nbsp; 60&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;PUSHAD&nbsp;&nbsp;//从这这句过后用ESP定律吧，<BR>004066FA&nbsp; &nbsp; BD B42D0000&nbsp; &nbsp;&nbsp;&nbsp;MOV EBP,2DB4&nbsp;&nbsp;//到这里ESP=19ffa0<BR>004066FF&nbsp; &nbsp; 01AD 543A4000&nbsp; &nbsp;ADD DWORD PTR SS:[EBP+403A54],EBP <BR>00406705&nbsp; &nbsp; FFB5 503A4000&nbsp; &nbsp;PUSH DWORD PTR SS:[EBP+403A50]<BR>0040670B&nbsp; &nbsp; 6A 40&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;PUSH 40<BR>0040670D&nbsp; &nbsp; FF95 883A4000&nbsp; &nbsp;CALL DWORD PTR SS:[EBP+403A88]<BR>00406713&nbsp; &nbsp; 50&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;PUSH EAX<BR>00406714&nbsp; &nbsp; 50&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;PUSH EAX<BR>00406715&nbsp; &nbsp; 2D 7D394000&nbsp; &nbsp;&nbsp;&nbsp;SUB EAX,PCSHRINK.0040397D<BR>0040671A&nbsp; &nbsp; 8985 7E394000&nbsp; &nbsp;MOV DWORD PTR SS:[EBP+40397E],EAX<BR>00406720&nbsp; &nbsp; 5F&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;POP EDI<BR>00406721&nbsp; &nbsp; 8DB5 7D394000&nbsp; &nbsp;LEA ESI,DWORD PTR SS:[EBP+40397D]<BR>00406727&nbsp; &nbsp; B9 FC000000&nbsp; &nbsp;&nbsp;&nbsp;MOV ECX,0FC<BR>0040672C&nbsp; &nbsp; F3:A5&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;REP MOVS DWORD PTR ES:[EDI],DWORD PTR DS&gt;<BR>0040672E&nbsp; &nbsp; 5F&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;POP EDI<BR>0040672F&nbsp; &nbsp; FFE7&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;JMP EDI<BR>................................................................................<BR><BR>dd 19ffa0<BR><BR>下硬件访问-Dword断点。<BR><BR>F9运行<BR><BR>硬件中断。<BR><BR>001A2DD6&nbsp; &nbsp; 61&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;POPAD<BR>001A2DD7&nbsp; &nbsp; 9D&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;POPFD&nbsp;&nbsp;//堆栈平衡<BR>001A2DD8&nbsp; &nbsp; BA 00104000&nbsp; &nbsp;&nbsp;&nbsp;MOV EDX,401000<BR>001A2DDD&nbsp; &nbsp; FFE2&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;JMP EDX&nbsp;&nbsp;//EDX=401000是主程序的OEP<BR><BR>00401000&nbsp; &nbsp;&nbsp; &nbsp;E8&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;DB E8&nbsp;&nbsp;//这种情况大家应该见多了，点右键-分析-清除分析。<BR>00401001&nbsp; &nbsp;&nbsp; &nbsp;05&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;DB 05<BR>00401002&nbsp; &nbsp;&nbsp; &nbsp;16&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;DB 16<BR>00401003&nbsp; &nbsp;&nbsp; &nbsp;00&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;DB 00<BR>00401004&nbsp; &nbsp;&nbsp; &nbsp;00&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;DB 00<BR>00401005&nbsp; &nbsp;&nbsp; &nbsp;A3&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;DB A3<BR>00401006&nbsp; &nbsp;&nbsp; &nbsp;DF&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;DB DF<BR>00401007&nbsp; &nbsp;&nbsp; &nbsp;37&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;DB 37&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;CHAR '7'<BR>00401008&nbsp; &nbsp;&nbsp; &nbsp;40&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;DB 40&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;CHAR '@'<BR>00401009&nbsp; &nbsp;&nbsp; &nbsp;00&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;DB 00<BR>0040100A&nbsp; &nbsp;&nbsp; &nbsp;E8&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;DB E8<BR>0040100B&nbsp; &nbsp;&nbsp; &nbsp;BF&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;DB BF<BR>0040100C&nbsp; &nbsp;&nbsp; &nbsp;15&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;DB 15<BR>0040100D&nbsp; &nbsp;&nbsp; &nbsp;00&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;DB 00<BR>0040100E&nbsp; &nbsp;&nbsp; &nbsp;00&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;DB 00<BR>0040100F&nbsp; &nbsp;&nbsp; &nbsp;0B&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;DB 0B<BR>00401010&nbsp; &nbsp;&nbsp; &nbsp;C0&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;DB C0<BR>...................................................................<BR><BR>00401000&nbsp; &nbsp; E8 05160000&nbsp; &nbsp;&nbsp;&nbsp;CALL PCSHRINK.0040260A&nbsp; &nbsp;//从文件大小也知道是汇编语言写的壳,Loadpe脱壳吧<BR>00401005&nbsp; &nbsp; A3 DF374000&nbsp; &nbsp;&nbsp;&nbsp;MOV DWORD PTR DS:[4037DF],EAX<BR>0040100A&nbsp; &nbsp; E8 BF150000&nbsp; &nbsp;&nbsp;&nbsp;CALL PCSHRINK.004025CE&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; ; JMP to KERNEL32.GetCommandLineA<BR>0040100F&nbsp; &nbsp; 0BC0&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;OR EAX,EAX<BR>00401011&nbsp; &nbsp; 74 39&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;JE SHORT PCSHRINK.0040104C<BR>00401013&nbsp; &nbsp; 96&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;XCHG EAX,ESI<BR>00401014&nbsp; &nbsp; 803E 00&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;CMP BYTE PTR DS:[ESI],0<BR>00401017&nbsp; &nbsp; 74 33&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;JE SHORT PCSHRINK.0040104C<BR>00401019&nbsp; &nbsp; C1E0 08&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;SHL EAX,8<BR>0040101C&nbsp; &nbsp; AC&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;LODS BYTE PTR DS:[ESI]<BR>0040101D&nbsp; &nbsp; 3D 6B6E6972&nbsp; &nbsp;&nbsp;&nbsp;CMP EAX,72696E6B<BR>00401022&nbsp; &nbsp; 75 05&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;JNZ SHORT PCSHRINK.00401029<BR>00401024&nbsp; &nbsp; 803E 2E&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;CMP BYTE PTR DS:[ESI],2E<BR>00401027&nbsp; &nbsp; 75 0E&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;JNZ SHORT PCSHRINK.00401037<BR>00401029&nbsp; &nbsp; 3D 6578652E&nbsp; &nbsp;&nbsp;&nbsp;CMP EAX,2E657865<BR>0040102E&nbsp; &nbsp; 74 07&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;JE SHORT PCSHRINK.00401037<BR>...................................................................<BR><BR>运行ImportREC，选择这个进程。把OEP改为00001000，点IT AutoSearch，点“Get Import”,函数都是有效的。FixDump，正常运行。]]></description><category>加密解密</category><comments>http://www.redwolf.com.cn/redwolf/post/06102420.html#comment</comments><wfw:comment>http://www.redwolf.com.cn/redwolf/</wfw:comment><wfw:commentRss>http://www.redwolf.com.cn/redwolf/feed.asp?cmt=239</wfw:commentRss><trackback:ping>http://www.redwolf.com.cn/redwolf/cmd.asp?act=tb&amp;id=239&amp;key=d6658035</trackback:ping></item><item><title>手动脱壳入门第十七篇 VGCrypt PE Encryptor V0.75</title><author>redwolf@redwolf.com.cn (redwolf)</author><link>http://www.redwolf.com.cn/redwolf/post/06102419.html</link><pubDate>Tue, 24 Oct 2006 17:24:10 +0800</pubDate><guid>http://www.redwolf.com.cn/redwolf/post/06102419.html</guid><description><![CDATA[【脱文标题】 手动脱壳入门第十七篇 VGCrypt PE Encryptor V0.75<BR><BR>【脱文作者】 weiyi75[Dfcg] <BR><BR>【作者邮箱】 <A href="mailto:weiyi75@sohu.com">weiyi75@sohu.com</A> <BR><BR>【作者主页】 Dfcg官方大本营 <BR><BR>【使用工具】 Peid,Ollydbg,ImportREC<BR><BR>【脱壳平台】 Win2K/XP<BR><BR>【<A href="http://cnxhacker.net/download/">软件</A>名称】 VGCrypt PE Encryptor V0.75<BR><BR>【<A href="http://cnxhacker.net/download/">软件</A>简介】 This is a fairly simple PE encryptor I wrote up. I commented everything that is relavent to PE appendation or insertion, more so than I needed to even. The most interesting feature of this encryptor is that it attempts to find a location to insert itself between object virtual size and the next file alignment boundary, thus not changing the physical file size. <BR><BR>【<A href="http://cnxhacker.net/download/">软件</A>大小】 16 KB <BR><BR>【<A href="http://cnxhacker.net/download/">下载</A>地址】&nbsp;本地<A href="http://cnxhacker.net/download/">下载</A><IMG src="http://www.cnxhacker.com/editor/sysimage/file/rar.gif" border=0><A href="http://www.cnxhacker.com/editor/UploadFile/2005-6/12/200561222653618.rar" target=_blank>Vgcrypt.rar</A><BR><BR>【加壳方式】 Virogen Crypt 0.75<BR><BR>【保护方式】 Virogen Crypt资源保护壳<BR><BR>【脱壳声明】 我是一只小菜鸟，偶得一点心得，愿与大家分享：)<BR><BR>-------------------------------------------------------------------------------- <BR><BR>【脱壳内容】 <BR><BR><A href="http://cnxhacker.net/download/">下载</A>这个程序,用 Vgcrypt Notepad.exe&nbsp;&nbsp;的命令行方法压缩了一个Win98的记事本,倒,原文件大小等于压缩后大小52K,程序也没有加密IAT,仅仅搞乱了Code段,让你无法反汇编,用资源编辑<A href="http://cnxhacker.net/download/">软件</A>发现可以编辑资源。<BR><BR>加壳记事本<BR><BR>本地<A href="http://cnxhacker.net/download/">下载</A><IMG src="http://www.cnxhacker.com/editor/sysimage/file/rar.gif" border=0><A href="http://www.cnxhacker.com/editor/UploadFile/2005-6/12/200561222734982.rar" target=_blank>Notepad.rar</A><BR><BR>首先Peid查壳，为Virogen Crypt 0.75，OD载入运行，无任何异常，判断其为压缩壳。<BR><BR>0040584C &gt;&nbsp;&nbsp;9C&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;PUSHFD&nbsp; &nbsp;&nbsp; &nbsp;//记事本外壳入口。<BR>0040584D&nbsp; &nbsp; 55&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;PUSH EBP<BR>0040584E&nbsp; &nbsp; E8 EC000000&nbsp; &nbsp;&nbsp;&nbsp;CALL 1.0040593F<BR>00405853&nbsp; &nbsp; 87D5&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;XCHG EBP,EDX<BR>00405855&nbsp; &nbsp; 5D&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;POP EBP<BR>00405856&nbsp; &nbsp; 60&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;PUSHAD&nbsp; &nbsp; //从这这句过后用ESP定律吧，<BR>00405857&nbsp; &nbsp; 87D5&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;XCHG EBP,EDX&nbsp;&nbsp;//到这里ESP=12ffa0<BR>00405859&nbsp; &nbsp; 80BD 15274000 0&gt;CMP BYTE PTR SS:[EBP+402715],1<BR>00405860&nbsp; &nbsp; 74 39&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;JE SHORT 1.0040589B<BR>00405862&nbsp; &nbsp; C685 15274000 0&gt;MOV BYTE PTR SS:[EBP+402715],1<BR>00405869&nbsp; &nbsp; E9 E4000000&nbsp; &nbsp;&nbsp;&nbsp;JMP 1.00405952<BR>0040586E&nbsp;&nbsp;- E9 79DAFF90&nbsp; &nbsp;&nbsp;&nbsp;JMP 914032EC<BR>00405873&nbsp; &nbsp; D6&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;SALC<BR>00405874&nbsp; &nbsp; 64:CE&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;INTO&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>00405876&nbsp; &nbsp; E4 3C&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;IN AL,3C&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;; I/O 命令<BR>00405878&nbsp; &nbsp; 40&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;INC EAX<BR>00405879&nbsp; &nbsp; 94&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;XCHG EAX,ESP<BR>0040587A&nbsp; &nbsp; 65:EC&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;IN AL,DX&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;; I/O 命令<BR>0040587C&nbsp;&nbsp;^ 78 8D&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;JS SHORT 1.0040580B<BR>.............................................................<BR><BR>dd 12ffa0<BR><BR>下硬件访问-Dword断点。<BR><BR>F9运行<BR><BR>硬件中断。<BR><BR>004058A8&nbsp; &nbsp; 9D&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;POPFD&nbsp;&nbsp;//堆栈平衡<BR>004058A9&nbsp; &nbsp; 8B9A 09274000&nbsp; &nbsp;MOV EBX,DWORD PTR DS:[EDX+402709]<BR>004058AF&nbsp; &nbsp; 898A 09274000&nbsp; &nbsp;MOV DWORD PTR DS:[EDX+402709],ECX<BR>004058B5&nbsp; &nbsp; FFE3&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;JMP EBX&nbsp;&nbsp;//跳往OEP 4010CC<BR><BR>004010CC&nbsp; &nbsp;&nbsp; &nbsp;55&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;DB 55&nbsp; &nbsp;&nbsp;&nbsp;//右键清除分析<BR>004010CD&nbsp; &nbsp;&nbsp; &nbsp;8B&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;DB 8B<BR>004010CE&nbsp; &nbsp;&nbsp; &nbsp;EC&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;DB EC<BR>004010CF&nbsp; &nbsp;&nbsp; &nbsp;83&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;DB 83<BR>004010D0&nbsp; &nbsp;&nbsp; &nbsp;EC&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;DB EC<BR>004010D1&nbsp; &nbsp;&nbsp; &nbsp;44&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;DB 44&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;CHAR 'D'<BR>004010D2&nbsp; &nbsp;&nbsp; &nbsp;56&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;DB 56&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;CHAR 'V'<BR>004010D3&nbsp; &nbsp;&nbsp; &nbsp;FF&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;DB FF<BR>004010D4&nbsp; &nbsp;&nbsp; &nbsp;15&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;DB 15<BR>004010D5&nbsp; &nbsp;.&nbsp;&nbsp;E4634000&nbsp; &nbsp;&nbsp; &nbsp;DD &lt;&amp;KERNEL32.GetCommandLineA&gt;<BR>004010D9&nbsp; &nbsp;&nbsp; &nbsp;8B&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;DB 8B<BR>004010DA&nbsp; &nbsp;&nbsp; &nbsp;F0&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;DB F0<BR>004010DB&nbsp; &nbsp;&nbsp; &nbsp;8A&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;DB 8A<BR>004010DC&nbsp; &nbsp;&nbsp; &nbsp;00&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;DB 00<BR>004010DD&nbsp; &nbsp;&nbsp; &nbsp;3C&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;DB 3C&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;CHAR '&lt;'<BR>004010DE&nbsp; &nbsp;&nbsp; &nbsp;22&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;DB 22&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;CHAR '"'<BR>004010DF&nbsp; &nbsp;&nbsp; &nbsp;75&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;DB 75&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;CHAR 'u'<BR>................................................................................<BR><BR>004010CC&nbsp; &nbsp; 55&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;PUSH EBP&nbsp; &nbsp;//在这里用Loadpe直接脱壳<BR>004010CD&nbsp; &nbsp; 8BEC&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;MOV EBP,ESP<BR>004010CF&nbsp; &nbsp; 83EC 44&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;SUB ESP,44<BR>004010D2&nbsp; &nbsp; 56&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;PUSH ESI<BR>004010D3&nbsp; &nbsp; FF15 E4634000&nbsp; &nbsp;CALL DWORD PTR DS:[&lt;&amp;KERNEL32.GetCommand&gt;; KERNEL32.GetCommandLineA<BR>004010D9&nbsp; &nbsp; 8BF0&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;MOV ESI,EAX<BR>004010DB&nbsp; &nbsp; 8A00&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;MOV AL,BYTE PTR DS:[EAX]<BR>004010DD&nbsp; &nbsp; 3C 22&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;CMP AL,22<BR>004010DF&nbsp; &nbsp; 75 1B&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;JNZ SHORT 1.004010FC<BR>004010E1&nbsp; &nbsp; 56&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;PUSH ESI<BR>004010E2&nbsp; &nbsp; FF15 F4644000&nbsp; &nbsp;CALL DWORD PTR DS:[&lt;&amp;USER32.CharNextA&gt;]&nbsp;&nbsp;; USER32.CharNextA<BR>004010E8&nbsp; &nbsp; 8BF0&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;MOV ESI,EAX<BR>004010EA&nbsp; &nbsp; 8A00&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;MOV AL,BYTE PTR DS:[EAX]<BR>004010EC&nbsp; &nbsp; 84C0&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;TEST AL,AL<BR>004010EE&nbsp; &nbsp; 74 04&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;JE SHORT 1.004010F4<BR>004010F0&nbsp; &nbsp; 3C 22&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;CMP AL,22<BR>004010F2&nbsp;&nbsp;^ 75 ED&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;JNZ SHORT 1.004010E1<BR>004010F4&nbsp; &nbsp; 803E 22&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;CMP BYTE PTR DS:[ESI],22<BR>................................................................................<BR><BR>运行ImportREC，选择这个进程。把OEP改为000010cc，点IT AutoSearch，点“Get Import”,函数都是有效的。FixDump，无法运行。倒，用Loadpe重建Pe,正常运行。<BR><BR>继续OD载入它的主程序。<BR><BR>00408000 &gt;&nbsp;&nbsp;9C&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;PUSHFD&nbsp;&nbsp;//主程序外壳入口。<BR>00408001&nbsp; &nbsp; 55&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;PUSH EBP<BR>00408002&nbsp; &nbsp; E8 EC000000&nbsp; &nbsp;&nbsp;&nbsp;CALL Vgcrypt.004080F3<BR>00408007&nbsp; &nbsp; 87D5&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;XCHG EBP,EDX<BR>00408009&nbsp; &nbsp; 5D&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;POP EBP<BR>0040800A&nbsp; &nbsp; 60&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;PUSHAD&nbsp; &nbsp;&nbsp;&nbsp;//从这这句过后用ESP定律吧，<BR>0040800B&nbsp; &nbsp; 87D5&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;XCHG EBP,EDX&nbsp; &nbsp;&nbsp;&nbsp;//到这里ESP=12ffa0<BR>0040800D&nbsp; &nbsp; 80BD 15274000 0&gt;CMP BYTE PTR SS:[EBP+402715],1<BR>00408014&nbsp; &nbsp; 74 39&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;JE SHORT Vgcrypt.0040804F<BR>00408016&nbsp; &nbsp; C685 15274000 0&gt;MOV BYTE PTR SS:[EBP+402715],1<BR>0040801D&nbsp; &nbsp; E9 E4000000&nbsp; &nbsp;&nbsp;&nbsp;JMP Vgcrypt.00408106<BR>00408022&nbsp;&nbsp;- E9 93819AFE&nbsp; &nbsp;&nbsp;&nbsp;JMP FEDB01BA<BR>................................................................................<BR><BR>dd 12ffa0<BR><BR>下硬件访问-Dword断点。<BR><BR>F9运行<BR><BR>硬件中断。<BR><BR>0040805C&nbsp; &nbsp; 9D&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;POPFD&nbsp;&nbsp;//堆栈平衡<BR>0040805D&nbsp; &nbsp; 8B9A 09274000&nbsp; &nbsp;MOV EBX,DWORD PTR DS:[EDX+402709]<BR>00408063&nbsp; &nbsp; 898A 09274000&nbsp; &nbsp;MOV DWORD PTR DS:[EDX+402709],ECX<BR>00408069&nbsp; &nbsp; FFE3&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;JMP EBX&nbsp;&nbsp;//外壳出口，跳向Oep吗?<BR><BR>00407000&nbsp; &nbsp; 9C&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;PUSHFD&nbsp;&nbsp;//到这里，和最外层入口一样，原来有多层壳。<BR>00407001&nbsp; &nbsp; 55&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;PUSH EBP<BR>00407002&nbsp; &nbsp; E8 EC000000&nbsp; &nbsp;&nbsp;&nbsp;CALL Vgcrypt.004070F3<BR>00407007&nbsp; &nbsp; 87D5&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;XCHG EBP,EDX<BR>00407009&nbsp; &nbsp; 5D&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;POP EBP<BR>0040700A&nbsp; &nbsp; 60&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;PUSHAD&nbsp; &nbsp; //还是Esp定律，不过硬件断点不变。<BR>0040700B&nbsp; &nbsp; 87D5&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;XCHG EBP,EDX&nbsp;&nbsp;//F8单步到这里按F9<BR>0040700D&nbsp; &nbsp; 80BD 15274000 0&gt;CMP BYTE PTR SS:[EBP+402715],1<BR>00407014&nbsp; &nbsp; 74 39&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;JE SHORT Vgcrypt.0040704F<BR>00407016&nbsp; &nbsp; C685 15274000 0&gt;MOV BYTE PTR SS:[EBP+402715],1<BR>0040701D&nbsp; &nbsp; E9 E4000000&nbsp; &nbsp;&nbsp;&nbsp;JMP Vgcrypt.00407106<BR>00407022&nbsp;&nbsp;- E9 E3C097F2&nbsp; &nbsp;&nbsp;&nbsp;JMP F2D8310A<BR>00407027&nbsp; &nbsp; 5F&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;POP EDI<BR>00407028&nbsp; &nbsp; 9A 45F25421 197&gt;CALL FAR 7B19:2154F245&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; ; 远距呼叫<BR>................................................................................<BR><BR>0040705C&nbsp; &nbsp; 9D&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;POPFD<BR>0040705D&nbsp; &nbsp; 8B9A 09274000&nbsp; &nbsp;MOV EBX,DWORD PTR DS:[EDX+402709]<BR>00407063&nbsp; &nbsp; 898A 09274000&nbsp; &nbsp;MOV DWORD PTR DS:[EDX+402709],ECX<BR>00407069&nbsp; &nbsp; FFE3&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;JMP EBX&nbsp;&nbsp;//进入第三层壳。<BR><BR>00406000&nbsp; &nbsp; 9C&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;PUSHFD<BR>00406001&nbsp; &nbsp; 55&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;PUSH EBP<BR>00406002&nbsp; &nbsp; E8 EC000000&nbsp; &nbsp;&nbsp;&nbsp;CALL Vgcrypt.004060F3<BR>00406007&nbsp; &nbsp; 87D5&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;XCHG EBP,EDX<BR>00406009&nbsp; &nbsp; 5D&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;POP EBP<BR>0040600A&nbsp; &nbsp; 60&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;PUSHAD&nbsp; &nbsp;&nbsp; &nbsp; //还是Esp定律，不过硬件断点不变。<BR>0040600B&nbsp; &nbsp; 87D5&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;XCHG EBP,EDX&nbsp; &nbsp; //F8单步到这里按F9<BR>0040600D&nbsp; &nbsp; 80BD 15274000 0&gt;CMP BYTE PTR SS:[EBP+402715],1<BR>00406014&nbsp; &nbsp; 74 39&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;JE SHORT Vgcrypt.0040604F<BR>00406016&nbsp; &nbsp; C685 15274000 0&gt;MOV BYTE PTR SS:[EBP+402715],1<BR>0040601D&nbsp; &nbsp; E9 E4000000&nbsp; &nbsp;&nbsp;&nbsp;JMP Vgcrypt.00406106<BR>00406022&nbsp;&nbsp;- E9 E0B4662D&nbsp; &nbsp;&nbsp;&nbsp;JMP 2DA71507<BR>................................................................................<BR><BR>0040605C&nbsp; &nbsp; 9D&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;POPFD<BR>0040605D&nbsp; &nbsp; 8B9A 09274000&nbsp; &nbsp;MOV EBX,DWORD PTR DS:[EDX+402709]<BR>00406063&nbsp; &nbsp; 898A 09274000&nbsp; &nbsp;MOV DWORD PTR DS:[EDX+402709],ECX<BR>00406069&nbsp; &nbsp; FFE3&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;JMP EBX&nbsp;&nbsp;//进入第四层壳。<BR><BR>00405000&nbsp; &nbsp; 9C&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;PUSHFD<BR>00405001&nbsp; &nbsp; 55&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;PUSH EBP<BR>00405002&nbsp; &nbsp; E8 EC000000&nbsp; &nbsp;&nbsp;&nbsp;CALL Vgcrypt.004050F3<BR>00405007&nbsp; &nbsp; 87D5&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;XCHG EBP,EDX<BR>00405009&nbsp; &nbsp; 5D&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;POP EBP<BR>0040500A&nbsp; &nbsp; 60&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;PUSHAD&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; //还是Esp定律，不过硬件断点不变。<BR>0040500B&nbsp; &nbsp; 87D5&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;XCHG EBP,EDX&nbsp; &nbsp;&nbsp; &nbsp;//F8单步到这里按F9<BR>0040500D&nbsp; &nbsp; 80BD 15274000 0&gt;CMP BYTE PTR SS:[EBP+402715],1<BR>00405014&nbsp; &nbsp; 74 39&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;JE SHORT Vgcrypt.0040504F<BR>00405016&nbsp; &nbsp; C685 15274000 0&gt;MOV BYTE PTR SS:[EBP+402715],1<BR>0040501D&nbsp; &nbsp; E9 E4000000&nbsp; &nbsp;&nbsp;&nbsp;JMP Vgcrypt.00405106<BR>00405022&nbsp;&nbsp;- E9 BBE11B00&nbsp; &nbsp;&nbsp;&nbsp;JMP 005C31E2<BR>00405027&nbsp; &nbsp; 94&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;XCHG EAX,ESP<BR>00405028&nbsp; &nbsp; 6D&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;INS DWORD PTR ES:[EDI],DX&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; ; I/O 命令<BR>................................................................................<BR><BR>0040505C&nbsp; &nbsp; 9D&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;POPFD<BR>0040505D&nbsp; &nbsp; 8B9A 09274000&nbsp; &nbsp;MOV EBX,DWORD PTR DS:[EDX+402709]<BR>00405063&nbsp; &nbsp; 898A 09274000&nbsp; &nbsp;MOV DWORD PTR DS:[EDX+402709],ECX<BR>00405069&nbsp; &nbsp; FFE3&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;JMP EBX&nbsp; &nbsp; //EBX=401000，程序OEP入口。<BR><BR>00401000&nbsp; &nbsp;&nbsp; &nbsp;E8&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;DB E8&nbsp;&nbsp;//这里右键清除分析。<BR>00401001&nbsp; &nbsp;&nbsp; &nbsp;51&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;DB 51&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;CHAR 'Q'<BR>00401002&nbsp; &nbsp;&nbsp; &nbsp;06&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;DB 06<BR>00401003&nbsp; &nbsp;&nbsp; &nbsp;00&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;DB 00<BR>00401004&nbsp; &nbsp;&nbsp; &nbsp;00&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;DB 00<BR>00401005&nbsp; &nbsp;&nbsp; &nbsp;0B&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;DB 0B<BR>00401006&nbsp; &nbsp;&nbsp; &nbsp;C0&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;DB C0<BR>00401007&nbsp; &nbsp;&nbsp; &nbsp;0F&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;DB 0F<BR>00401008&nbsp; &nbsp;&nbsp; &nbsp;84&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;DB 84<BR>00401009&nbsp; &nbsp;&nbsp; &nbsp;D8&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;DB D8<BR>0040100A&nbsp; &nbsp;&nbsp; &nbsp;00&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;DB 00<BR>0040100B&nbsp; &nbsp;&nbsp; &nbsp;00&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;DB 00<BR>0040100C&nbsp; &nbsp;&nbsp; &nbsp;00&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;DB 00<BR>0040100D&nbsp; &nbsp;&nbsp; &nbsp;96&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;DB 96<BR>0040100E&nbsp; &nbsp;&nbsp; &nbsp;80&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;DB 80<BR>0040100F&nbsp; &nbsp;&nbsp; &nbsp;3E&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;DB 3E&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;CHAR '&gt;'<BR>00401010&nbsp; &nbsp;&nbsp; &nbsp;00&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;DB 00<BR>................................................................................<BR><BR>00401000&nbsp; &nbsp; E8 51060000&nbsp; &nbsp;&nbsp;&nbsp;CALL &lt;JMP.&amp;KERNEL32.GetCommandLineA&gt;&nbsp;&nbsp;//汇编语言入口，这里用Loadpe直接脱壳。<BR>00401005&nbsp; &nbsp; 0BC0&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;OR EAX,EAX<BR>00401007&nbsp; &nbsp; 0F84 D8000000&nbsp; &nbsp;JE Vgcrypt.004010E5<BR>0040100D&nbsp; &nbsp; 96&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;XCHG EAX,ESI<BR>0040100E&nbsp; &nbsp; 803E 00&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;CMP BYTE PTR DS:[ESI],0<BR>00401011&nbsp; &nbsp; 0F84 CE000000&nbsp; &nbsp;JE Vgcrypt.004010E5<BR>00401017&nbsp; &nbsp; C1E0 08&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;SHL EAX,8<BR>0040101A&nbsp; &nbsp; AC&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;LODS BYTE PTR DS:[ESI]<BR>0040101B&nbsp; &nbsp; 3D 74707972&nbsp; &nbsp;&nbsp;&nbsp;CMP EAX,72797074<BR>00401020&nbsp; &nbsp; 75 05&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;JNZ SHORT Vgcrypt.00401027<BR>00401022&nbsp; &nbsp; 803E 2E&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;CMP BYTE PTR DS:[ESI],2E<BR>00401025&nbsp; &nbsp; 75 0E&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;JNZ SHORT Vgcrypt.00401035<BR>00401027&nbsp; &nbsp; 3D 6578652E&nbsp; &nbsp;&nbsp;&nbsp;CMP EAX,2E657865<BR>0040102C&nbsp; &nbsp; 74 07&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;JE SHORT Vgcrypt.00401035<BR>0040102E&nbsp; &nbsp; 3D 4558452E&nbsp; &nbsp;&nbsp;&nbsp;CMP EAX,2E455845<BR>00401033&nbsp;&nbsp;^ 75 D9&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;JNZ SHORT Vgcrypt.0040100E<BR>00401035&nbsp; &nbsp; AC&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;LODS BYTE PTR DS:[ESI]<BR>00401036&nbsp; &nbsp; 3C 20&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;CMP AL,20<BR>................................................................................<BR><BR>运行ImportREC，选择这个进程。把OEP改为00001000，点IT AutoSearch，点“Get Import”，函数都是有效的。FixDump，正常运行。]]></description><category>加密解密</category><comments>http://www.redwolf.com.cn/redwolf/post/06102419.html#comment</comments><wfw:comment>http://www.redwolf.com.cn/redwolf/</wfw:comment><wfw:commentRss>http://www.redwolf.com.cn/redwolf/feed.asp?cmt=238</wfw:commentRss><trackback:ping>http://www.redwolf.com.cn/redwolf/cmd.asp?act=tb&amp;id=238&amp;key=39deffc8</trackback:ping></item><item><title>手动脱壳入门第十六篇 MoleBox 2.x</title><author>redwolf@redwolf.com.cn (redwolf)</author><link>http://www.redwolf.com.cn/redwolf/post/06102418.html</link><pubDate>Tue, 24 Oct 2006 17:07:31 +0800</pubDate><guid>http://www.redwolf.com.cn/redwolf/post/06102418.html</guid><description><![CDATA[<P>【脱文标题】 手动脱壳入门第十六篇 MoleBox 2.x<BR><BR>【脱文作者】 weiyi75[Dfcg] <BR><BR>【作者邮箱】 <A href="mailto:weiyi75@sohu.com">weiyi75@sohu.com</A> <BR><BR>【作者主页】 Dfcg官方大本营 <BR><BR>【使用工具】 Peid,Ollydbg,ImportREC1.6f,Loadpe<BR><BR>【脱壳平台】 Win2K/XP<BR><BR>【<A href="http://cnxhacker.net/download/">软件</A>名称】 IMCaster ICQ E-Marketer<BR><BR>【<A href="http://cnxhacker.net/download/">软件</A>简介】 IMCaster ICQ E-Marketer是一个强大的ICQ即时信息查找工具。你可以根据不同的条件（如：性别、年龄、国家或者职业等等）搜索在线ICQ用户，向他们发送信息以提高你网站或企业的知名度。<BR><BR>【<A href="http://cnxhacker.net/download/">软件</A>大小】 2.61M<BR><BR>【<A href="http://cnxhacker.net/download/">下载</A>地址】 <A href="http://www.imcaster.com/Downloads/IMCastSetupEnt.exe" target=_blank>http://www.imcaster.com/Downloads/IMCastSetupEnt.exe</A><BR><BR>【加壳方式】 MoleBox 2.x.x -&gt; Mole Studio [Overlay]<BR><BR>【保护方式】 MoleBox压缩壳<BR><BR>【脱壳声明】 我是一只小菜鸟，偶得一点心得，愿与大家分享：)<BR><BR><BR>-------------------------------------------------------------------------------- <BR><BR>【脱壳内容】 <BR><BR>首先Peid查壳，为MoleBox 2.x.x -&gt; Mole Studio [Overlay]，OD载入运行，无任何异常，判断其为压缩壳。<BR><BR>004CD61C &gt;&nbsp;&nbsp;60&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;pushad&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;//外壳入口，和Upx等查不多。当我们脱壳上一个台阶后，普通壳就不用慢慢跟踪了。 <BR>004CD61D&nbsp; &nbsp; E8 4F000000&nbsp; &nbsp;&nbsp;&nbsp;call imcast.004CD671&nbsp;&nbsp;//F8单步到这里，看Esp=0012FFA4<BR>004CD622&nbsp; &nbsp; 2120&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;and dword ptr ds:[eax], esp<BR>004CD624&nbsp; &nbsp; 76 41&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;jbe short imcast.004CD667<BR>004CD626&nbsp; &nbsp; B4 13&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;mov ah, 13<BR>004CD628&nbsp; &nbsp; 3B63 51&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;cmp esp, dword ptr ds:[ebx+51]<BR>004CD62B&nbsp; &nbsp; 38CA&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;cmp dl, cl<BR>004CD62D&nbsp; &nbsp; D8ACD0 BBB52910 fsubr dword ptr ds:[eax+edx*8+1029B5BB]<BR>004CD634&nbsp; &nbsp; 9F&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;lahf<BR>004CD635&nbsp; &nbsp; A7&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;cmps dword ptr ds:[esi], dword ptr es:[e&gt;<BR>004CD636&nbsp; &nbsp; 9B&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;wait<BR>004CD637&nbsp; &nbsp; BD B2BB61F4&nbsp; &nbsp;&nbsp;&nbsp;mov ebp, F461BBB2<BR>004CD63C&nbsp; &nbsp; B4 C9&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;mov ah, 0C9<BR>004CD63E&nbsp; &nbsp; 17&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;pop ss<BR>004CD63F&nbsp; &nbsp; BB 652286EE&nbsp; &nbsp;&nbsp;&nbsp;mov ebx, EE862265<BR>004CD644&nbsp; &nbsp; 97&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;xchg eax, edi<BR>004CD645&nbsp; &nbsp; 2AED&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;sub ch, ch<BR>004CD647&nbsp; &nbsp; 30DD&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;xor ch, bl<BR>004CD649&nbsp; &nbsp; BB A64DED09&nbsp; &nbsp;&nbsp;&nbsp;mov ebx, 9ED4DA6<BR>004CD64E&nbsp; &nbsp; 5D&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;pop ebp<BR>004CD64F&nbsp; &nbsp; FC&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;cld<BR>004CD650&nbsp; &nbsp; B7 01&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;mov bh, 1<BR>004CD652&nbsp; &nbsp; C01A AD&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;rcr byte ptr ds:[edx], 0AD<BR>004CD655&nbsp; &nbsp; DFEF&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;fucomip st, st(7)<BR>004CD657&nbsp; &nbsp; FD&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;std<BR>004CD658&nbsp; &nbsp; ED&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;in eax, dx<BR>004CD659&nbsp; &nbsp; A7&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;cmps dword ptr ds:[esi], dword ptr es:[e&gt;<BR>004CD65A&nbsp; &nbsp; 6A 38&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;push 38<BR>004CD65C&nbsp; &nbsp; CE&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;into<BR>............................................................................<BR>启用Esp定律。 <BR><BR>dd 12ffa4<BR><BR>下硬件访问-Dword断点。<BR><BR>F9运行<BR><BR>硬件中断。<BR><BR>004CD5D0&nbsp; &nbsp; 61&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;popad&nbsp; &nbsp;&nbsp; &nbsp;//&nbsp;&nbsp;关键字 <BR>004CD5D1&nbsp;&nbsp;- FFE0&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;jmp eax&nbsp; &nbsp; // 断在这里,往上看到Popad关键字<BR><BR>0048636F&nbsp; &nbsp; 55&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;push ebp&nbsp;&nbsp;//F8到达Oep,Loadpe直接脱壳。<BR>00486370&nbsp; &nbsp; 8BEC&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;mov ebp, esp<BR>00486372&nbsp; &nbsp; 6A FF&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;push -1<BR>00486374&nbsp; &nbsp; 68 E0144900&nbsp; &nbsp;&nbsp;&nbsp;push imcast.004914E0<BR>00486379&nbsp; &nbsp; 68 2C654800&nbsp; &nbsp;&nbsp;&nbsp;push imcast.0048652C&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;; jmp to MSVCRT._except_handler3<BR>0048637E&nbsp; &nbsp; 64:A1 00000000&nbsp;&nbsp;mov eax, dword ptr fs:[0]<BR>00486384&nbsp; &nbsp; 50&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;push eax<BR>00486385&nbsp; &nbsp; 64:8925 0000000&gt;mov dword ptr fs:[0], esp<BR>0048638C&nbsp; &nbsp; 83EC 68&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;sub esp, 68<BR>0048638F&nbsp; &nbsp; 53&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;push ebx<BR>00486390&nbsp; &nbsp; 56&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;push esi<BR>00486391&nbsp; &nbsp; 57&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;push edi<BR>00486392&nbsp; &nbsp; 8965 E8&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;mov dword ptr ss:[ebp-18], esp<BR>00486395&nbsp; &nbsp; 33DB&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;xor ebx, ebx<BR>00486397&nbsp; &nbsp; 895D FC&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;mov dword ptr ss:[ebp-4], ebx<BR>0048639A&nbsp; &nbsp; 6A 02&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;push 2<BR>0048639C&nbsp; &nbsp; FF15 C4984800&nbsp; &nbsp;call dword ptr ds:[4898C4]&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;; MSVCRT.__set_app_type<BR>004863A2&nbsp; &nbsp; 59&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;pop ecx<BR>004863A3&nbsp; &nbsp; 830D B42C4A00 F&gt;or dword ptr ds:[4A2CB4], FFFFFFFF<BR>004863AA&nbsp; &nbsp; 830D B82C4A00 F&gt;or dword ptr ds:[4A2CB8], FFFFFFFF<BR>004863B1&nbsp; &nbsp; FF15 C8984800&nbsp; &nbsp;call dword ptr ds:[4898C8]&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;; MSVCRT.__p__fmode<BR>............................................................................<BR><BR>脱壳后发现程序不能运行,这时需要用Imprec修复引入函数表(Import Table)<BR><BR>在Oep处填8636F,点IT自动搜索,然后点获输入信息,有9个指针没有修复。<BR><BR>千万别用等级1修复，看看如图，等级修复的些什么，这些假东西保存程序肯定无法运行的。<BR><BR><BR><IMG onmouseover="if(this.alt) this.style.cursor='hand';" style="FILTER: ; WIDTH: 500px; CURSOR: hand; HEIGHT: 400px" onclick="window.open('/editor/UploadFile/2005-6/12/200561221012588.jpg');" height=400 alt="" hspace=0 src="http://www.cnxhacker.com/editor/UploadFile/2005-6/12/200561221012588.jpg" width=500 onload="if(this.width>screen.width-333) {this.width=screen.width-333;this.alt='Click Here to Open New Window';}" border=0 pop="Click Here to Open New Window"><BR><BR><BR>呵呵，用跟踪等级3为我们修复3个，剩下6个就靠我们自己了。<BR><BR>我以 00089100 处 004D48A8 处的指针修复举个例子。<BR><BR>右键－反汇编/16进制显示<BR><BR>004D48BF&nbsp; &nbsp; call [4D80F0]&nbsp; &nbsp; // = kernel32.dll/001F/CloseHandle&nbsp;&nbsp;//这里最先看到CloseHandle就是我们要修复的指针。<BR><BR>其余的方法一样，注意并不是所有的脱壳程序都可以用这个方法，如Asprotect 1.23rc4无法修复的指针就可以用这个办法修复,切勿过于依赖，每个加密壳处理方法都不相同。<BR><BR>于是我们手动填入 CloseHandle<BR><BR>同理修复。<BR><BR>00089120&nbsp;&nbsp;004D4793&nbsp;&nbsp;<BR><BR>为<BR><BR>CreateFileA<BR><BR>0008912C&nbsp;&nbsp;004D498A<BR><BR>为<BR><BR>GetFileAttributesA<BR><BR>00089148&nbsp;&nbsp;004D4BC9<BR><BR>为<BR><BR>UnmapViewOfFile<BR><BR>0008914C&nbsp;&nbsp;004D4B8A<BR><BR>为<BR><BR>MapViewOfFile<BR><BR>0008915C&nbsp;&nbsp;004D49B0<BR><BR>为<BR><BR>CreateFileMappingA<BR><BR><BR>全部指针修复，修复抓取文件，正常运行。<BR><BR><BR><A href="http://cnxhacker.net/download/sort/188_1.html">破解</A> 龙岱客已经分析的很清楚。<BR><BR>相关页面<BR><BR><FONT face=Verdana><A href="http://cnxhacker.net/article/show/1743.html">http://cnxhacker.net/article/show/1743.html</A></FONT><BR><BR>【<A href="http://cnxhacker.net/download/sort/188_1.html">破解</A>小结】<BR><BR>我很忙,没时间总结了,谢谢大家耐心看完!<IMG height=1 src="http://www.cnxhacker.com/hits.asp?id=1744" width=1 border=0> </P><P>&nbsp;</P><P><B>手动脱壳入门第十六篇 MoleBox 2.x 续之Patch IAT加密</B></P><P>【脱文动画】<FONT face=Verdana><A href="http://cnxhacker.net/download/show/662.html">http://cnxhacker.net/download/show/662.html</A></FONT></P><P>【脱文标题】 手动脱壳入门第十六篇 MoleBox 2.x 续之Patch IAT加密<BR><BR>【脱文作者】 weiyi75[Dfcg] <BR><BR>【作者邮箱】 <A href="mailto:weiyi75@sohu.com">weiyi75@sohu.com</A> <BR><BR>【作者主页】 Dfcg官方大本营 <BR><BR>【使用工具】 Peid,Ollydbg,ImportREC1.6f,Loadpe<BR><BR>【脱壳平台】 Win2K/XP<BR><BR>【<A href="http://cnxhacker.net/download/"><A href="http://cnxhacker.net/download/">软件</A></A>名称】 IMCaster ICQ E-Marketer<BR><BR>【<A href="http://cnxhacker.net/download/"><A href="http://cnxhacker.net/download/">软件</A></A>简介】 IMCaster ICQ E-Marketer是一个强大的ICQ即时信息查找工具。你可以根据不同的条件（如：性别、年龄、国家或者职业等等）搜索在线ICQ用户，向他们发送信息以提高你网站或企业的知名度。<BR><BR>【<A href="http://cnxhacker.net/download/"><A href="http://cnxhacker.net/download/">软件</A></A>大小】 2.61M<BR><BR>【<A href="http://cnxhacker.net/download/"><A href="http://cnxhacker.net/download/">下载</A></A>地址】 <A href="http://www.imcaster.com/Downloads/IMCastSetupEnt.exe" target=_blank>http://www.imcaster.com/Downloads/IMCastSetupEnt.exe</A> 或 二哥推荐的教学篇里面<A href="http://cnxhacker.net/download/"><A href="http://cnxhacker.net/download/">下载</A></A><BR><BR>【加壳方式】 MoleBox 2.x.x -&gt; Mole Studio [Overlay]<BR><BR>【保护方式】 MoleBox压缩壳<BR><BR>【脱壳声明】 我是一只小菜鸟，偶得一点心得，愿与大家分享：)<BR><BR>-------------------------------------------------------------------------------- <BR><BR>【脱壳内容】 <BR><BR>首先Peid查壳，为MoleBox 2.x.x -&gt; Mole Studio [Overlay]，OD载入运行，无任何异常，判断其为压缩壳。<BR><BR>前面二哥的修复方法大家都看到了，继然IAT可以加密就可以IAT解密，实际是跳过。<BR><BR>一口气写OD脱壳脚本写到16篇后发现这篇IAT被加密了，只写个找OEP的脚本没意思，要写脚本首先得会脱这个壳。<BR><BR>脱壳后发现程序不能运行,这时需要用Imprec修复引入函数表(Import Table)<BR><BR>在Oep处填8636F,点IT自动搜索,然后点获输入信息,有9个指针没有修复。<BR><BR>IAT的起始地址是89000,大小B80<BR><BR>根据Imprec提示89110 处的指针被加密<BR><BR>就从这里入手，也可以随便找个加密指针处入手。<BR><BR>OD载入程序，命令行<BR><BR>Hw 489110<BR><BR>因为这个地址先前写入的地址是对的，然后程序将这个地址加密为Imprec不认识的东西，我们就要跟踪这个过程。<BR><BR>F9运行<BR><BR>004D1237&nbsp; &nbsp;&nbsp;&nbsp;8B45 F8&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; mov eax,dword ptr ss:[ebp-8]&nbsp; &nbsp;&nbsp; &nbsp;; imcast.00489110<BR>004D123A&nbsp; &nbsp;&nbsp;&nbsp;40&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;inc eax<BR>004D123B&nbsp; &nbsp;&nbsp;&nbsp;40&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;inc eax<BR>004D123C&nbsp; &nbsp;&nbsp;&nbsp;8945 F8&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; mov dword ptr ss:[ebp-8],eax<BR>004D123F&nbsp; &nbsp;&nbsp;&nbsp;0FB745 E2&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;movzx eax,word ptr ss:[ebp-1E]<BR>004D1243&nbsp; &nbsp;&nbsp;&nbsp;C1F8 08&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; sar eax,8<BR>004D1246&nbsp; &nbsp;&nbsp;&nbsp;0FB74D E2&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;movzx ecx,word ptr ss:[ebp-1E]<BR><BR>堆栈友好提示<BR><BR>0012FCD8&nbsp; &nbsp; 7FFDF000<BR>0012FCDC&nbsp; &nbsp; 47D047D0<BR>0012FCE0&nbsp; &nbsp; 47334733<BR>0012FCE4&nbsp; &nbsp; 5EBC5EBC<BR>0012FCE8&nbsp; &nbsp; 72BF72BF<BR><BR>继续3次F9，注意堆栈友好提示<BR><BR>004D13CE&nbsp; &nbsp;&nbsp;&nbsp;FF15 24804D00&nbsp; &nbsp;&nbsp; &nbsp; call dword ptr ds:[&lt;&amp;KERNEL32.Get&gt;; KERNEL32.GetProcAddress<BR>004D13D4&nbsp; &nbsp;&nbsp;&nbsp;8B4D F0&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; mov ecx,dword ptr ss:[ebp-10]<BR>004D13D7&nbsp; &nbsp;&nbsp;&nbsp;8901&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; mov dword ptr ds:[ecx],eax<BR>004D13D9&nbsp; &nbsp;&nbsp;&nbsp;EB 26&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;jmp short imcast.004D1401<BR>004D13DB&nbsp; &nbsp;&nbsp;&nbsp;8B55 F0&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; mov edx,dword ptr ss:[ebp-10]<BR>004D13DE&nbsp; &nbsp;&nbsp;&nbsp;8B02&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; mov eax,dword ptr ds:[edx]<BR>004D13E0&nbsp; &nbsp;&nbsp;&nbsp;25 FFFF0000&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;and eax,0FFFF<BR>004D13E5&nbsp; &nbsp;&nbsp;&nbsp;50&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;push eax<BR>004D13E6&nbsp; &nbsp;&nbsp;&nbsp;8B4D F4&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; mov ecx,dword ptr ss:[ebp-C]<BR>004D13E9&nbsp; &nbsp;&nbsp;&nbsp;51&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;push ecx<BR>004D13EA&nbsp; &nbsp;&nbsp;&nbsp;FF15 24804D00&nbsp; &nbsp;&nbsp; &nbsp; call dword ptr ds:[&lt;&amp;KERNEL32.Get&gt;; KERNEL32.GetProcAddress<BR><BR>堆栈友好提示<BR><BR>0012FE2C&nbsp; &nbsp; 77E7ED4C&nbsp;&nbsp;KERNEL32.SetFilePointer //这个和EAX中是一样的，都是正确指针<BR>0012FE30&nbsp; &nbsp; 6BC4B4AC&nbsp;&nbsp;MFC42.#1576<BR>0012FE34&nbsp; &nbsp; 0049428A&nbsp;&nbsp;imcast.0049428A<BR>0012FE38&nbsp; &nbsp; 004943FE&nbsp;&nbsp;ASCII "KERNEL32.dll"<BR>0012FE3C&nbsp; &nbsp; 00489110&nbsp;&nbsp;imcast.00489110<BR>0012FE40&nbsp; &nbsp; 77E60000&nbsp;&nbsp;KERNEL32.77E60000<BR>0012FE44&nbsp; &nbsp; 00493294&nbsp;&nbsp;imcast.00493294<BR><BR>现在我们<BR><BR>dd 489110 往上看到489100被加密了，呵呵,我说过可以随便找个加密指针处入手。<BR><BR>004D13D9&nbsp; &nbsp; /EB 26&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;jmp short imcast.004D1401<BR><BR>004D1401&nbsp; &nbsp;&nbsp;&nbsp;8B4D EC&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; mov ecx,dword ptr ss:[ebp-14]&nbsp; &nbsp;&nbsp;&nbsp;; imcast.004943FE<BR>004D1404&nbsp; &nbsp;&nbsp;&nbsp;51&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;push ecx<BR>004D1405&nbsp; &nbsp;&nbsp;&nbsp;8B55 F0&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; mov edx,dword ptr ss:[ebp-10]<BR>004D1408&nbsp; &nbsp;&nbsp;&nbsp;52&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;push edx<BR>004D1409&nbsp; &nbsp;&nbsp;&nbsp;E8 12050000&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;call imcast.004D1920 //如果单步过了这里，就Over了。显然它是个加密Call，NOP掉程序正常运行，进去看看。<BR><BR>******************************************<BR><BR>004D1920&nbsp; &nbsp;&nbsp;&nbsp;55&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;push ebp<BR>004D1921&nbsp; &nbsp;&nbsp;&nbsp;8BEC&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; mov ebp,esp<BR>004D1923&nbsp; &nbsp;&nbsp;&nbsp;83EC 10&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; sub esp,10<BR>004D1926&nbsp; &nbsp;&nbsp;&nbsp;C745 FC 00000000&nbsp; &nbsp; mov dword ptr ss:[ebp-4],0<BR>004D192D&nbsp; &nbsp;&nbsp;&nbsp;833D 30F04D00 00&nbsp; &nbsp; cmp dword ptr ds:[4DF030],0<BR>004D1934&nbsp; &nbsp;&nbsp;&nbsp;75 0A&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;jnz short imcast.004D1940<BR><BR>004D1940&nbsp; &nbsp;&nbsp;&nbsp;8B45 08&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; mov eax,dword ptr ss:[ebp+8]&nbsp;&nbsp;//注意这时EAX=77E7ED4C是正确指针<BR>004D1943&nbsp; &nbsp;&nbsp;&nbsp;8B08&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; mov ecx,dword ptr ds:[eax]<BR>004D1945&nbsp; &nbsp;&nbsp;&nbsp;51&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;push ecx<BR>004D1946&nbsp; &nbsp;&nbsp;&nbsp;8B0D 30F04D00&nbsp; &nbsp;&nbsp; &nbsp; mov ecx,dword ptr ds:[4DF030]<BR>004D194C&nbsp; &nbsp;&nbsp;&nbsp;E8 AB380000&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;call imcast.004D51FC<BR>004D1951&nbsp; &nbsp;&nbsp;&nbsp;8945 F8&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; mov dword ptr ss:[ebp-8],eax<BR>004D1954&nbsp; &nbsp;&nbsp;&nbsp;837D F8 00&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; cmp dword ptr ss:[ebp-8],0<BR>004D1958&nbsp; &nbsp;&nbsp;&nbsp;74 45&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;je short imcast.004D199F<BR>004D195A&nbsp; &nbsp;&nbsp;&nbsp;8D55 F0&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; lea edx,dword ptr ss:[ebp-10]<BR>004D195D&nbsp; &nbsp;&nbsp;&nbsp;52&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;push edx<BR>004D195E&nbsp; &nbsp;&nbsp;&nbsp;6A 04&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;push 4<BR>004D1960&nbsp; &nbsp;&nbsp;&nbsp;6A 04&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;push 4<BR>004D1962&nbsp; &nbsp;&nbsp;&nbsp;8B45 08&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; mov eax,dword ptr ss:[ebp+8]<BR>004D1965&nbsp; &nbsp;&nbsp;&nbsp;50&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;push eax<BR>004D1966&nbsp; &nbsp;&nbsp;&nbsp;FF15 70804D00&nbsp; &nbsp;&nbsp; &nbsp; call dword ptr ds:[&lt;&amp;KERNEL32.Vir&gt;; KERNEL32.VirtualProtect<BR>004D196C&nbsp; &nbsp;&nbsp;&nbsp;85C0&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; test eax,eax<BR>004D196E&nbsp; &nbsp;&nbsp;&nbsp;75 0A&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;jnz short imcast.004D197A<BR><BR>004D197A&nbsp; &nbsp;&nbsp;&nbsp;8B4D 08&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; mov ecx,dword ptr ss:[ebp+8]<BR>004D197D&nbsp; &nbsp;&nbsp;&nbsp;8B55 F8&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; mov edx,dword ptr ss:[ebp-8]<BR>004D1980&nbsp; &nbsp;&nbsp;&nbsp;8B02&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; mov eax,dword ptr ds:[edx]<BR>004D1982&nbsp; &nbsp;&nbsp;&nbsp;8901&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; mov dword ptr ds:[ecx],eax //可恶这里; imcast.004D490E<BR>EAX=004D490E&nbsp;&nbsp;dword ptr ds:[ecx] 是推算被加密的地址00489110,实际也是,看OD信息框就知道了。我们必需让EAX是正确的指针。我们看到004D1940 处EAX被赋值，而且当时的EAX是正确指针。<BR><BR>这就容易了<BR><BR>004D1940&nbsp; &nbsp;&nbsp;&nbsp;8B45 08&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; mov eax,dword ptr ss:[ebp+8]<BR><BR>修改为<BR><BR>004D1940&nbsp; &nbsp;&nbsp;&nbsp;8BC0&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; mov eax,eax&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;; KERNEL32.SetFilePointer<BR>004D1942&nbsp; &nbsp;&nbsp;&nbsp;90&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;nop<BR><BR>自给自足<BR><BR>004D1984&nbsp; &nbsp;&nbsp;&nbsp;8D4D F4&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; lea ecx,dword ptr ss:[ebp-C]<BR>004D1987&nbsp; &nbsp;&nbsp;&nbsp;51&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;push ecx<BR>004D1988&nbsp; &nbsp;&nbsp;&nbsp;8B55 F0&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; mov edx,dword ptr ss:[ebp-10]<BR>004D198B&nbsp; &nbsp;&nbsp;&nbsp;52&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;push edx<BR>004D198C&nbsp; &nbsp;&nbsp;&nbsp;6A 04&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;push 4<BR>004D198E&nbsp; &nbsp;&nbsp;&nbsp;8B45 08&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; mov eax,dword ptr ss:[ebp+8]<BR><BR>******************************************<BR><BR>你再<BR><BR>dd 489110 看看就知道了<BR><BR>004D140E&nbsp; &nbsp;&nbsp;&nbsp;83C4 08&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; add esp,8<BR>004D1411&nbsp; &nbsp;^ E9 79FFFFFF&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;jmp imcast.004D138F<BR><BR>....................................................................<BR><BR>好啦，运筹帷幄完毕，既然三次硬件中断时489100被加密了，唉，实际要从489100入手的，怪我一时看错了起始加密指针位置，希望不会误导读者，它实际是循环加密指针，004D1940 会执行N次，从加密指针任何一个地方下断，最终会来到这里，希望大家看懂方法。不过可以补救，重启OD<BR><BR>hr 12ffa4<BR><BR>F9运行，中断两次<BR><BR>为什么不三次，因为我是对489110处下猫腻断点，489100处猫腻时就拦不住了，所以只能两次，然后提前在猫腻前反猫腻。<BR><BR>Ctrl+G 修改<BR><BR>004D1940&nbsp; &nbsp;&nbsp;&nbsp;8B45 08&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; mov eax,dword ptr ss:[ebp+8]<BR><BR>修改为<BR><BR>004D1940&nbsp; &nbsp;&nbsp;&nbsp;8BC0&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; mov eax,eax&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;; KERNEL32.SetFilePointer<BR>004D1942&nbsp; &nbsp;&nbsp;&nbsp;90&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;nop<BR><BR>取消489110处的硬件断点<BR><BR>F9运行<BR><BR>004CD5D0&nbsp; &nbsp;&nbsp;&nbsp;61&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;popad<BR>004CD5D1&nbsp; &nbsp;- FFE0&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; jmp eax&nbsp; &nbsp;//飞向光明之巅<BR><BR>0048636F&nbsp; &nbsp;&nbsp;&nbsp;55&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;push ebp //Loadpe脱壳<BR>00486370&nbsp; &nbsp;&nbsp;&nbsp;8BEC&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; mov ebp,esp<BR>00486372&nbsp; &nbsp;&nbsp;&nbsp;6A FF&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;push -1<BR>00486374&nbsp; &nbsp;&nbsp;&nbsp;68 E0144900&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;push imcast.004914E0<BR>00486379&nbsp; &nbsp;&nbsp;&nbsp;68 2C654800&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;push imcast.0048652C&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;; jmp to MSVCRT._except_handler3<BR>0048637E&nbsp; &nbsp;&nbsp;&nbsp;64:A1 00000000&nbsp; &nbsp;&nbsp; &nbsp;mov eax,dword ptr fs:[0]<BR>00486384&nbsp; &nbsp;&nbsp;&nbsp;50&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;push eax<BR>00486385&nbsp; &nbsp;&nbsp;&nbsp;64:8925 00000000&nbsp; &nbsp; mov dword ptr fs:[0],esp<BR>0048638C&nbsp; &nbsp;&nbsp;&nbsp;83EC 68&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; sub esp,68<BR>0048638F&nbsp; &nbsp;&nbsp;&nbsp;53&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;push ebx<BR>00486390&nbsp; &nbsp;&nbsp;&nbsp;56&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;push esi<BR>................................................................<BR><BR>在Oep处填8636F,点IT自动搜索,然后点获输入信息,全部有效，修复脱壳文件，正常运行。<BR></P><P>// MoleBox 2.x跳过IAT加密 v0.1b<BR>// This script will quickly put you at the OEP And Patch IAT of an MoleBox 2.x EXE.<BR>// Just run it!<BR><BR>var addr<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;sto&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;mov addr,esp&nbsp;&nbsp;//Esp定律<BR><BR>&nbsp;&nbsp;gpa "VirtualProtect","kernel32.dll"&nbsp;&nbsp;//特征API<BR>&nbsp;&nbsp;bp $RESULT<BR>&nbsp;&nbsp;run<BR><BR>&nbsp;&nbsp;bc $RESULT<BR>&nbsp;&nbsp;rtu<BR><BR>&nbsp;&nbsp;find eip,#8901#&nbsp;&nbsp;//查找特征加密语句<BR>&nbsp;&nbsp;bp $RESULT<BR>&nbsp;&nbsp;run<BR>&nbsp;&nbsp;bc $RESULT<BR>&nbsp;&nbsp;repl eip, #8901#, #9090#, 10&nbsp;&nbsp;//替换为9090<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;bphws addr,"r"&nbsp; &nbsp; <BR>&nbsp;&nbsp;run<BR><BR>&nbsp;&nbsp;sto<BR>&nbsp;&nbsp;bphwc addr<BR>&nbsp;&nbsp;cmt eip,"OEP To Get,Please dumped it,Enjoy!"<BR><BR></P>]]></description><category>加密解密</category><comments>http://www.redwolf.com.cn/redwolf/post/06102418.html#comment</comments><wfw:comment>http://www.redwolf.com.cn/redwolf/</wfw:comment><wfw:commentRss>http://www.redwolf.com.cn/redwolf/feed.asp?cmt=237</wfw:commentRss><trackback:ping>http://www.redwolf.com.cn/redwolf/cmd.asp?act=tb&amp;id=237&amp;key=123180d4</trackback:ping></item><item><title>手动脱壳入门第十五篇 FSG 1.33</title><author>redwolf@redwolf.com.cn (redwolf)</author><link>http://www.redwolf.com.cn/redwolf/post/06102417.html</link><pubDate>Tue, 24 Oct 2006 16:59:16 +0800</pubDate><guid>http://www.redwolf.com.cn/redwolf/post/06102417.html</guid><description><![CDATA[【脱文标题】 手动脱壳入门第十五篇 FSG 1.33<BR><BR>【脱文作者】 weiyi75[Dfcg] <BR><BR>【作者邮箱】 <A href="mailto:weiyi75@sohu.com">weiyi75@sohu.com</A> <BR><BR>【作者主页】 Dfcg官方大本营 <BR><BR>【使用工具】 Peid,Ollydbg,ImportREC,Loadpe<BR><BR>【脱壳平台】 Win2K/XP<BR><BR>【<A href="http://cnxhacker.net/download/">软件</A>名称】 Unpackme<BR><BR>【<A href="http://cnxhacker.net/download/">软件</A>简介】 Loveboom用VB写的一个FSG压缩的脱壳练习程序<BR><BR>【<A href="http://cnxhacker.net/download/">软件</A>大小】 2.65 KB<BR><BR>【<A href="http://cnxhacker.net/download/">下载</A>地址】 点击<A href="http://cnxhacker.net/download/">下载</A><IMG src="http://www.cnxhacker.com/editor/sysimage/file/rar.gif" border=0><A href="http://www.cnxhacker.com/editor/UploadFile/2005-6/12/200561215726979.rar" target=_blank>FSG 1.33.rar</A><BR><BR>【加壳方式】 FSG 1.33 -&gt; dulek/xt<BR><BR>【保护方式】 FSG压缩壳<BR><BR>【脱壳声明】 我是一只小菜鸟，偶得一点心得，愿与大家分享：)<BR><BR><BR>-------------------------------------------------------------------------------- <BR><BR>【脱壳内容】 <BR><BR>首先Peid查壳，为FSG 1.33 -&gt; dulek/xt，OD载入运行，无任何异常，判断其为压缩壳。<BR><BR>00404B58 &gt;&nbsp;&nbsp;BE A4014000&nbsp; &nbsp;&nbsp;&nbsp;mov esi, fsg1_33.004001A4&nbsp; &nbsp; //外壳入口。<BR>00404B5D&nbsp; &nbsp; AD&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;lods dword ptr ds:[esi]<BR>00404B5E&nbsp; &nbsp; 93&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;xchg eax, ebx<BR>00404B5F&nbsp; &nbsp; AD&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;lods dword ptr ds:[esi]<BR>00404B60&nbsp; &nbsp; 97&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;xchg eax, edi<BR>00404B61&nbsp; &nbsp; AD&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;lods dword ptr ds:[esi]<BR>00404B62&nbsp; &nbsp; 56&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;push esi<BR>00404B63&nbsp; &nbsp; 96&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;xchg eax, esi<BR>00404B64&nbsp; &nbsp; B2 80&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;mov dl, 80<BR>00404B66&nbsp; &nbsp; A4&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;movs byte ptr es:[edi], byte ptr ds:[esi&gt;<BR>00404B67&nbsp; &nbsp; B6 80&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;mov dh, 80<BR>00404B69&nbsp; &nbsp; FF13&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;call dword ptr ds:[ebx]<BR>00404B6B&nbsp;&nbsp;^ 73 F9&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;jnb short fsg1_33.00404B66<BR>00404B6D&nbsp; &nbsp; 33C9&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;xor ecx, ecx<BR>00404B6F&nbsp; &nbsp; FF13&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;call dword ptr ds:[ebx]<BR>00404B71&nbsp; &nbsp; 73 16&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;jnb short fsg1_33.00404B89<BR>00404B73&nbsp; &nbsp; 33C0&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;xor eax, eax<BR>00404B75&nbsp; &nbsp; FF13&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;call dword ptr ds:[ebx]<BR>00404B77&nbsp; &nbsp; 73 1F&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;jnb short fsg1_33.00404B98<BR><BR>打开内存镜像，它工作区段就是404000 resources段里面，内存镜像断点没有作用。它也没有用PUSHAD等语句，ESP定律也不能用。据说FSG 1.33还有变形版本，单步慢慢跟踪太费时间，下API断点，也慢。<BR><BR>对付它最好的方法就是模拟跟踪，因为它没有SEH,模拟跟踪最好不过了。<BR><BR>内存镜像，项目 13<BR>地址=00404000<BR>大小=00001000 (4096.)<BR>Owner=fsg1_33&nbsp;&nbsp;00400000&nbsp; &nbsp;<BR>区段=<BR>包含=SFX,imports,resources&nbsp;&nbsp;// 当前段是在404000里面。<BR>类型=Imag 01001002<BR>访问=R<BR>初始访问=RWE<BR><BR><BR>内存镜像，项目 12<BR>地址=00401000<BR>大小=00003000 (12288.)<BR>Owner=fsg1_33&nbsp;&nbsp;00400000<BR>区段=<BR>包含=code&nbsp; &nbsp;&nbsp; &nbsp;//Oep肯定是在Code段里面。不管FSG在SFX,imports,resources区段里面解压，循环搞什么飞机。最后肯定要跨段访问401000 <BR><BR>Code段。<BR>类型=Imag 01001002<BR>访问=R<BR>初始访问=RWE<BR><BR>于是，命令行下<BR><BR>tc eip&lt;404000&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;//模拟跟踪指令。<BR><BR>1分钟不到，Oep就到了。<BR><BR>00401160&nbsp; &nbsp;&nbsp; &nbsp;68&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;db 68&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;//Oep,点清除分析看得习惯一点。<BR>00401161&nbsp; &nbsp;&nbsp; &nbsp;F8&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;db F8<BR>00401162&nbsp; &nbsp;&nbsp; &nbsp;13&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;db 13<BR>00401163&nbsp; &nbsp;&nbsp; &nbsp;40&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;db 40&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;CHAR '@'<BR>00401164&nbsp; &nbsp;&nbsp; &nbsp;00&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;db 00<BR>00401165&nbsp; &nbsp;&nbsp; &nbsp;E8&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;db E8<BR>00401166&nbsp; &nbsp;&nbsp; &nbsp;F0&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;db F0<BR>00401167&nbsp; &nbsp;&nbsp; &nbsp;FF&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;db FF<BR>00401168&nbsp; &nbsp;&nbsp; &nbsp;FF&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;db FF<BR>00401169&nbsp; &nbsp;&nbsp; &nbsp;FF&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;db FF<BR>0040116A&nbsp; &nbsp;&nbsp; &nbsp;00&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;db 00<BR>0040116B&nbsp; &nbsp;&nbsp; &nbsp;00&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;db 00<BR>0040116C&nbsp; &nbsp;&nbsp; &nbsp;00&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;db 00<BR>0040116D&nbsp; &nbsp;&nbsp; &nbsp;00&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;db 00<BR>0040116E&nbsp; &nbsp;&nbsp; &nbsp;00&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;db 00<BR>0040116F&nbsp; &nbsp;&nbsp; &nbsp;00&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;db 00<BR>00401170&nbsp; &nbsp;&nbsp; &nbsp;30&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;db 30&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;CHAR '0'<BR>.........................................................................................<BR><BR>00401160&nbsp; &nbsp; 68 F8134000&nbsp; &nbsp;&nbsp;&nbsp;push fsg1_33.004013F8&nbsp; &nbsp;//熟悉的VB程序入口特征码，Loadpe直接脱壳。<BR>00401165&nbsp; &nbsp; E8 F0FFFFFF&nbsp; &nbsp;&nbsp;&nbsp;call fsg1_33.0040115A&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;; jmp to MSVBVM60.ThunRTMain<BR>0040116A&nbsp; &nbsp; 0000&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;add byte ptr ds:[eax], al<BR>0040116C&nbsp; &nbsp; 0000&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;add byte ptr ds:[eax], al<BR>0040116E&nbsp; &nbsp; 0000&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;add byte ptr ds:[eax], al<BR>00401170&nbsp; &nbsp; 3000&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;xor byte ptr ds:[eax], al<BR>00401172&nbsp; &nbsp; 0000&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;add byte ptr ds:[eax], al<BR>00401174&nbsp; &nbsp; 3800&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;cmp byte ptr ds:[eax], al<BR>00401176&nbsp; &nbsp; 0000&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;add byte ptr ds:[eax], al<BR>00401178&nbsp; &nbsp; 0000&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;add byte ptr ds:[eax], al<BR>0040117A&nbsp; &nbsp; 0000&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;add byte ptr ds:[eax], al<BR>0040117C&nbsp; &nbsp; 95&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;xchg eax, ebp<BR>0040117D&nbsp;&nbsp;^ 75 A7&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;jnz short fsg1_33.00401126<BR>.........................................................................................<BR><BR>脱壳后发现程序不能运行,这时需要用Imprec修复引入函数表(Import Table)<BR><BR>在Oep处填1160,点IT自动搜索,然后点获输入信息,看到输入表全部有效,点修复抓取文件按钮,选择Dump的文件,修复它,正常运行。<BR><BR>再看看API断点找Oep,单步跟踪FSG 1.33后，大家可以走捷径，当然是下API断点。<BR><BR>Btw:&nbsp;&nbsp;前提是你有过单步跟踪Fsg的经验，不然你看不懂下面是什么意思。也就是第一次学某个壳要按正常方法单步跟踪找入口体会壳，不要取巧走捷径，精通了就可以走捷径脱壳。<BR><BR>00404B58 &gt;&nbsp;&nbsp;BE A4014000&nbsp; &nbsp;&nbsp;&nbsp;mov esi, fsg1_33.004001A4&nbsp;&nbsp;//外壳入口。<BR>00404B5D&nbsp; &nbsp; AD&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;lods dword ptr ds:[esi]<BR>00404B5E&nbsp; &nbsp; 93&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;xchg eax, ebx<BR>00404B5F&nbsp; &nbsp; AD&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;lods dword ptr ds:[esi]<BR>00404B60&nbsp; &nbsp; 97&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;xchg eax, edi<BR>00404B61&nbsp; &nbsp; AD&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;lods dword ptr ds:[esi]<BR>00404B62&nbsp; &nbsp; 56&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;push esi<BR>00404B63&nbsp; &nbsp; 96&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;xchg eax, esi<BR>00404B64&nbsp; &nbsp; B2 80&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;mov dl, 80<BR>00404B66&nbsp; &nbsp; A4&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;movs byte ptr es:[edi], byte ptr ds:[esi&gt;<BR>00404B67&nbsp; &nbsp; B6 80&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;mov dh, 80<BR>00404B69&nbsp; &nbsp; FF13&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;call dword ptr ds:[ebx]<BR>00404B6B&nbsp;&nbsp;^ 73 F9&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;jnb short fsg1_33.00404B66<BR>00404B6D&nbsp; &nbsp; 33C9&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;xor ecx, ecx<BR>00404B6F&nbsp; &nbsp; FF13&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;call dword ptr ds:[ebx]<BR>00404B71&nbsp; &nbsp; 73 16&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;jnb short fsg1_33.00404B89<BR>00404B73&nbsp; &nbsp; 33C0&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;xor eax, eax<BR>00404B75&nbsp; &nbsp; FF13&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;call dword ptr ds:[ebx]<BR>00404B77&nbsp; &nbsp; 73 1F&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;jnb short fsg1_33.00404B98<BR>00404B79&nbsp; &nbsp; B6 80&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;mov dh, 80<BR>00404B7B&nbsp; &nbsp; 41&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;inc ecx<BR>00404B7C&nbsp; &nbsp; B0 10&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;mov al, 10<BR>.........................................................................................<BR><BR>命令行<BR><BR>bp GetModuleHandleA <BR><BR>77E6AB06 &gt;&nbsp;&nbsp;55&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;push ebp&nbsp;&nbsp;//中断后清除断点。<BR>77E6AB07&nbsp; &nbsp; 8BEC&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;mov ebp, esp<BR>77E6AB09&nbsp; &nbsp; 837D 08 00&nbsp; &nbsp;&nbsp; &nbsp;cmp dword ptr ss:[ebp+8], 0<BR>77E6AB0D&nbsp; &nbsp; 0F84 31F50000&nbsp; &nbsp;je KERNEL32.77E7A044<BR>77E6AB13&nbsp; &nbsp; FF75 08&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;push dword ptr ss:[ebp+8]<BR>77E6AB16&nbsp; &nbsp; E8 9EC8FFFF&nbsp; &nbsp;&nbsp;&nbsp;call KERNEL32.77E673B9<BR>77E6AB1B&nbsp; &nbsp; 85C0&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;test eax, eax<BR>77E6AB1D&nbsp; &nbsp; 74 08&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;je short KERNEL32.77E6AB27<BR>77E6AB1F&nbsp; &nbsp; FF70 04&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;push dword ptr ds:[eax+4]<BR>77E6AB22&nbsp; &nbsp; E8 5B560000&nbsp; &nbsp;&nbsp;&nbsp;call KERNEL32.GetModuleHandleW<BR>77E6AB27&nbsp; &nbsp; 5D&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;pop ebp<BR>77E6AB28&nbsp; &nbsp; C2 0400&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;retn 4<BR>77E6AB2B &gt;&nbsp;&nbsp;55&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;push ebp<BR>77E6AB2C&nbsp; &nbsp; 8BEC&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;mov ebp, esp<BR>77E6AB2E&nbsp; &nbsp; 6A 00&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;push 0<BR>77E6AB30&nbsp; &nbsp; FF75 18&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;push dword ptr ss:[ebp+18]<BR>77E6AB33&nbsp; &nbsp; FF75 14&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;push dword ptr ss:[ebp+14]<BR>77E6AB36&nbsp; &nbsp; FF75 10&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;push dword ptr ss:[ebp+10]<BR>77E6AB39&nbsp; &nbsp; FF75 0C&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;push dword ptr ss:[ebp+C]<BR>77E6AB3C&nbsp; &nbsp; FF75 08&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;push dword ptr ss:[ebp+8]<BR>77E6AB3F&nbsp; &nbsp; E8 132E0000&nbsp; &nbsp;&nbsp;&nbsp;call KERNEL32.GetPrivateProfileStringW<BR>.........................................................................................<BR><BR>ALT+F9 执行到用户代码。<BR><BR>00404BE6&nbsp; &nbsp; 95&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;xchg eax, ebp&nbsp;&nbsp;// 到这里。<BR>00404BE7&nbsp; &nbsp; AC&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;lods byte ptr ds:[esi]<BR>00404BE8&nbsp; &nbsp; 84C0&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;test al, al<BR>00404BEA&nbsp;&nbsp;^ 75 FB&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;jnz short fsg1_33.00404BE7<BR>00404BEC&nbsp; &nbsp; FE0E&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;dec byte ptr ds:[esi]<BR>00404BEE&nbsp;&nbsp;^ 74 F0&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;je short fsg1_33.00404BE0<BR>00404BF0&nbsp; &nbsp; 79 05&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;jns short fsg1_33.00404BF7<BR>00404BF2&nbsp; &nbsp; 46&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;inc esi<BR>00404BF3&nbsp; &nbsp; AD&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;lods dword ptr ds:[esi]<BR>00404BF4&nbsp; &nbsp; 50&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;push eax<BR>00404BF5&nbsp; &nbsp; EB 09&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;jmp short fsg1_33.00404C00<BR>00404BF7&nbsp; &nbsp; FE0E&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;dec byte ptr ds:[esi]<BR>00404BF9&nbsp;&nbsp;- 0F84 61C5FFFF&nbsp; &nbsp;je fsg1_33.00401160<BR>00404BFF&nbsp; &nbsp; 56&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;push esi<BR>00404C00&nbsp; &nbsp; 55&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;push ebp<BR>00404C01&nbsp; &nbsp; FF53 04&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;call dword ptr ds:[ebx+4]<BR>00404C04&nbsp; &nbsp; AB&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;stos dword ptr es:[edi]<BR>00404C05&nbsp;&nbsp;^ EB E0&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;jmp short fsg1_33.00404BE7<BR>.........................................................................................<BR><BR>继续下<BR><BR>bp GetProcAddress<BR><BR>77E6E6A9 &gt;&nbsp;&nbsp;55&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;push ebp&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;//清除断点，Ctrl+F9返回。<BR>77E6E6AA&nbsp; &nbsp; 8BEC&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;mov ebp, esp<BR>77E6E6AC&nbsp; &nbsp; 51&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;push ecx<BR>77E6E6AD&nbsp; &nbsp; 51&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;push ecx<BR>77E6E6AE&nbsp; &nbsp; 53&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;push ebx<BR>77E6E6AF&nbsp; &nbsp; 57&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;push edi<BR>77E6E6B0&nbsp; &nbsp; 8B7D 0C&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;mov edi, dword ptr ss:[ebp+C]<BR>77E6E6B3&nbsp; &nbsp; BB FFFF0000&nbsp; &nbsp;&nbsp;&nbsp;mov ebx, 0FFFF<BR>77E6E6B8&nbsp; &nbsp; 3BFB&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;cmp edi, ebx<BR>77E6E6BA&nbsp; &nbsp; 0F86 D3EB0000&nbsp; &nbsp;jbe KERNEL32.77E7D293<BR>77E6E6C0&nbsp; &nbsp; 8D45 F8&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;lea eax, dword ptr ss:[ebp-8]<BR>77E6E6C3&nbsp; &nbsp; 57&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;push edi<BR>77E6E6C4&nbsp; &nbsp; 50&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;push eax<BR>77E6E6C5&nbsp; &nbsp; FF15 2413E677&nbsp; &nbsp;call dword ptr ds:[&lt;&amp;NTDLL.RtlInitString&gt;; ntdll.RtlInitString<BR>77E6E6CB&nbsp; &nbsp; 8D45 0C&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;lea eax, dword ptr ss:[ebp+C]<BR>77E6E6CE&nbsp; &nbsp; 50&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;push eax<BR>77E6E6CF&nbsp; &nbsp; 8D45 F8&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;lea eax, dword ptr ss:[ebp-8]<BR>77E6E6D2&nbsp; &nbsp; 6A 00&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;push 0<BR>77E6E6D4&nbsp; &nbsp; 50&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;push eax<BR>77E6E6D5&nbsp; &nbsp; 6A 00&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;push 0<BR>77E6E6D7&nbsp; &nbsp; FF75 08&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;push dword ptr ss:[ebp+8]<BR>77E6E6DA&nbsp; &nbsp; E8 15B10000&nbsp; &nbsp;&nbsp;&nbsp;call KERNEL32.77E797F4<BR>.........................................................................................<BR><BR>00404BE4&nbsp; &nbsp; FF13&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;call dword ptr ds:[ebx]&nbsp;&nbsp;<BR>00404BE6&nbsp; &nbsp; 95&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;xchg eax, ebp<BR>00404BE7&nbsp; &nbsp; AC&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;lods byte ptr ds:[esi]<BR>00404BE8&nbsp; &nbsp; 84C0&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;test al, al<BR>00404BEA&nbsp;&nbsp;^ 75 FB&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;jnz short fsg1_33.00404BE7<BR>00404BEC&nbsp; &nbsp; FE0E&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;dec byte ptr ds:[esi]<BR>00404BEE&nbsp;&nbsp;^ 74 F0&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;je short fsg1_33.00404BE0<BR>00404BF0&nbsp; &nbsp; 79 05&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;jns short fsg1_33.00404BF7<BR>00404BF2&nbsp; &nbsp; 46&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;inc esi<BR>00404BF3&nbsp; &nbsp; AD&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;lods dword ptr ds:[esi]<BR>00404BF4&nbsp; &nbsp; 50&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;push eax<BR>00404BF5&nbsp; &nbsp; EB 09&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;jmp short fsg1_33.00404C00<BR>00404BF7&nbsp; &nbsp; FE0E&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;dec byte ptr ds:[esi]<BR>00404BF9&nbsp;&nbsp;- 0F84 61C5FFFF&nbsp; &nbsp;je fsg1_33.00401160&nbsp; &nbsp; //这里跨段跳跃到4010000 段了，肯定是Oep入口跳转。<BR>00404BFF&nbsp; &nbsp; 56&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;push esi<BR>00404C00&nbsp; &nbsp; 55&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;push ebp<BR>00404C01&nbsp; &nbsp; FF53 04&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;call dword ptr ds:[ebx+4]<BR>00404C04&nbsp; &nbsp; AB&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;stos dword ptr es:[edi]&nbsp;&nbsp;//返回到这里,滚动条往上看。<BR>00404C05&nbsp;&nbsp;^ EB E0&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;jmp short fsg1_33.00404BE7<BR>.........................................................................................<BR><BR>于是命令行。<BR><BR>g 401160<BR><BR>00401160&nbsp; &nbsp;&nbsp; &nbsp;68&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;db 68&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;//Oep,点清除分析看得习惯一点。<BR>00401161&nbsp; &nbsp;&nbsp; &nbsp;F8&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;db F8<BR>00401162&nbsp; &nbsp;&nbsp; &nbsp;13&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;db 13<BR>00401163&nbsp; &nbsp;&nbsp; &nbsp;40&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;db 40&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;CHAR '@'<BR>00401164&nbsp; &nbsp;&nbsp; &nbsp;00&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;db 00<BR>00401165&nbsp; &nbsp;&nbsp; &nbsp;E8&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;db E8<BR>00401166&nbsp; &nbsp;&nbsp; &nbsp;F0&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;db F0<BR>00401167&nbsp; &nbsp;&nbsp; &nbsp;FF&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;db FF<BR>00401168&nbsp; &nbsp;&nbsp; &nbsp;FF&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;db FF<BR>00401169&nbsp; &nbsp;&nbsp; &nbsp;FF&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;db FF<BR>0040116A&nbsp; &nbsp;&nbsp; &nbsp;00&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;db 00<BR>0040116B&nbsp; &nbsp;&nbsp; &nbsp;00&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;db 00<BR>0040116C&nbsp; &nbsp;&nbsp; &nbsp;00&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;db 00<BR>0040116D&nbsp; &nbsp;&nbsp; &nbsp;00&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;db 00<BR>0040116E&nbsp; &nbsp;&nbsp; &nbsp;00&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;db 00<BR>0040116F&nbsp; &nbsp;&nbsp; &nbsp;00&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;db 00<BR>00401170&nbsp; &nbsp;&nbsp; &nbsp;30&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;db 30&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;CHAR '0'<BR>.........................................................................................<BR><BR>00401160&nbsp; &nbsp; 68 F8134000&nbsp; &nbsp;&nbsp;&nbsp;push fsg1_33.004013F8&nbsp; &nbsp;//熟悉的VB程序入口特征码，Loadpe直接脱壳。<BR>00401165&nbsp; &nbsp; E8 F0FFFFFF&nbsp; &nbsp;&nbsp;&nbsp;call fsg1_33.0040115A&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;; jmp to MSVBVM60.ThunRTMain<BR>0040116A&nbsp; &nbsp; 0000&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;add byte ptr ds:[eax], al<BR>0040116C&nbsp; &nbsp; 0000&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;add byte ptr ds:[eax], al<BR>0040116E&nbsp; &nbsp; 0000&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;add byte ptr ds:[eax], al<BR>00401170&nbsp; &nbsp; 3000&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;xor byte ptr ds:[eax], al<BR>00401172&nbsp; &nbsp; 0000&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;add byte ptr ds:[eax], al<BR>00401174&nbsp; &nbsp; 3800&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;cmp byte ptr ds:[eax], al<BR>00401176&nbsp; &nbsp; 0000&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;add byte ptr ds:[eax], al<BR>00401178&nbsp; &nbsp; 0000&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;add byte ptr ds:[eax], al<BR>0040117A&nbsp; &nbsp; 0000&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;add byte ptr ds:[eax], al<BR>0040117C&nbsp; &nbsp; 95&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;xchg eax, ebp<BR>0040117D&nbsp;&nbsp;^ 75 A7&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;jnz short fsg1_33.00401126<BR>.........................................................................................<BR><BR>脱壳后发现程序不能运行,这时需要用Imprec修复引入函数表(Import Table)<BR><BR>在Oep处填1160,点IT自动搜索,然后点获输入信息,看到输入表全部有效,点修复抓取文件按钮,选择Dump的文件,修复它,正常运行。]]></description><category>加密解密</category><comments>http://www.redwolf.com.cn/redwolf/post/06102417.html#comment</comments><wfw:comment>http://www.redwolf.com.cn/redwolf/</wfw:comment><wfw:commentRss>http://www.redwolf.com.cn/redwolf/feed.asp?cmt=236</wfw:commentRss><trackback:ping>http://www.redwolf.com.cn/redwolf/cmd.asp?act=tb&amp;id=236&amp;key=fd2d0470</trackback:ping></item><item><title>手动脱壳入门第十四篇32Lite 0.03a</title><author>redwolf@redwolf.com.cn (redwolf)</author><link>http://www.redwolf.com.cn/redwolf/post/06102416.html</link><pubDate>Tue, 24 Oct 2006 16:58:33 +0800</pubDate><guid>http://www.redwolf.com.cn/redwolf/post/06102416.html</guid><description><![CDATA[【脱文标题】 手动脱壳入门第十四篇32Lite 0.03a<BR><BR>【脱文作者】 weiyi75[Dfcg] <BR><BR>【作者邮箱】 <A href="mailto:weiyi75@sohu.com">weiyi75@sohu.com</A> <BR><BR>【作者主页】 Dfcg官方大本营 <BR><BR>【使用工具】 Peid,Ollydbg,ImportREC,Loadpe<BR><BR>【脱壳平台】 Win2K/XP<BR><BR>【<A href="http://cnxhacker.net/download/">软件</A>名称】 QEDITOR<BR><BR>【<A href="http://cnxhacker.net/download/">软件</A>简介】 masm 8.0 的编辑器<BR><BR>【<A href="http://cnxhacker.net/download/">软件</A>大小】 33.1 KB<BR><BR>【<A href="http://cnxhacker.net/download/">下载</A>地址】 点击<A href="http://cnxhacker.net/download/">下载</A><IMG src="http://www.cnxhacker.com/editor/sysimage/file/rar.gif" border=0><A href="http://www.cnxhacker.com/editor/UploadFile/2005-6/12/20056121528438.rar" target=_blank>QEDITOR.rar</A><BR><BR>【加壳方式】 32Lite 0.03a -&gt; Oleg Prokhorov<BR><BR>【保护方式】 32Lite 压缩壳<BR><BR>【脱壳声明】 我是一只小菜鸟，偶得一点心得，愿与大家分享：)<BR><BR><BR>-------------------------------------------------------------------------------- <BR><BR>【脱壳内容】 <BR><BR>首先Peid查壳，为32Lite 0.03a -&gt; Oleg Prokhorov,没见过，OD载入运行，无任何异常，判断其为压缩壳。<BR><BR>还记得我发的修正练习脱壳<A href="http://cnxhacker.net/download/">软件</A>帖子,为了方便大家练习脱壳，我找了五种语言的程序供大家用各种加密<A href="http://cnxhacker.net/download/">软件</A>加壳练手,平时也可以用Od载入熟悉各种语言的特征码。<BR><BR>稍微说明一下:&nbsp; &nbsp;&nbsp; &nbsp; <BR>&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;&nbsp; &nbsp;&nbsp; &nbsp;<BR>每一种编译工具例如 : VC++ , Delphi , Borland , etc..&nbsp; &nbsp; <BR>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;<BR>在OEP有一个唯一的/相同的PE头&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;<BR>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; <BR>其中的一些是这样的:&nbsp; &nbsp;&nbsp; &nbsp;<BR>&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;<BR>Push EBP&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;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; <BR>MOV Ebp,Esp&nbsp; &nbsp;&nbsp;&nbsp;//观察入口点ESP值的变化规律，一般到这句后 ESP=12ffc0&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;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; <BR>Add ESP , -010&nbsp;&nbsp;//F8执行到这句时，ESP=EBP=12ffc0&nbsp;&nbsp;//利用这个特性我们很容易找到OEP+1的地址,或加密壳的stolen bytes 的位置。&nbsp; &nbsp;&nbsp;&nbsp;<BR><BR>Mov EAX, SOME_VALUE&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;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;<BR>(共11bytes)&nbsp;&nbsp;<BR><BR>看参考截图。<BR><BR><BR><IMG onmouseover="if(this.alt) this.style.cursor='hand';" style="FILTER: ; WIDTH: 500px; CURSOR: hand; HEIGHT: 380px" onclick="window.open('/editor/UploadFile/2005-6/12/200561215243494.jpg');" height=380 alt="" hspace=0 src="http://www.cnxhacker.com/editor/UploadFile/2005-6/12/200561215243494.jpg" width=500 onload="if(this.width>screen.width-333) {this.width=screen.width-333;this.alt='Click Here to Open New Window';}" border=0 pop="Click Here to Open New Window"><BR><BR><BR>开始脱壳吧，首先找OEP入口。<BR><BR>00401000&nbsp; &nbsp;&nbsp;&nbsp;60&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;pushad//进入OD后停在这 <BR>00401001&nbsp; &nbsp;&nbsp;&nbsp;06&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;push es <BR>00401002&nbsp; &nbsp;&nbsp;&nbsp;FC&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;cld <BR>00401003&nbsp; &nbsp;&nbsp;&nbsp;1E&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;push ds <BR>00401004&nbsp; &nbsp;&nbsp;&nbsp;07&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;pop es <BR>00401005&nbsp; &nbsp;&nbsp;&nbsp;BE 00104000&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;mov esi,QEDITOR.&lt;ModuleEntryPoint&gt; <BR>0040100A&nbsp; &nbsp;&nbsp;&nbsp;6A 04&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;push 4 <BR>0040100C&nbsp; &nbsp;&nbsp;&nbsp;68 00100000&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;push 1000 <BR>00401011&nbsp; &nbsp;&nbsp;&nbsp;68 A3820000&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;push 82A3 <BR>00401016&nbsp; &nbsp;&nbsp;&nbsp;6A 00&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;push 0 <BR>00401018&nbsp; &nbsp;&nbsp;&nbsp;FF96 80B50100&nbsp; &nbsp;&nbsp; &nbsp; call dword ptr ds:[esi+1B580] <BR>.....................................................<BR><BR>命令行<BR><BR>d 12ffc0<BR><BR>在0012FFc0内存处的4个字节上下硬件写入－&gt;DWord 断点<BR><BR>直接F9运行<BR><BR>00410D50&nbsp; &nbsp; 55&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;push ebp<BR>00410D51&nbsp; &nbsp; 8BEC&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;mov ebp, esp&nbsp;&nbsp;//直接断在OEP+1处，说明一下，脱壳并不一定要在入口点脱壳，假如我们断点在00410D89处，<BR><BR>我们一样可以脱壳，不过修复IAT是修正入口值为正确值就可以了，这个程序是10D50,这里用Loadpe脱壳。<BR>00410D53&nbsp; &nbsp; 53&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;push ebx<BR>00410D54&nbsp; &nbsp; 56&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;push esi<BR>00410D55&nbsp; &nbsp; 57&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;push edi<BR>00410D56&nbsp; &nbsp; BB 00604100&nbsp; &nbsp;&nbsp;&nbsp;mov ebx, QEDITOR.00416000<BR>00410D5B&nbsp; &nbsp; 66:2E:F705 D213&gt;test word ptr cs:[4113D2], 4<BR>00410D65&nbsp; &nbsp; 0F85 DB000000&nbsp; &nbsp;jnz QEDITOR.00410E46<BR>00410D6B&nbsp; &nbsp; 6A 00&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;push 0<BR>00410D6D&nbsp; &nbsp; FF15 54844100&nbsp; &nbsp;call dword ptr ds:[418454]&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;; OLE32.CoInitialize<BR>00410D73&nbsp; &nbsp; E8 92020000&nbsp; &nbsp;&nbsp;&nbsp;call QEDITOR.0041100A<BR>00410D78&nbsp; &nbsp; C783 08010000 0&gt;mov dword ptr ds:[ebx+108], 1<BR>00410D82&nbsp; &nbsp; 8D83 90020000&nbsp; &nbsp;lea eax, dword ptr ds:[ebx+290]<BR>00410D88&nbsp; &nbsp; 50&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;push eax<BR>00410D89&nbsp; &nbsp; FF15 DC834100&nbsp; &nbsp;call dword ptr ds:[4183DC]&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;; KERNEL32.GetVersionExA&nbsp;&nbsp;//看入口特征和下面两个API知道是C++程序。<BR>00410D8F&nbsp; &nbsp; 83EC 44&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;sub esp, 44<BR>00410D92&nbsp; &nbsp; C70424 44000000 mov dword ptr ss:[esp], 44<BR>00410D99&nbsp; &nbsp; C74424 2C 00000&gt;mov dword ptr ss:[esp+2C], 0<BR>00410DA1&nbsp; &nbsp; 54&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;push esp<BR>00410DA2&nbsp; &nbsp; FF15 D4834100&nbsp; &nbsp;call dword ptr ds:[4183D4]&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;; KERNEL32.GetStartupInfoA<BR>............................................................................<BR><BR>IAT压缩壳没有破坏它<BR><BR>运行ImportREC，选择这个进程。把OEP改为00010D50，点IT AutoSearch，点“Get Import”，FixDump，2K平台脱壳可以跨平台运行！<BR><BR><BR>流行的ESP定律<BR><BR>00401000&nbsp; &nbsp;&nbsp;&nbsp;60&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;pushad//进入OD后停在这 <BR>00401001&nbsp; &nbsp;&nbsp;&nbsp;06&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;push es&nbsp; &nbsp;//堆栈平衡原理<BR>00401002&nbsp; &nbsp;&nbsp;&nbsp;FC&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;cld <BR>00401003&nbsp; &nbsp;&nbsp;&nbsp;1E&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;push ds <BR>00401004&nbsp; &nbsp;&nbsp;&nbsp;07&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;pop es <BR>00401005&nbsp; &nbsp;&nbsp;&nbsp;BE 00104000&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;mov esi,QEDITOR.&lt;ModuleEntryPoint&gt; <BR>0040100A&nbsp; &nbsp;&nbsp;&nbsp;6A 04&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;push 4 <BR>0040100C&nbsp; &nbsp;&nbsp;&nbsp;68 00100000&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;push 1000 <BR>00401011&nbsp; &nbsp;&nbsp;&nbsp;68 A3820000&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;push 82A3 <BR>00401016&nbsp; &nbsp;&nbsp;&nbsp;6A 00&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;push 0 <BR>00401018&nbsp; &nbsp;&nbsp;&nbsp;FF96 80B50100&nbsp; &nbsp;&nbsp; &nbsp; call dword ptr ds:[esi+1B580] <BR><BR>F8过了00401001后ESP=0012FFA0。压缩壳使用ESP定律很有效，在0012FFA0内存处的4个字节上下硬件访问－&gt;Word 断点。 <BR>F9运行，程序中断在003780E3处！ <BR><BR>003780E3&nbsp; &nbsp;&nbsp;&nbsp;68 00800000&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;push 8000&nbsp;&nbsp;//堆栈平衡原理<BR>003780E8&nbsp; &nbsp;&nbsp;&nbsp;6A 00&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;push 0 <BR>003780EA&nbsp; &nbsp;&nbsp;&nbsp;68 00003700&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;push 370000 <BR>003780EF&nbsp; &nbsp;&nbsp;&nbsp;05 3C050000&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;add eax,53C <BR>003780F4&nbsp; &nbsp;&nbsp;&nbsp;50&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;push eax&nbsp; &nbsp; ; QEDITOR.0041C53C <BR>003780F5&nbsp; &nbsp;&nbsp;&nbsp;C3&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;retn//返回 0041C53C <BR><BR>0041C53C&nbsp; &nbsp;&nbsp;&nbsp;FF96 84B50100&nbsp; &nbsp;&nbsp; &nbsp; call dword ptr ds:[esi+1B584]&nbsp;&nbsp;; kernel32.VirtualFree <BR>0041C542&nbsp; &nbsp;&nbsp;&nbsp;61&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;popad&nbsp;&nbsp;//关键字<BR>0041C543&nbsp; &nbsp;&nbsp;&nbsp;E9 0848FFFF&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;jmp QEDITOR.00410D50 //跳向入口<BR><BR>00410D50&nbsp; &nbsp;&nbsp;&nbsp;55&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;push ebp //在这儿用LordPE脱壳<BR>00410D51&nbsp; &nbsp;&nbsp;&nbsp;8BEC&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; mov ebp,esp <BR>00410D53&nbsp; &nbsp;&nbsp;&nbsp;53&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;push ebx <BR>00410D54&nbsp; &nbsp;&nbsp;&nbsp;56&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;push esi <BR>00410D55&nbsp; &nbsp;&nbsp;&nbsp;57&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;push edi <BR>00410D56&nbsp; &nbsp;&nbsp;&nbsp;BB 00604100&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;mov ebx,QEDITOR.00416000 <BR>00410D5B&nbsp; &nbsp;&nbsp;&nbsp;66:2E:F705 D2134100&gt;test word ptr cs:[4113D2],4 <BR>00410D65&nbsp; &nbsp;&nbsp;&nbsp;0F85 DB000000&nbsp; &nbsp;&nbsp; &nbsp; jnz QEDITOR.00410E46 <BR>00410D6B&nbsp; &nbsp;&nbsp;&nbsp;6A 00&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;push 0 <BR>00410D6D&nbsp; &nbsp;&nbsp;&nbsp;FF15 54844100&nbsp; &nbsp;&nbsp; &nbsp; call dword ptr ds:[418454] ; OLE32.CoInitialize <BR><BR>IAT压缩壳没有破坏它<BR><BR>运行ImportREC，选择这个进程。把OEP改为00010D50，点IT AutoSearch，点“Get Import”，FixDump，2K平台脱壳可以跨平台运行！<IMG height=1 src="http://www.cnxhacker.com/hits.asp?id=1741" width=1 border=0> ]]></description><category>加密解密</category><comments>http://www.redwolf.com.cn/redwolf/post/06102416.html#comment</comments><wfw:comment>http://www.redwolf.com.cn/redwolf/</wfw:comment><wfw:commentRss>http://www.redwolf.com.cn/redwolf/feed.asp?cmt=235</wfw:commentRss><trackback:ping>http://www.redwolf.com.cn/redwolf/cmd.asp?act=tb&amp;id=235&amp;key=8e26613b</trackback:ping></item><item><title>手动脱壳入门第十三篇PKLITE32 1.1</title><author>redwolf@redwolf.com.cn (redwolf)</author><link>http://www.redwolf.com.cn/redwolf/post/06102415.html</link><pubDate>Tue, 24 Oct 2006 16:57:52 +0800</pubDate><guid>http://www.redwolf.com.cn/redwolf/post/06102415.html</guid><description><![CDATA[【脱文标题】 手动脱壳入门第十三篇PKLITE32 1.1<BR><BR>【脱文作者】 weiyi75[Dfcg] <BR><BR>【作者邮箱】 <A href="mailto:weiyi75@sohu.com">weiyi75@sohu.com</A> <BR><BR>【作者主页】 Dfcg官方大本营 <BR><BR>【使用工具】 Peid,Ollydbg<BR><BR>【脱壳平台】 Win2K/XP<BR><BR>【<A href="http://cnxhacker.net/download/">软件</A>名称】 PKLITE32 1.1加壳的一个Win98的记事本<BR><BR>【<A href="http://cnxhacker.net/download/">软件</A>简介】 The SHAREWARE version of PKLITE32 is intended for use on Windows 9x/NT 4.0 running on an x86/Pentium processor. If you distribute this Shareware version of PKLITE32 to friends, associates, or to a computer bulletin board (BBS), please distribute the entire installation program rather than the files contained therein. <BR><BR>【<A href="http://cnxhacker.net/download/">软件</A>大小】 22.3 KB<BR><BR>【加壳方式】 PKLITE32 1.1 -&gt; PKWARE Inc<BR><BR>【保护方式】 PKLITE32<BR><BR>【脱壳声明】 我是一只小菜鸟，偶得一点心得，愿与大家分享：<BR><BR><A href="http://cnxhacker.net/download/">软件</A>截图。<BR><BR><IMG onmouseover="if(this.alt) this.style.cursor='hand';" style="FILTER: ; WIDTH: 500px; CURSOR: hand; HEIGHT: 380px" onclick="window.open('/editor/UploadFile/2005-6/12/200561214449175.jpg');" height=380 alt="" hspace=0 src="http://www.cnxhacker.com/editor/UploadFile/2005-6/12/200561214449175.jpg" width=500 onload="if(this.width>screen.width-333) {this.width=screen.width-333;this.alt='Click Here to Open New Window';}" border=0 pop="Click Here to Open New Window"><BR><BR>程序<A href="http://cnxhacker.net/download/">下载</A>地址<BR><BR>本地<A href="http://cnxhacker.net/download/">下载</A><IMG src="http://www.cnxhacker.com/editor/sysimage/file/rar.gif" border=0><A href="http://www.cnxhacker.com/editor/UploadFile/2005-6/12/20056121478541.rar" target=_blank>PKLITE32 1.1.rar</A><BR><BR>首先必须的工具要准备好<BR>脱壳目标，PKLITE32 V1.1加壳的记事本。<BR><BR>本地<A href="http://cnxhacker.net/download/">下载</A><IMG src="http://www.cnxhacker.com/editor/sysimage/file/rar.gif" border=0><A href="http://www.cnxhacker.com/editor/UploadFile/2005-6/12/200561214718403.rar" target=_blank>NOTEPAD.rar</A><BR><BR><A href="http://cnxhacker.net/download/">软件</A>后用PEiD测NOTEPAD.EXE的壳为PKLITE32 1.1 -&gt; PKWARE Inc.<BR>手动脱壳建议大家用Ollydbg,工作平台Win2000,WinXp,Win9x不推荐。<BR>手动脱壳时，用Olldbg载入程序,脱壳程序里面会有有好多循环。对付循环时，只能让程序往前运行，基本不能让它往回跳，要想法跳出循环圈。不要用Peid查入口，单步跟踪，提高手动找入口能力。<BR><BR>用OD载入程序后。<BR>确定一个错误载入警告，和WWPack32一样，难道是一个作者。然后Od提示程序加壳，选不继续分析。<BR>停在这里<BR>0040D000 &gt;&nbsp;&nbsp;68 80D04000&nbsp; &nbsp;&nbsp;&nbsp;PUSH NOTEPAD.0040D080<BR>0040D005&nbsp; &nbsp; 68 73154100&nbsp; &nbsp;&nbsp;&nbsp;PUSH NOTEPAD.00411573<BR>0040D00A&nbsp; &nbsp; 68 00000000&nbsp; &nbsp;&nbsp;&nbsp;PUSH 0<BR>0040D00F&nbsp; &nbsp; E8 5F450000&nbsp; &nbsp;&nbsp;&nbsp;CALL NOTEPAD.00411573<BR>0040D014&nbsp;&nbsp;^ E9 B340FFFF&nbsp; &nbsp;&nbsp;&nbsp;JMP NOTEPAD.004010CC&nbsp; &nbsp;直接跨断跳跃到Oep处。<BR>0040D019&nbsp; &nbsp; 40&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;INC EAX<BR>0040D01A&nbsp; &nbsp; 2823&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;SUB BYTE PTR DS:[EBX],AH<BR>0040D01C&nbsp; &nbsp; 2950 4B&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;SUB DWORD PTR DS:[EAX+4B],EDX<BR>0040D01F&nbsp; &nbsp; 4C&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;DEC ESP<BR>0040D020&nbsp; &nbsp; 49&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;DEC ECX<BR>.................................................................<BR>004010CC&nbsp; &nbsp; 55&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;PUSH EBP&nbsp;&nbsp;我们熟悉的入口点，我们在这里用Od的Dump插件直接脱壳。<BR>004010CD&nbsp; &nbsp; 8BEC&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;MOV EBP,ESP<BR>004010CF&nbsp; &nbsp; 83EC 44&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;SUB ESP,44<BR>004010D2&nbsp; &nbsp; 56&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;PUSH ESI<BR>004010D3&nbsp; &nbsp; FF15 E4634000&nbsp; &nbsp;CALL DWORD PTR DS:[&lt;&amp;KERNEL32.GetCommand&gt;; kernel32.GetCommandLineA<BR>004010D9&nbsp; &nbsp; 8BF0&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;MOV ESI,EAX<BR>004010DB&nbsp; &nbsp; 8A00&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;MOV AL,BYTE PTR DS:[EAX]<BR>004010DD&nbsp; &nbsp; 3C 22&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;CMP AL,22<BR>004010DF&nbsp; &nbsp; 75 1B&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;JNZ SHORT NOTEPAD.004010FC<BR>004010E1&nbsp; &nbsp; 56&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;PUSH ESI<BR>004010E2&nbsp; &nbsp; FF15 F4644000&nbsp; &nbsp;CALL DWORD PTR DS:[&lt;&amp;USER32.CharNextA&gt;]&nbsp;&nbsp;; USER32.CharNextA<BR>004010E8&nbsp; &nbsp; 8BF0&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;MOV ESI,EAX<BR>004010EA&nbsp; &nbsp; 8A00&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;MOV AL,BYTE PTR DS:[EAX]<BR>004010EC&nbsp; &nbsp; 84C0&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;TEST AL,AL<BR><BR>重建输入表时，插件有两个选项。Method2重建输入表很快，脱壳后运行率高。Method1重建输入表慢，脱壳后运行率较低。本程序用Method1,2重建输入表后程序都可直接运行。这个壳太简单，我们什么壳都见识一下绝对有好处。<BR>]]></description><category>加密解密</category><comments>http://www.redwolf.com.cn/redwolf/post/06102415.html#comment</comments><wfw:comment>http://www.redwolf.com.cn/redwolf/</wfw:comment><wfw:commentRss>http://www.redwolf.com.cn/redwolf/feed.asp?cmt=234</wfw:commentRss><trackback:ping>http://www.redwolf.com.cn/redwolf/cmd.asp?act=tb&amp;id=234&amp;key=8d97b3a9</trackback:ping></item><item><title>手动脱壳入门第十二篇Dxpack 0.86</title><author>redwolf@redwolf.com.cn (redwolf)</author><link>http://www.redwolf.com.cn/redwolf/post/06102414.html</link><pubDate>Tue, 24 Oct 2006 16:56:46 +0800</pubDate><guid>http://www.redwolf.com.cn/redwolf/post/06102414.html</guid><description><![CDATA[【脱文标题】 手动脱壳入门第十二篇Dxpack 0.86<BR><BR>【脱文作者】 weiyi75[Dfcg] <BR><BR>【作者邮箱】 <A href="mailto:weiyi75@sohu.com">weiyi75@sohu.com</A> <BR><BR>【作者主页】 Dfcg官方大本营 <BR><BR>【使用工具】 Peid,Ollydbg<BR><BR>【脱壳平台】 Win2K/XP<BR><BR>【<A href="http://cnxhacker.net/download/">软件</A>名称】 Dxpack 0.86加壳的一个Win98的记事本<BR><BR>【<A href="http://cnxhacker.net/download/">软件</A>简介】 Dxpack 是一Win32PE格式可执行文件压缩程序，程序界面有中英文两种。可以压缩资源，输入输出表。打开文件可以用三种方法，1:用界面上的打开按钮，2：直接拖放文件，3：右健菜单或命令行。主要目的是减少可执行文件的体积。兼可起到加密可执行文件的目的。程序压缩过后执行速度不会减慢，对于大的文件，甚至有所改善。由于时间有限，压缩算法采用Joergen Ibsen'"aPLib"库。没有自行研究压缩算法Joergen Ibsen'"aPLib"库可以免费用于个人用户,本程序及可免费用于个人用户。<BR><BR>【<A href="http://cnxhacker.net/download/">软件</A>大小】 17.6 KB<BR><BR>【加壳方式】 未知壳<BR><BR>【保护方式】 Dxpack<BR><BR>【脱壳声明】 我是一只小菜鸟，偶得一点心得，愿与大家分享：<BR><BR><A href="http://cnxhacker.net/download/">软件</A>截图。<BR><BR><IMG onmouseover="if(this.alt) this.style.cursor='hand';" style="FILTER: ; WIDTH: 425px; CURSOR: hand; HEIGHT: 354px" onclick="window.open('/editor/UploadFile/2005-6/12/200561213819336.jpg');" height=354 alt="" hspace=0 src="http://www.cnxhacker.com/editor/UploadFile/2005-6/12/200561213819336.jpg" width=425 onload="if(this.width>screen.width-333) {this.width=screen.width-333;this.alt='Click Here to Open New Window';}" border=0 pop="Click Here to Open New Window">&nbsp;&nbsp;<BR><BR>程序<A href="http://cnxhacker.net/download/">下载</A>地址<BR><BR>本地<A href="http://cnxhacker.net/download/">下载</A><IMG src="http://www.cnxhacker.com/editor/sysimage/file/rar.gif" border=0><A href="http://www.cnxhacker.com/editor/UploadFile/2005-6/12/200561214020537.rar" target=_blank>Dapack.rar</A><BR><BR>首先必须的工具要准备好<BR>脱壳目标，Dxpack0.86加壳的记事本。<BR><BR>本地<A href="http://cnxhacker.net/download/">下载</A><IMG src="http://www.cnxhacker.com/editor/sysimage/file/rar.gif" border=0><A href="http://www.cnxhacker.com/editor/UploadFile/2005-6/12/200561214029342.rar" target=_blank>NOTEPAD.rar</A><BR><BR>用Peid或FI测NOTEPAD.EXE都不能识别，因为它是国产的壳，名气也不高，著名的终极上网提速<A href="http://cnxhacker.net/download/">软件</A>就是用这个<A href="http://cnxhacker.net/download/">软件</A>加的壳，并略作修改使Peid查不出Oep。两大查壳<A href="http://cnxhacker.net/download/">软件</A>数据库中无它的特征码，不过在加壳目标用Peid查看Ep区段可看到.dxpack的加壳标志。看截图压缩选项和<A href="http://cnxhacker.net/download/">软件</A>名可知道这个<A href="http://cnxhacker.net/download/">软件</A>非加密壳,以压缩为目的.<BR>手动脱壳建议大家用Ollydbg,工作平台Win2000,WinXp,Win9x不推荐。<BR>手动脱壳时，用Olldbg载入程序,脱壳程序里面会有有好多循环。对付循环时，只能让程序往前运行，基本不能让它往回跳，要想法跳出循环圈。不要用Peid查入口，单步跟踪，提高手动找入口能力。<BR><BR>用OD载入程序后。<BR>确定一个入口警告，然后Od提示程序加壳，选不继续分析。<BR>停在这里<BR>0040D000 &gt;&nbsp;&nbsp;60&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;PUSHAD&nbsp;&nbsp;通过前面的<A href="http://cnxhacker.net/article/">文章</A>是不是很熟悉这个指令了，出口处会有PopAd指令与它对应。<BR>0040D001&nbsp; &nbsp; E8 00000000&nbsp; &nbsp;&nbsp;&nbsp;CALL NOTEPAD.0040D006 变形jmp<BR>0040D006&nbsp; &nbsp; 5D&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;POP EBP<BR>0040D007&nbsp; &nbsp; 8BFD&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;MOV EDI,EBP<BR>0040D009&nbsp; &nbsp; 81ED 06104000&nbsp; &nbsp;SUB EBP,NOTEPAD.00401006<BR>0040D00F&nbsp; &nbsp; 2BBD 94124000&nbsp; &nbsp;SUB EDI,DWORD PTR SS:[EBP+401294]<BR>0040D015&nbsp; &nbsp; 81EF 06000000&nbsp; &nbsp;SUB EDI,6<BR>0040D01B&nbsp; &nbsp; 83BD 14134000 0&gt;CMP DWORD PTR SS:[EBP+401314],1<BR>0040D022&nbsp; &nbsp;/0F84 2F010000&nbsp; &nbsp;JE NOTEPAD.0040D157 这里没跳走，让我们到40D157看看<BR>0040D028&nbsp; &nbsp;|C785 14134000 0&gt;MOV DWORD PTR SS:[EBP+401314],1<BR>0040D032&nbsp; &nbsp;|89BD 1C134000&nbsp; &nbsp;MOV DWORD PTR SS:[EBP+40131C],EDI<BR>0040D038&nbsp; &nbsp;|8D9D B2114000&nbsp; &nbsp;LEA EBX,DWORD PTR SS:[EBP+4011B2]<BR>0040D03E&nbsp; &nbsp;|8DB5 65114000&nbsp; &nbsp;LEA ESI,DWORD PTR SS:[EBP+401165]<BR>0040D044&nbsp; &nbsp;|46&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;INC ESI<BR>0040D045&nbsp; &nbsp;|803E 00&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;CMP BYTE PTR DS:[ESI],0<BR>0040D048&nbsp; &nbsp;|74 24&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;JE SHORT NOTEPAD.0040D06E<BR>0040D04A&nbsp; &nbsp;|56&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;PUSH ESI<BR>0040D04B&nbsp; &nbsp;|FF95 34124000&nbsp; &nbsp;CALL DWORD PTR SS:[EBP+401234]<BR>0040D051&nbsp; &nbsp;|46&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;INC ESI<BR>0040D052&nbsp; &nbsp;|803E 00&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;CMP BYTE PTR DS:[ESI],0<BR>0040D055&nbsp;&nbsp;^|75 FA&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;JNZ SHORT NOTEPAD.0040D051&nbsp; &nbsp;中间的全是解压过程循环.<BR>0040D057&nbsp; &nbsp;|46&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;INC ESI<BR>0040D058&nbsp; &nbsp;|803E 00&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;CMP BYTE PTR DS:[ESI],0<BR>0040D05B&nbsp;&nbsp;^|74 E7&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;JE SHORT NOTEPAD.0040D044<BR>0040D05D&nbsp; &nbsp;|50&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;PUSH EAX<BR>0040D05E&nbsp; &nbsp;|56&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;PUSH ESI<BR>0040D05F&nbsp; &nbsp;|50&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;PUSH EAX<BR>0040D060&nbsp; &nbsp;|FF95 38124000&nbsp; &nbsp;CALL DWORD PTR SS:[EBP+401238]<BR>0040D066&nbsp; &nbsp;|8903&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;MOV DWORD PTR DS:[EBX],EAX<BR>0040D068&nbsp; &nbsp;|58&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;POP EAX<BR>0040D069&nbsp; &nbsp;|83C3 04&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;ADD EBX,4<BR>0040D06C&nbsp;&nbsp;^|EB E3&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;JMP SHORT NOTEPAD.0040D051<BR>0040D06E&nbsp; &nbsp;|8DB5 A4124000&nbsp; &nbsp;LEA ESI,DWORD PTR SS:[EBP+4012A4]<BR>0040D074&nbsp; &nbsp;|8B46 04&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;MOV EAX,DWORD PTR DS:[ESI+4]<BR>0040D077&nbsp; &nbsp;|6A 04&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;PUSH 4<BR>0040D079&nbsp; &nbsp;|68 00300000&nbsp; &nbsp;&nbsp;&nbsp;PUSH 3000<BR>0040D07E&nbsp; &nbsp;|50&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;PUSH EAX<BR>0040D07F&nbsp; &nbsp;|6A 00&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;PUSH 0<BR>0040D081&nbsp; &nbsp;|FF95 B2114000&nbsp; &nbsp;CALL DWORD PTR SS:[EBP+4011B2]<BR>0040D087&nbsp; &nbsp;|8985 61124000&nbsp; &nbsp;MOV DWORD PTR SS:[EBP+401261],EAX<BR>0040D08D&nbsp; &nbsp;|56&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;PUSH ESI<BR>0040D08E&nbsp; &nbsp;|8B1E&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;MOV EBX,DWORD PTR DS:[ESI]<BR>0040D090&nbsp; &nbsp;|039D 1C134000&nbsp; &nbsp;ADD EBX,DWORD PTR SS:[EBP+40131C]<BR>0040D096&nbsp; &nbsp;|50&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;PUSH EAX<BR>0040D097&nbsp; &nbsp;|53&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;PUSH EBX<BR>0040D098&nbsp; &nbsp;|E8 13030000&nbsp; &nbsp;&nbsp;&nbsp;CALL NOTEPAD.0040D3B0<BR>0040D09D&nbsp; &nbsp;|83C4 08&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;ADD ESP,8<BR>0040D0A0&nbsp; &nbsp;|8B4E 04&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;MOV ECX,DWORD PTR DS:[ESI+4]<BR>0040D0A3&nbsp; &nbsp;|8B3E&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;MOV EDI,DWORD PTR DS:[ESI]<BR>0040D0A5&nbsp; &nbsp;|03BD 1C134000&nbsp; &nbsp;ADD EDI,DWORD PTR SS:[EBP+40131C]<BR>0040D0AB&nbsp; &nbsp;|8BB5 61124000&nbsp; &nbsp;MOV ESI,DWORD PTR SS:[EBP+401261]<BR>0040D0B1&nbsp; &nbsp;|F3:A4&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;REP MOVS BYTE PTR ES:[EDI],BYTE PTR DS:[&gt;<BR>0040D0B3&nbsp; &nbsp;|5E&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;POP ESI<BR>0040D0B4&nbsp; &nbsp;|8B85 61124000&nbsp; &nbsp;MOV EAX,DWORD PTR SS:[EBP+401261]<BR>0040D0BA&nbsp; &nbsp;|68 00800000&nbsp; &nbsp;&nbsp;&nbsp;PUSH 8000<BR>0040D0BF&nbsp; &nbsp;|6A 00&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;PUSH 0<BR>0040D0C1&nbsp; &nbsp;|50&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;PUSH EAX<BR>0040D0C2&nbsp; &nbsp;|FF95 B6114000&nbsp; &nbsp;CALL DWORD PTR SS:[EBP+4011B6]<BR>0040D0C8&nbsp; &nbsp;|83C6 08&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;ADD ESI,8<BR>0040D0CB&nbsp; &nbsp;|833E 00&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;CMP DWORD PTR DS:[ESI],0<BR>0040D0CE&nbsp;&nbsp;^|75 A4&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;JNZ SHORT NOTEPAD.0040D074<BR>0040D0D0&nbsp; &nbsp;|E8 4F020000&nbsp; &nbsp;&nbsp;&nbsp;CALL NOTEPAD.0040D324<BR>0040D0D5&nbsp; &nbsp;|8BB5 98124000&nbsp; &nbsp;MOV ESI,DWORD PTR SS:[EBP+401298]<BR>0040D0DB&nbsp; &nbsp;|8BBD 1C134000&nbsp; &nbsp;MOV EDI,DWORD PTR SS:[EBP+40131C]<BR>0040D0E1&nbsp; &nbsp;|8B443E 0C&nbsp; &nbsp;&nbsp; &nbsp; MOV EAX,DWORD PTR DS:[ESI+EDI+C]<BR>0040D0E5&nbsp; &nbsp;|0BC0&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;OR EAX,EAX<BR>0040D0E7&nbsp; &nbsp;|74 6E&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;JE SHORT NOTEPAD.0040D157<BR>0040D0E9&nbsp; &nbsp;|03C7&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;ADD EAX,EDI<BR>0040D0EB&nbsp; &nbsp;|50&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;PUSH EAX<BR>0040D0EC&nbsp; &nbsp;|FF95 34124000&nbsp; &nbsp;CALL DWORD PTR SS:[EBP+401234]<BR>0040D0F2&nbsp; &nbsp;|0BC0&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;OR EAX,EAX<BR>0040D0F4&nbsp; &nbsp;|74 43&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;JE SHORT NOTEPAD.0040D139<BR>0040D0F6&nbsp; &nbsp;|8B1C3E&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; MOV EBX,DWORD PTR DS:[ESI+EDI]<BR>0040D0F9&nbsp; &nbsp;|8B4C3E 10&nbsp; &nbsp;&nbsp; &nbsp; MOV ECX,DWORD PTR DS:[ESI+EDI+10]<BR>0040D0FD&nbsp; &nbsp;|83C6 14&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;ADD ESI,14<BR>0040D100&nbsp; &nbsp;|0BDB&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;OR EBX,EBX<BR>0040D102&nbsp; &nbsp;|75 02&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;JNZ SHORT NOTEPAD.0040D106<BR>0040D104&nbsp; &nbsp;|8BD9&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;MOV EBX,ECX<BR>0040D106&nbsp; &nbsp;|8B143B&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; MOV EDX,DWORD PTR DS:[EBX+EDI]<BR>0040D109&nbsp; &nbsp;|83C3 04&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;ADD EBX,4<BR>0040D10C&nbsp; &nbsp;|0BD2&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;OR EDX,EDX<BR>0040D10E&nbsp;&nbsp;^|74 D1&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;JE SHORT NOTEPAD.0040D0E1<BR>0040D110&nbsp; &nbsp;|F7C2 00000080&nbsp; &nbsp;TEST EDX,80000000<BR>0040D116&nbsp; &nbsp;|74 05&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;JE SHORT NOTEPAD.0040D11D<BR>0040D118&nbsp; &nbsp;|0FB7D2&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; MOVZX EDX,DX<BR>0040D11B&nbsp; &nbsp;|EB 04&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;JMP SHORT NOTEPAD.0040D121<BR>0040D11D&nbsp; &nbsp;|8D543A 02&nbsp; &nbsp;&nbsp; &nbsp; LEA EDX,DWORD PTR DS:[EDX+EDI+2]<BR>0040D121&nbsp; &nbsp;|50&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;PUSH EAX<BR>0040D122&nbsp; &nbsp;|51&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;PUSH ECX<BR>0040D123&nbsp; &nbsp;|52&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;PUSH EDX<BR>0040D124&nbsp; &nbsp;|50&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;PUSH EAX<BR>0040D125&nbsp; &nbsp;|FF95 38124000&nbsp; &nbsp;CALL DWORD PTR SS:[EBP+401238]<BR>0040D12B&nbsp; &nbsp;|59&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;POP ECX<BR>0040D12C&nbsp; &nbsp;|0BC0&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;OR EAX,EAX<BR>0040D12E&nbsp; &nbsp;|74 09&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;JE SHORT NOTEPAD.0040D139<BR>0040D130&nbsp; &nbsp;|890439&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; MOV DWORD PTR DS:[ECX+EDI],EAX<BR>0040D133&nbsp; &nbsp;|58&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;POP EAX<BR>0040D134&nbsp; &nbsp;|83C1 04&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;ADD ECX,4<BR>0040D137&nbsp;&nbsp;^|EB CD&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;JMP SHORT NOTEPAD.0040D106&nbsp;&nbsp;往回跳<BR>0040D139&nbsp; &nbsp;|8D8D 65124000&nbsp; &nbsp;LEA ECX,DWORD PTR SS:[EBP+401265]<BR>0040D13F&nbsp; &nbsp;|8D85 84124000&nbsp; &nbsp;LEA EAX,DWORD PTR SS:[EBP+401284]<BR>0040D145&nbsp; &nbsp;|6A 00&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;PUSH 0<BR>0040D147&nbsp; &nbsp;|50&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;PUSH EAX<BR>0040D148&nbsp; &nbsp;|51&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;PUSH ECX<BR>0040D149&nbsp; &nbsp;|6A 00&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;PUSH 0<BR>0040D14B&nbsp; &nbsp;|FF95 BE114000&nbsp; &nbsp;CALL DWORD PTR SS:[EBP+4011BE]<BR>0040D151&nbsp; &nbsp;|FFA5 BA114000&nbsp; &nbsp;JMP DWORD PTR SS:[EBP+4011BA]&nbsp;&nbsp;<BR>0040D157&nbsp; &nbsp;\8B85 9C124000&nbsp; &nbsp;MOV EAX,DWORD PTR SS:[EBP+40129C] 到这里看看.<BR>0040D15D&nbsp; &nbsp; 03C7&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;ADD EAX,EDI<BR>0040D15F&nbsp; &nbsp; 894424 1C&nbsp; &nbsp;&nbsp; &nbsp; MOV DWORD PTR SS:[ESP+1C],EAX<BR>0040D163&nbsp; &nbsp; 61&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;POPAD&nbsp; &nbsp;这个是什么,关键字与入口处对称.中间代码也没有Popad指令,不用怀疑,这里就是解压后的出口.让我们直接F2在这里下断点,F9运行到这里后再F2取消断点.<BR>0040D164&nbsp; &nbsp; FFE0&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;JMP EAX&nbsp;&nbsp;这个就是跨段跳跃,F8到达Oep处.<BR><BR>004010CC&nbsp; &nbsp; 55&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;PUSH EBP<BR>经过Popad关键字,并跨段跳跃到入口，我们在这里用Od的Dump插件直接脱壳。<BR>004010CD&nbsp; &nbsp; 8BEC&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;MOV EBP,ESP<BR>004010CF&nbsp; &nbsp; 83EC 44&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;SUB ESP,44<BR>004010D2&nbsp; &nbsp; 56&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;PUSH ESI<BR>004010D3&nbsp; &nbsp; FF15 E4634000&nbsp; &nbsp;CALL DWORD PTR DS:[4063E4]&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;; KERNEL32.GetCommandLineA<BR>004010D9&nbsp; &nbsp; 8BF0&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;MOV ESI,EAX<BR>004010DB&nbsp; &nbsp; 8A00&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;MOV AL,BYTE PTR DS:[EAX]<BR>004010DD&nbsp; &nbsp; 3C 22&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;CMP AL,22<BR>004010DF&nbsp; &nbsp; 75 1B&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;JNZ SHORT NOTEPAD.004010FC<BR>004010E1&nbsp; &nbsp; 56&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;PUSH ESI<BR><BR>重建输入表时，插件有两个选项。Method2重建输入表很快，脱壳后运行率高。Method1重建输入表慢，脱壳后运行率较低。不过本程序用Method2重建输入表无法运行，Method1重建输入表后程序可直接运行。<BR>]]></description><category>加密解密</category><comments>http://www.redwolf.com.cn/redwolf/post/06102414.html#comment</comments><wfw:comment>http://www.redwolf.com.cn/redwolf/</wfw:comment><wfw:commentRss>http://www.redwolf.com.cn/redwolf/feed.asp?cmt=233</wfw:commentRss><trackback:ping>http://www.redwolf.com.cn/redwolf/cmd.asp?act=tb&amp;id=233&amp;key=5d94449e</trackback:ping></item><item><title>手动脱壳入门第十一篇PEDiminishe 0.1</title><author>redwolf@redwolf.com.cn (redwolf)</author><link>http://www.redwolf.com.cn/redwolf/post/06102413.html</link><pubDate>Tue, 24 Oct 2006 16:51:58 +0800</pubDate><guid>http://www.redwolf.com.cn/redwolf/post/06102413.html</guid><description><![CDATA[脱文标题】 手动脱壳入门第十一篇PEDiminishe 0.1<BR><BR>【脱文作者】 weiyi75[Dfcg] <BR><BR>【作者邮箱】 <A href="mailto:weiyi75@sohu.com">weiyi75@sohu.com</A> <BR><BR>【作者主页】 Dfcg官方大本营 <BR><BR>【使用工具】 Peid,Ollydbg<BR><BR>【脱壳平台】 Win2K/XP<BR><BR>【<A href="http://cnxhacker.net/download/">软件</A>名称】 PEDiminishe0.1主程序<BR><BR>【<A href="http://cnxhacker.net/download/">软件</A>简介】 PE Diminisher is a simple PE packer. Just run it, open the file you want to pack, and select Encrypt File! This software was written in learning purpose only. So, don't tell me it sucks, cause I already know <FONT face=Verdana>;)</FONT>Anyway, the GUI is pretty nice&nbsp;<FONT face=Verdana>:)</FONT> PE Diminisher uses the aplib compression/decompression library,(C) 1998 Jibz. Also, thanks to Stone, without whom, I would had a rough time coding this. This software has borrowed code fragments from his softwares.<BR><BR>【<A href="http://cnxhacker.net/download/">软件</A>大小】 14 KB<BR><BR>【加壳方式】 PEDiminisher 0.1 -&gt; Teraphy<BR><BR>【保护方式】 PEDiminisher<BR><BR>【脱壳声明】 我是一只小菜鸟，偶得一点心得，愿与大家分享：<BR><BR><A href="http://cnxhacker.net/download/">软件</A>截图:<BR><BR><IMG onmouseover="if(this.alt) this.style.cursor='hand';" style="FILTER: ; WIDTH: 500px; CURSOR: hand; HEIGHT: 380px" onclick="window.open('/editor/UploadFile/2005-6/12/200561213054782.jpg');" height=380 alt="" hspace=0 src="http://www.cnxhacker.com/editor/UploadFile/2005-6/12/200561213054782.jpg" width=500 onload="if(this.width>screen.width-333) {this.width=screen.width-333;this.alt='Click Here to Open New Window';}" border=0 pop="Click Here to Open New Window"> <BR><BR>界面很朴素，奇怪的是我在Win2000和Xp系统用它加壳任何程序均无法运行。选择几个加密选项和一个都不选一样，不能运行,难道是For Win98的。<BR>脱壳目标，PEDiminishe0.1主程序。<BR><BR>本地<A href="http://cnxhacker.net/download/">下载</A><IMG src="http://www.cnxhacker.com/editor/sysimage/file/rar.gif" border=0><A href="http://www.cnxhacker.com/editor/UploadFile/2005-6/12/200561213344493.rar" target=_blank>PED.rar</A><BR><BR><A href="http://cnxhacker.net/download/">软件</A>后用Fi测ped.exe的壳为PEDiminisher 0.1 -&gt; Teraphy<BR>手动脱壳建议大家用Ollydbg,工作平台Win2000,WinXp,Win9x不推荐。<BR>手动脱壳时，用Olldbg载入程序,脱壳程序里面会有有好多循环。对付循环时，只能让程序往前运行，基本不能让它往回跳，要想法跳出循环圈。不要用Peid查入口，单步跟踪，提高手动找入口能力。<BR><BR>用OD载入程序后。<BR>确定一个入口点警告。<BR>停在这里<BR>00417000 &gt;&nbsp;&nbsp;53&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;PUSH EBX<BR>00417001&nbsp; &nbsp; 51&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;PUSH ECX<BR>00417002&nbsp; &nbsp; 52&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;PUSH EDX<BR>00417003&nbsp; &nbsp; 56&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;PUSH ESI<BR>00417004&nbsp; &nbsp; 57&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;PUSH EDI<BR>00417005&nbsp; &nbsp; 55&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;PUSH EBP<BR>00417006&nbsp; &nbsp; E8 00000000&nbsp; &nbsp;&nbsp;&nbsp;CALL ped.0041700B&nbsp;&nbsp;F7步过。<BR>0041700B&nbsp; &nbsp; 5D&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;POP EBP<BR>0041700C&nbsp; &nbsp; 8BD5&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;MOV EDX,EBP<BR>0041700E&nbsp; &nbsp; 81ED A2304000&nbsp; &nbsp;SUB EBP,ped.004030A2<BR>00417014&nbsp; &nbsp; 2B95 91334000&nbsp; &nbsp;SUB EDX,DWORD PTR SS:[EBP+403391]<BR>0041701A&nbsp; &nbsp; 81EA 0B000000&nbsp; &nbsp;SUB EDX,0B<BR>00417020&nbsp; &nbsp; 8995 9A334000&nbsp; &nbsp;MOV DWORD PTR SS:[EBP+40339A],EDX<BR>00417026&nbsp; &nbsp; 80BD 99334000 0&gt;CMP BYTE PTR SS:[EBP+403399],0<BR>0041702D&nbsp; &nbsp; 74 50&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;JE SHORT ped.0041707F&nbsp;&nbsp;好大一个循环，有可能是循环出口。<BR>0041702F&nbsp; &nbsp; E8 02010000&nbsp; &nbsp;&nbsp;&nbsp;CALL ped.00417136&nbsp; &nbsp;F7步过。<BR>00417034&nbsp; &nbsp; 8BFD&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;MOV EDI,EBP<BR>00417036&nbsp; &nbsp; 8D9D 9A334000&nbsp; &nbsp;LEA EBX,DWORD PTR SS:[EBP+40339A]<BR>0041703C&nbsp; &nbsp; 8B1B&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;MOV EBX,DWORD PTR DS:[EBX]<BR>0041703E&nbsp; &nbsp; 8D87 9E334000&nbsp; &nbsp;LEA EAX,DWORD PTR DS:[EDI+40339E]<BR>00417044&nbsp; &nbsp; 8B00&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;MOV EAX,DWORD PTR DS:[EAX]<BR>00417046&nbsp; &nbsp; 03D8&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;ADD EBX,EAX<BR>00417048&nbsp; &nbsp; 8D8F A2334000&nbsp; &nbsp;LEA ECX,DWORD PTR DS:[EDI+4033A2]<BR>0041704E&nbsp; &nbsp; 8B09&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;MOV ECX,DWORD PTR DS:[ECX]<BR>00417050&nbsp; &nbsp; 66:8B85 8F33400&gt;MOV AX,WORD PTR SS:[EBP+40338F]<BR>00417057&nbsp; &nbsp; 8003 10&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;ADD BYTE PTR DS:[EBX],10<BR>0041705A&nbsp; &nbsp; 3003&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;XOR BYTE PTR DS:[EBX],AL<BR>0041705C&nbsp; &nbsp; 3023&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;XOR BYTE PTR DS:[EBX],AH<BR>0041705E&nbsp; &nbsp; 8003 AA&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;ADD BYTE PTR DS:[EBX],0AA<BR>00417061&nbsp; &nbsp; 66:C1C0 03&nbsp; &nbsp;&nbsp; &nbsp;ROL AX,3<BR>00417065&nbsp; &nbsp; 86E0&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;XCHG AL,AH<BR>00417067&nbsp; &nbsp; 43&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;INC EBX<BR>00417068&nbsp;&nbsp;^ E2 ED&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;LOOPD SHORT ped.00417057&nbsp;&nbsp;循环。<BR>0041706A&nbsp; &nbsp; E8 FF000000&nbsp; &nbsp;&nbsp;&nbsp;CALL ped.0041716E F4到这里,F8步过远程Call。<BR>0041706F&nbsp; &nbsp; 83C7 08&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;ADD EDI,8<BR>00417072&nbsp; &nbsp; FE8D 99334000&nbsp; &nbsp;DEC BYTE PTR SS:[EBP+403399]<BR>00417078&nbsp;&nbsp;^ 75 BC&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;JNZ SHORT ped.00417036&nbsp; &nbsp;往回跳。<BR>0041707A&nbsp; &nbsp; E8 16000000&nbsp; &nbsp;&nbsp;&nbsp;CALL ped.00417095&nbsp;&nbsp;F4到这里,F8步过远程Call。<BR>0041707F&nbsp; &nbsp; 8B85 95334000&nbsp; &nbsp;MOV EAX,DWORD PTR SS:[EBP+403395]&nbsp;&nbsp;Eax=00001000<BR>00417085&nbsp; &nbsp; 8B9D 9A334000&nbsp; &nbsp;MOV EBX,DWORD PTR SS:[EBP+40339A]&nbsp;&nbsp;Ebx=00400000<BR>0041708B&nbsp; &nbsp; 03C3&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;ADD EAX,EBX EAX=00001000 + 00400000=00401000&nbsp; &nbsp;<BR>0041708D&nbsp; &nbsp; 5D&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;POP EBP<BR>0041708E&nbsp; &nbsp; 5F&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;POP EDI<BR>0041708F&nbsp; &nbsp; 5E&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;POP ESI<BR>00417090&nbsp; &nbsp; 5A&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;POP EDX<BR>00417091&nbsp; &nbsp; 59&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;POP ECX<BR>00417092&nbsp; &nbsp; 5B&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;POP EBX<BR>00417093&nbsp; &nbsp; FFE0&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;JMP EAX 跨段跳跃跳到入口401000处。<BR><BR>00401000&nbsp; &nbsp;&nbsp; &nbsp;E8&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;DB E8&nbsp;&nbsp;经过跨段跳跃到入口，我们在这里用Od的Dump插件直接脱壳。<BR>00401001&nbsp; &nbsp;&nbsp; &nbsp;85&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;DB 85<BR>00401002&nbsp; &nbsp;&nbsp; &nbsp;25&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;DB 25&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;CHAR '%'<BR>00401003&nbsp; &nbsp;&nbsp; &nbsp;00&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;DB 00<BR>00401004&nbsp; &nbsp;&nbsp; &nbsp;00&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;DB 00<BR>00401005&nbsp; &nbsp;&nbsp; &nbsp;6A&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;DB 6A&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;CHAR 'j'<BR>00401006&nbsp; &nbsp;&nbsp; &nbsp;00&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;DB 00<BR>00401007&nbsp; &nbsp;&nbsp; &nbsp;E8&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;DB E8<BR>00401008&nbsp; &nbsp;&nbsp; &nbsp;D6&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;DB D6<BR>00401009&nbsp; &nbsp;&nbsp; &nbsp;24&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;DB 24&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;CHAR '$'<BR><BR>重建输入表时，插件有两个选项。Method2重建输入表很快，脱壳后运行率高。Method1重建输入表慢，脱壳后<BR>运行率较低。本程序用Method1重建输入表后程序可直接运行。<BR>]]></description><category>加密解密</category><comments>http://www.redwolf.com.cn/redwolf/post/06102413.html#comment</comments><wfw:comment>http://www.redwolf.com.cn/redwolf/</wfw:comment><wfw:commentRss>http://www.redwolf.com.cn/redwolf/feed.asp?cmt=232</wfw:commentRss><trackback:ping>http://www.redwolf.com.cn/redwolf/cmd.asp?act=tb&amp;id=232&amp;key=b47cc32e</trackback:ping></item></channel></rss>
