首页
社区
课程
招聘
北斗星数据压缩 2.3快速脱壳方法
发表于: 2005-6-3 17:42 5365

北斗星数据压缩 2.3快速脱壳方法

2005-6-3 17:42
5365
这篇文章没有什么技术含量,希望高手见了不要见笑。

在看学上看到了一款国产的加壳软件,看样子不错,刚好最近在学习软件脱壳,就下了一个来试试。

环境:WIN-XPsp Ollydbg V1.10,用北斗星2.30压缩的98记事本

程序载入之后可以看到如下信息

040101B t> $- E9 5A3E0100 jmp three.00414E7A
00401020       B4          db B4
00401021       09          db 09
00401022       BA          db BA
00401023       0B          db 0B
00401024       01          db 01
00401025       CD          db CD
00401026       21          db 21                              ;  CHAR '!'
00401027       B4          db B4
00401028       4C          db 4C                              ;  CHAR 'L'
00401029       CD          db CD
0040102A    .  21 70 61 63>ascii "!packed by nspac"
0040103A    .  6B 24 40 00>ascii "k$@",0
0040103E       00          db 00
0040103F       00          db 00
00401040    .  50 45 00    ascii "PE",0
00401043       00          db 00
00401044       4C          db 4C                              ;  CHAR 'L'
00401045       01          db 01
00401046       02          db 02
00401047       00          db 00
00401048       D6          db D6
00401049    .  57 5A 35 00>ascii "WZ5",0
0040104D       00          db 00
0040104E       00          db 00

在跟壳几次之后发现最终跳往OPE的代码如下:

004150C5     83F9 00       cmp ecx,0
004150C8     74 28         je short three.004150F2
004150CA     43            inc ebx
004150CB     8DB5 9AFDFFFF lea esi,dword ptr ss:[ebp-266]
004150D1     8B16          mov edx,dword ptr ds:[esi]
004150D3     56            push esi
004150D4     51            push ecx
004150D5     53            push ebx
004150D6     52            push edx
004150D7     56            push esi
004150D8     FF33          push dword ptr ds:[ebx]
004150DA     FF73 04       push dword ptr ds:[ebx+4]
004150DD     8B43 08       mov eax,dword ptr ds:[ebx+8]
004150E0     03C2          add eax,edx
004150E2     50            push eax
004150E3     FF95 3EFEFFFF call dword ptr ss:[ebp-1C2]        ; kernel32.VirtualProtect
004150E9     5A            pop edx
004150EA     5B            pop ebx
004150EB     59            pop ecx
004150EC     5E            pop esi
004150ED     83C3 0C       add ebx,0C
004150F0   ^ E2 E1         loopd short three.004150D3
004150F2     61            popad
004150F3     9D            popfd
004150F4   - E9 D3BFFEFF   jmp three.004010CC

快速脱壳方法如下:用Ollydbg V1.10载入后下断bp VirtualProtect
之后按56次F9,(程序离运行最后一次F9)
F8单步就可看到最终跳往OPE的代码,在004150F4   - E9 D3BFFEFF   jmp three.004010CC(地址根据实际情况而定)F9之后程序被断下,F8单步,直达程序入口点。
之后用Ollydbg插件就脱掉运行的程序即可完成脱壳。
在这里问一个问题,为什么我的程序脱了之后不用修复OPE就可以直接运行,是不是Ollydbg的插件已经将OPE给修复了?

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (9)
雪    币: 108
活跃值: (42)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
====之后按56次F9=== 还是麻烦的说

看下面

OD载入,然后
bp GetVersion,F9一次,F2一次,alt+F9一次,lordPE脱壳
OEP:  ,imprec自动搜索,修复好就可以运行了
2005-6-3 17:59
0
雪    币: 106
活跃值: (271)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
3
技术不到家学习~~~~
2005-6-3 18:03
0
雪    币: 312
活跃值: (860)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4

2005-6-3 19:51
0
雪    币: 224
活跃值: (147)
能力值: ( LV9,RANK:970 )
在线值:
发帖
回帖
粉丝
5
最初由 闪电狼 发布
====之后按56次F9=== 还是麻烦的说

看下面


........


56次还是多了点~万一一不留神多数,少数一次就又得重新来了~

还是。。狼的这个方法漂亮啊~
2005-6-3 20:21
0
雪    币: 108
活跃值: (42)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
最初由 wynney 发布


56次还是多了点~万一一不留神多数,少数一次就又得重新来了~

还是。。狼的这个方法漂亮啊~


不过我的是脱主程序的方法

至于其他被加壳程序

用esp定律就到OEP了
2005-6-3 21:05
0
雪    币: 106
活跃值: (271)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
7
闪电狼,我按照你的方法把主程序进行脱壳,之后无法运行提示maxzlib.dll没有启动,程序无法运行。

2005-6-4 10:49
0
雪    币: 108
活跃值: (42)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
★★★★★★nSpack2.3主程序简单脱壳.★★★★★★

OD载入忽略所有异常
bp GetVersion
F9

7C8114AB >  64:A1 18000000   mov eax,dword ptr fs:[18]
//断在这里. 看堆栈
7C8114B1    8B48 30          mov ecx,dword ptr ds:[eax+30]
7C8114B4    8B81 B0000000    mov eax,dword ptr ds:[ecx+B0]

堆栈:
0012FF48   0044B994  nSpack_o.0044B994  
//在这里就可以返回程序领空了.
0012FF4C   7C930738  ntdll.7C930738
0012FF50   FFFFFFFF
0012FF54   7FFDE000
0012FF58   00496769  nSpack_o.00496769

F2取消断点. ALT+F9返回  

0044B968  /> /55             push ebp
//★★★OEP★★★
0044B969  |. |8BEC           mov ebp,esp
0044B96B  |. |6A FF          push -1
0044B96D  |. |68 18FE4600    push nSpack_o.0046FE18
0044B972  |. |68 E0A24400    push nSpack_o.0044A2E0               ;  SE 句柄安装
0044B977  |. |64:A1 00000000 mov eax,dword ptr fs:[0]
0044B97D  |. |50             push eax
0044B97E  |. |64:8925 000000>mov dword ptr fs:[0],esp
0044B985  |. |83EC 58        sub esp,58
0044B988  |. |53             push ebx
0044B989  |. |56             push esi
0044B98A  |. |57             push edi
0044B98B  |. |8965 E8        mov [local.6],esp
0044B98E  |. |FF15 70A24600  call dword ptr ds:[46A270]           ;  kernel32.GetVersion
0044B994  |. |33D2           xor edx,edx
//★返回到这里......

运行loadpe  完全Dump程序..打开RecImport选取软件,填入OEP,自动IAT,获取输入表
修复....

然后根据FLY的方法去掉自检验 即可..

★★★★★★★nSpack2.3加壳普通程序脱壳方法★★★★★★★★

OD加入 忽略所有异常选项..

0040101B > $- E9 3ECD0000    jmp [PYG]Cra.0040DD5E
//停在这里.
00401020      B4             db B4
00401021      09             db 09

F8  3次.

0040DD5E    9C               pushfd
0040DD5F    60               pushad
0040DD60    E8 00000000      call [PYG]Cra.0040DD65
//停在这里. 这是esp = 0012FFA0
0040DD65    5D               pop ebp
0040DD66    B8 07000000      mov eax,7

在命令行 hr 0012FFA0
F9
断下
0040DFD7    9D               popfd
//断在这里
0040DFD8  - E9 9F32FFFF      jmp [PYG]Cra.0040127C

取消硬件断点
F8 2次

00401274   .- FF25 A8104000  jmp dword ptr ds:[4010A8]            ;  MSVBVM60.ThunRTMain
0040127A      00             db 00
0040127B      00             db 00
0040127C      68             db 68                                ;  CHAR 'h'
//到这里★OEP★
0040127D      D0524000       dd [PYG]Cra.004052D0
00401281      E8             db E8
00401282      EE             db EE
00401283      FF             db FF

运行loadpe  完全Dump程序..打开RecImport选取软件,填入OEP,自动IAT,获取输入表
修复....

可以运行了.
2005-6-4 11:37
0
雪    币: 106
活跃值: (271)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
9
谢谢指点,我昨天脱的时候也是判断可能有自效验,准备今天来处理的,谢谢你告诉了我快捷的方法。
2005-6-4 11:51
0
雪    币: 255
活跃值: (40)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
10
蛋蛋的破解方法

去自校验:
脱壳后查找16进制:
8B C2 5F 5E 5B 0F 94 C0 59 C3 5F 5E 33 C0 5B 59
替换:
8B C2 5F 5E 5B 0F 94 C0 59 C3 5F 5E B0 01 5B 59

注册:
脱壳后查找16进制:
E8 9B 2E 01 00 85 C0 0F 84 6A 01 00 00 8B 5C 24
替换:
E8 9B 2E 01 00 85 C0 0F 84 D9 03 00 00 8B 5C 24

蛋蛋破解无壳去垃圾版:
附件:nSpack203.rar
2005-6-4 11:58
0
游客
登录 | 注册 方可回帖
返回
//