首页
社区
课程
招聘
SVKP 1.3x -> Pavol Cerven伪脱壳
发表于: 2005-7-23 16:23 5931

SVKP 1.3x -> Pavol Cerven伪脱壳

2005-7-23 16:23
5931
附件:weituoke.rar
【破解作者】 layper
【作者邮箱】 layper2002@yahoo.com.cn
【作者主页】 507K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8X3k6J5k6h3f1@1i4K6u0W2k6g2)9J5k6o6p5$3z5q4)9J5k6h3y4F1i4K6u0r3L8r3q4&6M7r3g2J5
【使用工具】 PEID,OD,ImportREC
【破解平台】 Win9x/NT/2000/XP
【软件名称】 1
【下载地址】 252K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8X3c8G2N6$3^5I4i4K6u0W2y4K6N6%4k6#2)9J5k6h3y4G2L8g2)9J5c8Y4N6G2N6#2)9J5c8V1y4J5L8%4N6F1x3o6M7I4y4#2)9J5k6h3g2^5k6b7`.`.
【软件简介】 自己看吧
【软件大小】 707kb
【加壳方式】 SVKP 1.3x -> Pavol Cerven
【破解声明】 我是一只小菜鸟,偶得一点心得,愿与大家分享:)
----------------------------------------------------------------------

----------
【破解内容】

之所以叫做伪脱壳,因为按照我的思路脱后还是显示SVKP 1.3x -> Pavol Cerven

,但我想应该算是不完整脱壳之类
的,别管这个,能让我这样的菜鸟玩玩这种壳就行了。
SVKP 1.3x -> Pavol Cerven的stolen code实在是变态到极点,象这个软件抽了

106字节,按照以前大大们的思路是
把这些stolen code还原回来重新放回头部就可以了,可是那么长的代码叫我逐步

分析,呵呵,没有这样的功力,看
见那么多代码就烦只能另想办法了。
废话少说,开工。
OD载入原程序,忽略所有异常,隐藏OD
0040C000 >  60              pushad                           ;入口处,

停在这里
0040C001    E8 00000000     call wowcrown.0040C006
0040C006    5D              pop ebp

F9直接运行,停在SVKP壳的典型异常处
0012E3B6    6285 1E220000   bound eax,qword ptr ss:[ebp+221E]
0012E3BC    EB 02           jmp short 0012E3C0
0012E3BE    0FE88B D1EB02CD psubsb mm1,qword ptr ds:[ebx+CD02EB>
0012E3C5    208B C2EB02CD   and byte ptr ds:[ebx+CD02EBC2],cl

这时下 BP GetModuleHandleA+5,Shift+F9运行,取消断点,Alt+F9返回,
044256B0    5B              pop ebx                             ;

wowcrown.004081A4,返回这里
044256B1    5E              pop esi
044256B2    5F              pop edi
044256B3    5D              pop ebp
044256B4    0BC0            or eax,eax
044256B6    75 2F           jnz short 044256E7

现在应该搜索特征码,对某些地方进行修改了。
Ctrl+F搜索1:
mov dword ptr ds:[edi],eax
来到
04425B4F    8907            mov dword ptr ds:[edi],eax     ;来到这里
04425B51    61              popad

把这两行代码对调变成

04425B4F    61              popad
04425B50    8907            mov dword ptr ds:[edi],eax

右键―前往―上个回到044256B0处,Ctrl+F搜索2:
sub dword ptr ds:[ebx],eax
来到
04425775    2903            sub dword ptr ds:[ebx],eax        ;来到这


04425777    58              pop eax
04425778    813B CC971025   cmp dword ptr ds:[ebx],251097CC
0442577E    0F84 41170000   je 04426EC5                       ;修改为

jmp 044257E4
04425784    813B C5B1662D   cmp dword ptr ds:[ebx],2D66B1C5
0442578A    0F84 62180000   je 04426FF2
04425790    813B 9404B2D9   cmp dword ptr ds:[ebx],D9B20494
04425796    0F84 AA1C0000   je 04427446
0442579C    813B A41A86D0   cmp dword ptr ds:[ebx],D0861AA4
044257A2    0F84 58210000   je 04427900
044257A8    813B 706586B1   cmp dword ptr ds:[ebx],B1866570
044257AE    0F84 C1240000   je 04427C75
044257B4    813B 0E46769B   cmp dword ptr ds:[ebx],9B76460E
044257BA    0F84 36280000   je 04427FF6
044257C0    813B DB0793E6   cmp dword ptr ds:[ebx],E69307DB
044257C6    0F84 76280000   je 04428042
044257CC    813B 627B6CA5   cmp dword ptr ds:[ebx],A56C7B62
044257D2    0F84 BA280000   je 04428092
044257D8    813B 664E96BB   cmp dword ptr ds:[ebx],BB964E66
044257DE    0F84 00290000   je 044280E4
044257E4    813B 4506D75B   cmp dword ptr ds:[ebx],5BD70645  ;SVK反脱壳

(注册)函数
044257EA    0F84 43290000   je 04428133
044257F0    813B 0DE0FC1D   cmp dword ptr ds:[ebx],1DFCE00D   ;SVK反脱

壳(注册)函数
044257F6    0F84 83290000   je 0442817F
044257FC    813B 31DD0F00   cmp dword ptr ds:[ebx],0FDD31     ;SVK反脱

壳(注册)函数
04425802    0F84 C6290000   je 044281CE
04425808    813B 95B75126   cmp dword ptr ds:[ebx],2651B795
0442580E    0F84 132A0000   je 04428227                      ;改为jmp

04425850
04425814    813B B482F64B   cmp dword ptr ds:[ebx],4BF682B4
0442581A    0F84 582A0000   je 04428278
04425820    813B 0F1ACF4C   cmp dword ptr ds:[ebx],4CCF1A0F
04425826    0F84 972A0000   je 044282C3
0442582C    813B 4A7687DF   cmp dword ptr ds:[ebx],DF87764A
04425832    0F84 FC2D0000   je 04428634
04425838    813B B8B8B2FB   cmp dword ptr ds:[ebx],FBB2B8B8
0442583E    0F84 56320000   je 04428A9A
04425844    813B 8E5D2D57   cmp dword ptr ds:[ebx],572D5D8E
0442584A    0F84 86320000   je 04428AD6
04425850    60              pushad
04425851    8B03            mov eax,dword ptr ds:[ebx]
04425853    8985 D8550200   mov dword ptr ss:[ebp+255D8],eax
04425859    8B95 33010200   mov edx,dword ptr ss:[ebp+20133]

接下来是在0012FFB0下硬件访问Word断点,F9运行三次
0012FC40    60              pushad             ;第一次停在这里
0012FC41    E8 03000000     call 0012FC49

0012FC54    E8 01000000     call 0012FC5A      ;第二次
0012FC59    E8 E8020000     call 0012FF46

0012FCFB    E8 00000000     call 0012FD00      ;第三次
0012FD00    5D              pop ebp

取消断点,在命令行下tc ebp==12ffc0,Enter来到

044AEF1D  ^\E9 28FBFFFF     jmp 044AEA4A       ;来到这里

接着在命令行下tc eip<03000000,Enter来到
004052B1    90              nop
004052B2    90              nop
004052B3    90              nop
004052B4    90              nop
004052B5    90              nop
004052B6    E8 1C010000     call wowcrown.004053D7    ;伪OEP来到这里,

上面一直到0040524c就是被抽去的106字节

在看雪精华6中,接下来就是分析下tc ebp==12ffc0之后F8单步走到004052B6的代

码,然后按照正常的入口代码形式
重新写回这106个字节,我佩服我们的大虾们的能力和毅力,竟然能分析出来,希

望有一天我也能做到,但现在还不能
我只能用些懒招数,呵呵,直接把下tc ebp==12ffc0之后到伪OEP前的代码COPY到

程序中

不关掉刚才的OD,新开OD1载入原程序,按照以上步骤走到044AEF1D即tc

ebp==12ffc0的Enter之后
044AEF1D  ^\E9 28FBFFFF     jmp 044AEA4A       ;来到这里,F8走

044AEA4A    55              push ebp           ;走到这里,二进制复制,

F8走
044AEA4B    E9 D9060000     jmp 044AF129       ;这个不要

把刚才复制的粘贴到原先OD的0040524C处,接下来也就是把代码不断粘贴到程序

里面,当然每一次最后的jmp这句就不要了

0040524C    55              push ebp
0040524D    04 4A           add al,4A
0040524F    F1              int1
00405250    2950 EA         sub dword ptr ds:[eax-16],edx
00405253    04 4A           add al,4A
00405255    F1              int1
00405256    2AB8 4A285E78   sub bh,byte ptr ds:[eax+785E284A]
0040525C    EA 785E2890 909>jmp far 9090:90285E78
00405263    68 00000000     push 0
00405268    50              push eax
00405269    B8 4A285E78     mov eax,785E284A
0040526E    014424 04       add dword ptr ss:[esp+4],eax
00405272    58              pop eax
00405273    58              pop eax
00405274    010424          add dword ptr ss:[esp],eax
00405277    58              pop eax
00405278    010424          add dword ptr ss:[esp],eax
0040527B    89C0            mov eax,eax
0040527D    5D              pop ebp
0040527E    58              pop eax
0040527F    68 6CD8A187     push 87A1D86C
00405284    50              push eax
00405285    B8 4A285E78     mov eax,785E284A
0040528A    014424 04       add dword ptr ss:[esp+4],eax
0040528E    58              pop eax
0040528F    05 4A285E78     add eax,785E284A
00405294    05 4A285E78     add eax,785E284A
00405299    50              push eax
0040529A    B8 4A285E78     mov eax,785E284A
0040529F    290424          sub dword ptr ss:[esp],eax
004052A2    8B0424          mov eax,dword ptr ss:[esp]
004052A5    B8 4A285E78     mov eax,785E284A
004052AA    290424          sub dword ptr ss:[esp],eax
004052AD    8B0424          mov eax,dword ptr ss:[esp]
004052B0    90              nop
004052B1    90              nop
004052B2    90              nop
004052B3    90              nop
004052B4    90              nop
004052B5    90              nop
004052B6    E8 1C010000     call wowcrown.004053D7

这里的字节不够找块空地,在程序的0042C6B9之后都是空地,在004052之前剩下

几个字节补上
004052B0   /E9 04740200     jmp wowcrown.0042C6B9

跳到空地继续COPY代码
      
0042C6B9    68 FFD7A187     push 87A1D7FF
0042C6BE    50              push eax
0042C6BF    B8 4A285E78     mov eax,785E284A
0042C6C4    89F6            mov esi,esi
0042C6C6    014424 04       add dword ptr ss:[esp+4],eax
0042C6CA    58              pop eax
0042C6CB    58              pop eax
0042C6CC    014424 04       add dword ptr ss:[esp+4],eax
0042C6D0    58              pop eax
0042C6D1    68 EC21840F     push 0F8421EC
0042C6D6    05 4A285E78     add eax,785E284A
……………………………………………………………
…………………………………………
……………………………………
………
COPY结束
jmp  004052B6       ;伪OEP处

这样,就完成了代码的COPY,接着原OD中右键-脱壳在当前调试进程,修改入口地

址为524C,脱壳保存,这里我不用LorPE
脱不了,可能有反LorPE吧,接着用ImportREC选择这个进程,OEP改为524C,点自动搜索IAT-获取输入表,有一个为假,修复后选择脱壳后的修复抓取文件,脱壳后的程序就可以运行了。

呵呵,不知这种方法到底算是脱壳了吗?请大大指导指导。
----------------------------------------------------------------------

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

[培训]科锐逆向工程师培训第53期2025年7月8日开班!

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 898
活跃值: (4054)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
2
SVKP的Stolen OEP应该是不难分析出来的
继续努力
2005-7-23 16:35
0
雪    币: 308
活跃值: (372)
能力值: ( LV12,RANK:370 )
在线值:
发帖
回帖
粉丝
3
呵呵,再试试
2005-7-23 19:36
0
雪    币: 223
活跃值: (70)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
4
晕,这个没有嵌入加密吗?
从044AEA4A 开始dump下来,用这里当oep不更好?
2005-7-24 08:58
0
雪    币: 308
活跃值: (372)
能力值: ( LV12,RANK:370 )
在线值:
发帖
回帖
粉丝
5
试过了,044AEA4A不在原程序的code段,所以不能
2005-7-24 09:59
0
雪    币: 224
活跃值: (147)
能力值: ( LV9,RANK:970 )
在线值:
发帖
回帖
粉丝
6
按哪个冒险小乖兔 的方法可以轻松处理好IAT

可惜这个东西被抽区了106字节`~搞不来`~希望fly 大大`搞篇文章学习下~~
2005-7-25 03:10
0
游客
登录 | 注册 方可回帖
返回