附件: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日开班!