灵佑 發表於 2008-10-8 19:04:00

SWF 探索者 1.4 的破解

初学破解!请大侠指导! <br />

版权声明】 本文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢! <br />

【破文标题】SWF探索者1.4的破解<br />

【破文作者】云瑞<br />

【作者性别】男<br />

【作者主页】您的主页<br />

【作者邮箱】melove95@163.com<br />

【所属组织】第九舰队<br />

【软件名称】SWF探索者1.4<br />

【下载地址】<br />

【破解工具】OLLYDBG1.10,C32ASM,unpecompact,peid0.92汉<br />

【保护方式】PECPMPACT1.68-1.84<br />

【软件限制】时间限制<br />

【破解难度】中等<br />

----------------------------------------------------<br />

软件介绍:<br />

    很不错的动画播放器,以前有人破解过1.1和1.2,<br />

----------------------------------------------------<br />

破解声名:<br />

----------------------------------------------------<br />

【破解分析】<br />

    首先安装SWF探索者1.4,运行程序,在关于中输入注册信息,用户名:king,注册email:winners365@163.com,注册码999555(当然是错误的),然后点注册,出现THANKSREG!然后用peid 打开程序,是用pecompact1.68-1.84加的壳,我用专用脱壳工具unpecompact,脱壳,保存为unpacked.然后用C32ASM0.412反汇编,点字符串搜索,看到thanksreg,然后双击,来到代码处,004C79E8   .^E9 DFC7F3FF    JMP unpacked.004041CC<br />

004C79ED   .^EB F0          JMP SHORT unpacked.004C79DF<br />

004C79EF   . 8D4D DC      LEA ECX,DWORD PTR SS:<br />

004C79F2   . A1 10244D00    MOV EAX,DWORD PTR DS:<br />

004C79F7   . 8B00         MOV EAX,DWORD PTR DS:<br />

004C79F9   . BA B47A4C00    MOV EDX,unpacked.004C7AB4                ;ASCII &quot;ThanksReg&quot;<br />

004C79FE   . E8 31EDFFFF    CALL unpacked.004C6734<br />

004C7A03   . 8B45 DC      MOV EAX,DWORD PTR SS:<br />

004C7A06   . E8 3592F7FF    CALL unpacked.00440C40<br />

004C7A0B   . A1 04254D00    MOV EAX,DWORD PTR DS:<br />

004C7A10   . 8B00         MOV EAX,DWORD PTR DS:<br />

004C7A12   . E8 851CFAFF    CALL unpacked.0046969C<br />

004C7A17   . 33C0         XOR EAX,EAX<br />

004C7A19   . 5A             POP EDX                                  ;kernel32.7C81774D<br />

004C7A1A   . 59             POP ECX                                  ;kernel32.7C81774D<br />

然后我就对此处下断,向上看,发现regcode,估计在此处将进行某些处理。004C79C5|. BA A47A4C00    MOV EDX,unpacked.004C7AA4                ;ASCII &quot;RegCode&quot;<br />

004C79CA|. 8B45 FC      MOV EAX,DWORD PTR SS:<br />

004C79CD|. E8 D6F6FBFF    CALL unpacked.004870A8<br />

004C79D2|. 33C0         XOR EAX,EAX<br />

004C79D4|. 5A             POP EDX                                  ;kernel32.7C81774D<br />

004C79D5|. 59             POP ECX                                  ;kernel32.7C81774D<br />

004C79D6|. 59             POP ECX                                  ;kernel32.7C81774D<br />

004C79D7|. 64:8910      MOV DWORD PTR FS:,EDX               ;ntdll.KiFastSystemCallRet<br />

004C79DA|. 68 EF794C00    PUSH unpacked.004C79EF<br />

004C79DF|&gt; 8B45 FC      MOV EAX,DWORD PTR SS:<br />

004C79E2|. E8 51C0F3FF    CALL unpacked.00403A38<br />

004C79E7\. C3             RETN<br />

004C79E8   .^E9 DFC7F3FF    JMP unpacked.004041CC<br />

004C79ED   .^EB F0          JMP SHORT unpacked.004C79DF<br />

004C79EF   . 8D4D DC      LEA ECX,DWORD PTR SS:<br />

004C79F2   . A1 10244D00    MOV EAX,DWORD PTR DS:<br />

004C79F7   . 8B00         MOV EAX,DWORD PTR DS:<br />

004C79F9   . BA B47A4C00    MOV EDX,unpacked.004C7AB4                ;ASCII &quot;ThanksReg&quot;<br />

004C79FE   . E8 31EDFFFF    CALL unpacked.004C6734<br />

004C7A03   . 8B45 DC      MOV EAX,DWORD PTR SS:<br />

打开OLLGDBG,对004C79C5也下断,然后按F9运行,没有断到需要的东西,估计在初始化时生成了注册码,然后存在某地址处,于是,就重新下断,<br />

后来找到<br />

00487058|. E8 7BDCF7FF    CALL unpacked.00404CD8<br />

0048705D|. 50             PUSH EAX                                 ; |ValueName = NULL<br />

0048705E|. 8B46 04      MOV EAX,DWORD PTR DS:             ; |<br />

00487061|. 50             PUSH EAX                                 ; |hKey = 0<br />

00487062|. E8 31FEF7FF    CALL   ; \RegQueryValueExA(个人认为与注册有关!)<br />

00487067|. 85C0         TEST EAX,EAX<br />

00487069|. 0F94C3         SETE BL<br />

0048706C|. 8B0424         MOV EAX,DWORD PTR SS:               ;kernel32.7C81774D<br />

0048706F|. E8 50FCFFFF    CALL unpacked.00486CC4<br />

00487074|. 8845 00      MOV BYTE PTR SS:,AL<br />

00487077|. 8BC3         MOV EAX,EBX<br />

00487079|. 5A             POP EDX                                  ;kernel32.7C81774D<br />

于是就下端,然后遇到SEH,用SHIRTF7单步跟踪,在7C82DAD4位置停下,在堆栈窗口12EC4C会发现一个ASCII字符串&ldquo;D092E68F&rdquo;这个就是注册码了,嘿嘿!<br />



<br />
頁: [1]
查看完整版本: SWF 探索者 1.4 的破解