查看完整版本: PhotoZoomPro2 2.1.8 脱壳后变态自校验完全解决办法

qyc 2007-1-7 08:53 PM

PhotoZoomPro2 2.1.8 脱壳后变态自校验完全解决办法

标 题: 【原创】PhotoZoomPro2 2.1.8 脱壳后变态自校验完全解决办法
作 者: qyc
时 间: 2007-01-05,21:46
链 接: [url]http://bbs.pediy.com/showthread.php?threadid=37499[/url]

【文章标题】: PhotoZoomPro2 2.1.8 脱壳后变态自校验完全解决办法
【文章作者】: qyc
【作者邮箱】: [email]qyc5@yahoo.com.cn[/email]
【作者主页】: [url]http://www.iv2.cn[/url]
【软件名称】: PhotoZoomPro2 2.1.8
【软件大小】: 3.55M
【下载地址】: 自己搜索下载
【加壳方式】: ASProtect 2.1x SKE -> Alexey Solodovnikov-->Version: ASProtect 1.35 build 04.25 or 06.26 Release [Extract]
【保护方式】: 加密壳
【编写语言】: VC++
【使用工具】: PEID IRE OD
【操作平台】: Win XP SP2
【软件介绍】: PhotoZoomPro2是一个图片放大软件
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
      PhotoZoomPro2是一个图片放大软件,小Q一直以来都是用最低版本的!知到有最新版!可以就是没有用的机会,因为没有破解!
  自己以前脱壳技术水平又不高一直没对它下手! 直到Aspr2.XX_IATfixer_v2.2s.osc的出现,才给了偶这次动它的机会,今天
  公司叫偶放大图片就再次下PhotoZoomPro2 最新版本是: 2.1.8
  
  PEID--->ASProtect 2.1x SKE -> Alexey Solodovnikov
  
  插件--->Version: ASProtect 1.35 build 04.25 or 06.26 Release [Extract]
  
  解决问题: 变态自校验
  
  OD 加载 程序 Aspr2.XX_IATfixer_v2.2s.osc 脚本完全dumped,IRE修复IAT,一个指针未修复,用插件搞定! 下面是精彩部分
  
  运行程序发现出错不能运行,一开始还以为壳偷了代码,认为10分变态,我所知ASProtect 1.35是不会偷代码的!
  
  脱壳后变态入口:
  00584FEF > $  E8 190D0100   call    00595D0D-------->F8死// F7进
  00584FF4   .^ E9 16FEFFFF   jmp     00584E0F
  00584FF9   $  6A 0C         push    0C
  00584FFB   .  68 F0D16F00   push    006FD1F0
  00585000   .  E8 DFC40000   call    005914E4
  00585005   .  8B75 08       mov     esi, [ebp+8]
  =================================================================
  来到:
  =================================================================
  00584F47   .  85C0          test    eax, eax
  00584F49   .  7D 08         jge     short 00584F53
  00584F4B   .  6A 09         push    9
  00584F4D   .  E8 90330000   call    005882E2
  00584F52   .  59            pop     ecx
  00584F53   >  53            push    ebx
  00584F54   .  E8 A5340000   call    005883FE--------------->内存异常!程序不可读! F7进
  00584F59   .  59            pop     ecx
  00584F5A   .  85C0          test    eax, eax
  00584F5C   .  74 07         je      short 00584F65
  ================================================================
  下面就是变态过程:
  ================================================================
  00588456  |. /73 0F         jnb     short 00588467
  00588458  |> |8B06          /mov     eax, [esi]
  0058845A  |. |85C0          |test    eax, eax
  0058845C  |. |74 02         |je      short 00588460
  0058845E  |. |FFD0          |call    eax    --------> 相当变态的动态地址(异常将在这里发生)!
  00588460  |> |83C6 04       |add     esi, 4
  00588463  |. |3BF7          |cmp     esi, edi
  00588465  |.^|72 F1         \jb      short 00588458------->来回不知多少次,你别用F8了!
  00588467  |> \833D BC1F7500>cmp     dword ptr [751FBC], 0
  ============================================================================
  F9让异常出现吧!
   [img]http://bbs.pediy.com/upload/2006/4/image/bug.jpg[/img]
  错误提示内存00FC0000不可读.见图! 好伽伙,这招毒啊! 壳不抽代码,原程序做起这事来了! ^_^!
  
  以经验所知! 内存出错, ASM 语句: PUSH
  
  那就 PUSH 00FC0000  查找所有命令 PUSH 00FC0000  哇....还真有一处也
  ==============================================================================
  0058CD36      CC            int3
  0058CD37      CC            int3
  0058CD38      68 0000FC00   push    0FC0000--------------->相当制命的一招(软件作者好毒啊!) F2下断
  0058CD3D      C3            retn
  0058CD3E      AE            db      AE
  0058CD3F      2D            db      2D                               ;  CHAR '-'
  0058CD40      1B            db      1B
  0058CD41      77            db      77                               ;  CHAR 'w'
  0058CD42      BD            db      BD
  0058CD43      5E            db      5E                               ;  CHAR '^'
  0058CD44      8B            db      8B
  ================================================================================
  重新运行程序,程序直接中断在0058CD38,  执行push 0FC0000后就是空白代码,程序出错,程序被WINDOWS 关闭,所有问题连接而来(狂晕中).
  
  55555,要是偶能用程序语言写出代码就好罗,可是写不出,呵呵!
  
  以上所知!找到了问题所在,那就是出注意解决问题啦! 各位考考你们,让想到啦,请举手哈(鸡蛋青菜全向偶飞来!不要,我马上解决)
  ================================================================================
  解决问题很简单:跟踪原程序(哈哈!大家别扁偶啊,老大们都是这样做的)
  ================================================================================
  原程序: 0FC0000代码如下:
  ================================================================================
  00FC0000    68 FFFFFFFF           push    -1
  00FC0005    50                    push    eax
  00FC0006    83C8 FF               or      eax, FFFFFFFF
  00FC0009    F7D0                  not     eax
  00FC000B    64:8B00               mov     eax, fs:[eax]
  00FC000E    50                    push    eax
  00FC000F    8D840B 3E5B4700       lea     eax, [ebx+ecx+475B3E]
  00FC0016    65:EB 01              jmp     short 00FC001A
  00FC0019    9A 2BC18B44 240C      call    far 0C24:448BC12B
  00FC0020    64:8925 00000000      mov     fs:[0], esp
  00FC0027    F3:                   prefix rep:
  00FC0028    EB 02                 jmp     short 00FC002C
  00FC002A    CD20 896C240C         vxdcall C246C89
  00FC0030    036C24 38             add     ebp, [esp+38]
  00FC0034    C1CD 23               ror     ebp, 23
  00FC0037    26:EB 02              jmp     short 00FC003C
  00FC003A    CD20 336C2408         vxdcall 8246C33
  00FC0040    EB 01                 jmp     short 00FC0043
  00FC0042    6903 6C24188D         imul    eax, [ebx], 8D18246C
  00FC0048    6C                    ins     byte ptr es:[edi], dx
  00FC0049    04 0C                 add     al, 0C
  00FC004B    2BE8                  sub     ebp, eax
  00FC004D    50                    push    eax
  00FC004E    C3                    retn
  ===============================================================================
  上面代码经典哈!偶就不作解释了! 转成 16 如下:
  ===============================================================================
  68 FF FF FF FF 50 83 C8 FF F7 D0 64 8B 00 50 8D 84 0B 3E 5B 47 00 65 EB 01 9A 2B C1 8B 44 24 0C
  64 89 25 00 00 00 00 F3 EB 02 CD 20 89 6C 24 0C 03 6C 24 38 C1 CD 23 26 EB 02 CD 20 33 6C 24 08
  EB 01 69 03 6C 24 18 8D 6C 04 0C 2B E8 50 C3
  ===============================================================================
  什么,你现在问我做什么! 狂晕! 脱壳后 0FC0000 没代码,我们要给他补上啊! 要不然程序怎运和下去啊! 明白没??? 不明白再去多看一下书^_^!
  ===============================================================================
  偶用PEID找了块空地! 就是:( 0078AC08 ) 好肥的地啊! 种些东西一定不错! 以下是偶种的地瓜!
  ===============================================================================
  0078AC06    0000                     add     [eax], al
  0078AC08    68 FFFFFFFF              push    -1
  0078AC0D    50                       push    eax
  0078AC0E    83C8 FF                  or      eax, FFFFFFFF
  0078AC11    F7D0                     not     eax
  0078AC13    64:8B00                  mov     eax, fs:[eax]
  0078AC16    50                       push    eax
  0078AC17    8D840B 3E5B4700          lea     eax, [ebx+ecx+475B3E]
  0078AC1E    65:EB 01                 jmp     short 0078AC22
  0078AC21    9A 2BC18B44 240C         call    far 0C24:448BC12B
  0078AC28    64:8925 00000000         mov     fs:[0], esp
  0078AC2F    F3:                      prefix rep:
  0078AC30    EB 02                    jmp     short 0078AC34
  0078AC32    CD20 896C240C            vxdcall C246C89
  0078AC38    036C24 38                add     ebp, [esp+38]
  0078AC3C    C1CD 23                  ror     ebp, 23
  0078AC3F    26:EB 02                 jmp     short 0078AC44
  0078AC42    CD20 336C2408            vxdcall 8246C33
  0078AC48    EB 01                    jmp     short 0078AC4B
  0078AC4A    6903 6C24188D            imul    eax, [ebx], 8D18246C
  0078AC50    6C                       ins     byte ptr es:[edi], dx
  0078AC51    04 0C                    add     al, 0C
  0078AC53    2BE8                     sub     ebp, eax
  0078AC55    50                       push    eax
  0078AC56    C3                       retn
  0078AC57    0000                     add     [eax], al
  ================================================================================
  记得要保存好哦! 加载保存后的文件! 还记得: 0FC0000所在地吗? CRTL + G 0058CD38
  ================================================================================
  0058CD38      68 0000FC00   push    0FC0000
  改
  0058CD38      68 06AC7800   push    0078AC06
  ===============================================================================
  然后保存! 下面是修复后运行返回代码:
  ================================================================================
  0012FF14   005BFC10  返回到 dumped_.005BFC10 来自 dumped_.0058CD38
  0012FF18   005EB69F  返回到 dumped_.005EB69F 来自 dumped_.005BFC06
  0012FF1C   00632E7C  ASCII "file" -------------------->这分明就是在检验文件吗!
  ================================================================================
  005EB687   .  68 ECF77100   push    0071F7EC
  005EB68C   .  6A 00         push    0
  005EB68E   .  6A 00         push    0
  005EB690   .  68 7C2E6300   push    00632E7C                         ;  ASCII "file"
  005EB695   .  B9 D81D7500   mov     ecx, 00751DD8
  005EB69A   .  E8 6745FDFF   call    005BFC06----------------->软件作者的经典之作! (变态自校验)
  005EB69F   .  68 AAD05E00   push    005ED0AA----------------->就这样被小Q走回来了!
  005EB6A4   .  E8 558BF9FF   call    005841FE
  005EB6A9   .  59            pop     ecx
  005EB6AA   .  C3            retn
  =================================================================================
  返回,上面看过的:
  00588456  |. /73 0F         jnb     short 00588467
  00588458  |> |8B06          /mov     eax, [esi]
  0058845A  |. |85C0          |test    eax, eax
  0058845C  |. |74 02         |je      short 00588460
  0058845E  |. |FFD0          |call    eax
  00588460  |> |83C6 04       |add     esi, 4------------>这里哈
  00588463  |. |3BF7          |cmp     esi, edi
  00588465  |.^|72 F1         \jb      short 00588458
  00588467  |> \833D BC1F7500>cmp     dword ptr [751FBC], 0
  0058846E  |.  5F            pop     edi
  =================================================================================
  
  呵呵,这软件的变态自校验就这样解决了!呵呵兄弟们,学习到了吗?
  
  有空来偶的小站玩玩  [url]http://www.iv2.cn[/url] (艾微儿) ,2007年第一贴,kanxue你的加密与解密第三版啥时候出版啊!偶要谢谢哈!
  
  谢谢你看到这里! 感谢VolX的Aspr2.XX_IATfixer_v2.2s.osc脚本!没有你脚本,就没有这文章!感谢月華のKouryu给偶的提示!
  
                                             
                                                                    By [qyc]小Q  2007/1/5/9:25/写完文章!
  
  
--------------------------------------------------------------------------------
【经验总结】
  分析软件卡住时,千万别放弃分析! 我还是个菜鸟,请大家多多指教!
  
--------------------------------------------------------------------------------
【版权声明】: 本文原创于看雪技术论坛, 转载请注明作者并保持文章的完整, 谢谢!

qyc 2007-1-7 08:55 PM

破解过程//先站个位yct05
页: [1]
查看完整版本: PhotoZoomPro2 2.1.8 脱壳后变态自校验完全解决办法
Google