吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 8493|回复: 6
收起左侧

[转贴] 手动脱Acprotect,幻影,Svkp,Aspack,XJ五层bt壳

[复制链接]
qqc 发表于 2011-3-6 22:51
本帖最后由 qqc 于 2011-3-6 22:53 编辑

手动脱Acprotect,幻影,Svkp,Aspack,XJ五层bt壳
发信人:David
时 间:2004-05-07,20:20
【脱文作者】 weiyi75[Dfcg]

【作者邮箱】 weiyi75@sohu.com

【作者主页】 Dfcg官方大本营

【使用工具】 UnkillOllyDbg,Imprec1.42,LoadPe

破解平台】 Win2000/XP

【软件名称】 KMV2-Yock

【软件简介】 查看区段,初步估计加了至少X层壳,区段被修改,看不出什么。

【软件大小】 593k

【加壳方式】 Acprotect,幻影,Svkp,Aspack,XJ (加壳顺序由左往右)

【破解声明】 我是一只小菜鸟,偶得一点心得,愿与大家分享:)

--------------------------------------------------------------------------------

【破解内容】

前言,关于这个壳,高手不愿多说。我这个小菜鸟水平有限,不能完全剖析。用自己的方法脱了这个壳,写出简单过程。 此次脱壳由于加壳太厚,将Od设置忽略全部异常,中间的Bt壳由OD异常就可以忽略过去,关键点突破第一层仙剑,第四层幻影,第五层Acprotect。加太多壳,中间的Svkp,幻影形同虚设,尾部的Acprotect也没发挥威力,反而不如单层壳效果好。

载入程序,插件隐藏Od。

0049F060 >  55              PUSH EBP     第一关,仙剑,最后加壳的先脱。
0049F061    8BEC            MOV EBP,ESP
0049F063    6A FF           PUSH -1
0049F065    68 F71E4000     PUSH KMV2-Yoc.00401EF7
0049F06A    68 F6304000     PUSH KMV2-Yoc.004030F6
0049F06F    64:A1 00000000  MOV EAX,DWORD PTR FS:[0]
0049F075    50              PUSH EAX
0049F076    64:8925 0000000>MOV DWORD PTR FS:[0],ESP
0049F07D    83EC 44         SUB ESP,44
0049F080    53              PUSH EBX
0049F081    56              PUSH ESI

.........................................................

命令行下断点

bp ZwQueryInformationProcess

Alt+b 打开断点窗口。

77F76035 ntdll 永远  双击它。将普通断点改为硬件执行断点,然后取消普通断点。在

ZwQueryInformationProcess

检测时Od会告诉你,F9运行。

果然

77F76035 >  B8 9A000000     MOV EAX,9A  硬件中断,删除硬件断点。

看堆栈提示。

0012FF84   0049F49C  /CALL 到 ZwQueryInformationProcess 来自 KMV2-Yoc.0049F49A 从这里返回程序领空,点右键转存中跟随。

0012FF88   FFFFFFFF  |hProcess = FFFFFFFF
0012FF8C   00000007  |InfoClass = 7
0012FF90   0012FF9C  |Buffer = 0012FF9C
0012FF94   00000004  |Bufsize = 4
0012FF98   00000000  \pReqsize = NULL

0049F49C  0B C0 75 0F 58 0B C0 74 0D 6A 00 FF 95 F9 2E 40   纔 X 纓.j.

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| qqc 发表于 2011-3-6 22:54
[ 本帖最后由 qqc 于 2011-3-6 23:08 编辑 ]

0049F49C  0B C0 75 0F 58 0B C0 74 0D 6A 00 FF 95 F9 2E 40                                                                                     0049F4AC  00 EB 03 83 C4 04 5E F7 85 3B 2D 40 00 01 00 00                                                                            0049F4BC  00 74 35 56 8D B5 06 30 40
0049549C  0B下内存访问断点,F9回家

0049F49C    0BC0            OR EAX,EAX  到这里,清除内存断点。
0049F49E    75 0F           JNZ SHORT KMV2-Yoc.0049F4AF  这里不跳转,往下直接退出。方法很多,修改Z标志最快
0049F4A0    58              POP EAX
0049F4A1    0BC0            OR EAX,EAX
0049F4A3    74 0D           JE SHORT KMV2-Yoc.0049F4B2
0049F4A5    6A 00           PUSH 0
0049F4A7    FF95 F92E4000   CALL DWORD PTR SS:[EBP+402EF9]  退出代码。
0049F4AD    EB 03           JMP SHORT KMV2-Yoc.0049F4B2
0049F4AF    83C4 04         ADD ESP,4   必须跳到这里。
0049F4B2    5E              POP ESI
0049F4B3    F785 3B2D4000 0>TEST DWORD PTR SS:[EBP+402D3B],1
0049F4BD    74 35           JE SHORT KMV2-Yoc.0049F4F4
0049F4BF    56              PUSH ESI
0049F4C0    8DB5 06304000   LEA ESI,DWORD PTR SS:[EBP+403006]
0049F4C6    EB 26           JMP SHORT KMV2-Yoc.0049F4EE
...............................................................................

Btw: 到这里第一个仙剑壳还没有完,后面不管它有多少壳,搞什么飞机,你在转存401000处下内存访问断点监视吧。

在转存401000下内存访问断点。

0EF8137F    6285 0E0B0000   BOUND EAX,QWORD PTR SS:[EBP+B0E]  这里估计到了skvp
0EF81385    EB 02           JMP SHORT 0EF81389
0EF81387    0FE88B D1EB02CD PSUBSB MM1,QWORD PTR DS:[EBX+CD02EBD1]
0EF8138E    208B C2EB02CD   AND BYTE PTR DS:[EBX+CD02EBC2],CL
0EF81394    208B 8A4F0800   AND BYTE PTR DS:[EBX+84F8A],CL
0EF8139A    007C03 EB       ADD BYTE PTR DS:[EBX+EAX-15],BH
0EF8139E    0369 74         ADD EBP,DWORD PTR DS:[ECX+74]
0EF813A1    FB              STI
0EF813A2    8B89 74010000   MOV ECX,DWORD PTR DS:[ECX+174]
0EF813A8    E8 01000000     CALL 0EF813AE
0EF813AD    8B83 C404BA61   MOV EAX,DWORD PTR DS:[EBX+61BA04C4]
0EF813B3    1100            ADC DWORD PTR DS:[EAX],EAX
0EF813B5    00E8            ADD AL,CH
0EF813B7    0200            ADD AL,BYTE PTR DS:[EAX]
0EF813B9    0000            ADD BYTE PTR DS:[EAX],AL

0EFAB6B1    8A06            MOV AL,BYTE PTR DS:[ESI]
0EFAB6B3    46              INC ESI
0EFAB6B4    47              INC EDI
0EFAB6B5    8843 0F         MOV BYTE PTR DS:[EBX+F],AL
0EFAB6B8    8A46 FF         MOV AL,BYTE PTR DS:[ESI-1]
0EFAB6BB    55              PUSH EBP
0EFAB6BC    E8 00000000     CALL 0EFAB6C1
0EFAB6C1    5D              POP EBP
0EFAB6C2    81ED 0D470000   SUB EBP,470D
0EFAB6C8    8A8D 50030000   MOV CL,BYTE PTR SS:[EBP+350]
0EFAB6CE    5D              POP EBP
0EFAB6CF    32C1            XOR AL,CL
0EFAB6D1    8847 FF         MOV BYTE PTR DS:[EDI-1],AL
0EFAB6D4    8BC5            MOV EAX,EBP

7FF7F25E    66:3103         XOR WORD PTR DS:[EBX],AX   这里到幻影壳,注意不可久留。取消内存断点,向下找jmp eax略过它。
7FF7F261    9C              PUSHFD
7FF7F262    6A 10           PUSH 10
7FF7F264    73 0B           JNB SHORT 7FF7F271
7FF7F266    EB 02           JMP SHORT 7FF7F26A
7FF7F268    C151 E8 06      RCL DWORD PTR DS:[ECX-18],6
7FF7F26C    0000            ADD BYTE PTR DS:[EAX],AL
7FF7F26E    00C4            ADD AH,AL
7FF7F270    1173 F7         ADC DWORD PTR DS:[EBX-9],ESI
7FF7F273    5B              POP EBX
7FF7F274    CD 83           INT 83
7FF7F276    C404EB          LES EAX,FWORD PTR DS:[EBX+EBP*8]         ; 修正的段位寄存器
7FF7F279    0299 EBFF0C24   ADD BL,BYTE PTR DS:[ECX+240CFFEB]
  
向下找JMP EAX

7FF8ABC6  - FFE0            JMP EAX      F4直接到这里,跳出幻影壳到Acprotect
7FF8ABC8    72 03           JB SHORT 7FF8ABCD
7FF8ABCA    73 01           JNB SHORT 7FF8ABCD
7FF8ABCC    75 74           JNZ SHORT 7FF8AC42
7FF8ABCE    0375 01         ADD ESI,DWORD PTR SS:[EBP+1]
7FF8ABD1    75 74           JNZ SHORT 7FF8AC47
7FF8ABD3    0375 01         ADD ESI,DWORD PTR SS:[EBP+1]
7FF8ABD6  ^ 75 8F           JNZ SHORT 7FF8AB67
7FF8ABD8    8505 CE420074   TEST DWORD PTR DS:[740042CE],EAX
7FF8ABDE    0375 01         ADD ESI,DWORD PTR SS:[EBP+1]
7FF8ABE1    75 FF           JNZ SHORT 7FF8ABE2
7FF8ABE3    B5 01           MOV CH,1

00444000    60              PUSHAD  最后一个壳Acprotect
00444001    4B              DEC EBX
00444002    85DD            TEST EBP,EBX
00444004    EB 01           JMP SHORT 00444007
00444006  ^ 73 85           JNB SHORT 00443F8D
00444008    F3:             PREFIX REP:                              ; 多余的前缀
00444009    EB 01           JMP SHORT 0044400C
0044400B  ^ 78 87           JS SHORT 00443F94
0044400D    DEE8            FSUBP ST,ST
0044400F    0100            ADD DWORD PTR DS:[EAX],EAX
00444011    0000            ADD BYTE PTR DS:[EAX],AL
00444013    7A 83           JPE SHORT 00443F98
00444015    04 24           ADD AL,24
00444017    06              PUSH ES

下当前段模拟跟踪  tc eip<444000

.........................................................................

几分钟到达临时oep

00401F00    68 68214000     PUSH 402168    平时这里就应该是Oep,这个程序是VB编程,Oep被做了手脚.这里是Oep的第一句代码,记住补上替换的代码.
00401F05    68 95124000     PUSH 401295  放入Oep下一句地址
00401F0A    E8 00000000     CALL 00401F0F
00401F0F    C3              RETN  这里将返回Oep的下一句.
00401F10    0000            ADD BYTE PTR DS:[EAX],AL
00401F12    0000            ADD BYTE PTR DS:[EAX],AL
00401F14    0000            ADD BYTE PTR DS:[EAX],AL
00401F16    0000            ADD BYTE PTR DS:[EAX],AL
00401F18    0000            ADD BYTE PTR DS:[EAX],AL
00401F1A    0000            ADD BYTE PTR DS:[EAX],AL
00401F1C    0000            ADD BYTE PTR DS:[EAX],AL
00401F1E    0000            ADD BYTE PTR DS:[EAX],AL

00401295    E8 EEFFFFFF     CALL 00401288  返回到Oep的第二句.; JMP to MSVBVM60.ThunRTMain
0040129A    0000            ADD BYTE PTR DS:[EAX],AL
0040129C    0000            ADD BYTE PTR DS:[EAX],AL
0040129E    0000            ADD BYTE PTR DS:[EAX],AL
004012A0    3000            XOR BYTE PTR DS:[EAX],AL
004012A2    0000            ADD BYTE PTR DS:[EAX],AL
004012A4    3800            CMP BYTE PTR DS:[EAX],AL
004012A6    0000            ADD BYTE PTR DS:[EAX],AL
004012A8    0000            ADD BYTE PTR DS:[EAX],AL
004012AA    0000            ADD BYTE PTR DS:[EAX],AL
004012AC    E6 49           OUT 49,AL                                ; I/O 命令,A
004012AE    70 77           JO SHORT 00401327

00401276  - FF25 60104000   JMP DWORD PTR DS:[401060]                ; MSVBVM60.EVENT_SINK_QueryInterface
0040127C  - FF25 48104000   JMP DWORD PTR DS:[401048]                ; MSVBVM60.EVENT_SINK_AddRef
00401282  - FF25 58104000   JMP DWORD PTR DS:[401058]                ; MSVBVM60.EVENT_SINK_Release
00401288  - FF25 8C104000   JMP DWORD PTR DS:[40108C]                ; MSVBVM60.ThunRTMain
0040128E    0000            ADD BYTE PTR DS:[EAX],AL
00401290    0000            ADD BYTE PTR DS:[EAX],AL    这里是真正的oep
00401292    0000            ADD BYTE PTR DS:[EAX],AL
00401294    00E8            ADD AL,CH
00401296    EE              OUT DX,AL                                ; I/O 命令,A
00401297    FFFF            ???                                      ; 未知命令
00401299    FF00            INC DWORD PTR DS:[EAX]
0040129B    0000            ADD BYTE PTR DS:[EAX],AL
0040129D    0000            ADD BYTE PTR DS:[EAX],AL
0040129F    0030            ADD BYTE PTR DS:[EAX],DH
004012A1    0000            ADD BYTE PTR DS:[EAX],AL
004012A3    0038            ADD BYTE PTR DS:[EAX],BH

还原代码吧。

00401290 >  68 68214000     PUSH VB60.00402168          修复好的,这里看出程序是VB编的,用插件脱壳吧.
00401295    E8 EEFFFFFF     CALL <JMP.&MSVBVM60.#100>
0040129A    0000            ADD BYTE PTR DS:[EAX],AL
0040129C    0000            ADD BYTE PTR DS:[EAX],AL
0040129E    0000            ADD BYTE PTR DS:[EAX],AL
004012A0    3000            XOR BYTE PTR DS:[EAX],AL
004012A2    0000            ADD BYTE PTR DS:[EAX],AL
004012A4    3800            CMP BYTE PTR DS:[EAX],AL
004012A6    0000            ADD BYTE PTR DS:[EAX],AL

关闭OD,打开脱壳程序,Imprec1.42填入1290,直接修复。

文件减肥

因为区段名被删除了,不是很好减肥。留下Imprec新建的区段mackt,Virtual offset是0001000和00043000的三个有用区段,其余的全部是垃圾区段,全部删除,Loadpe重建Pe

597k to 253k

正常运行。

破解很容易,下断点

bp rtcMsgBox

中断,Ctrl+F9返回程序点确定.

返回程序领空,向上看哪里可以跳过这个提示,就不多说了。
525426926 发表于 2011-3-6 22:55
六人行 发表于 2011-3-6 23:30
好厉害,只第一层就搞不定了,后面还有这么多,学习了
tzzcq 发表于 2011-3-7 07:02
强......................................
ok518 发表于 2011-3-7 08:14
貌似很麻烦,慢慢学习
376408384 发表于 2012-10-22 08:31
这么多壳...还是被干掉
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 16:47

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表