首页
社区
课程
招聘
在试着脱一个HASP狗壳,遇到问题 (已搞定)
发表于: 2005-10-11 19:43 9596

在试着脱一个HASP狗壳,遇到问题 (已搞定)

2005-10-11 19:43
9596
(!!!!!!!结论是不能过于相信PEID等自动寻找的OEP!!!!!!!)
用PEID找到一个OEP,用PEID脱壳时,IAT中总是有两个函数没有修复好,然后在所有的调用地址上加了断点,进入 license.007B59A9中寻找

查找模块之间的调用                                 
地址      反汇编                   目标            
00401FC8  call license.005C4066    license.007B59A9
00401FDF  call license.005C4066    license.007B59A9
00401FF6  call license.005C4066    license.007B59A9
0040200D  call license.005C4066    license.007B59A9
00402024  call license.005C4066    license.007B59A9

进入后发现不是直接调用某个外部DLL的函数,而是如下
007B59A9         FFF5              push ebp
007B59AB         C1E8 40           shr eax,40
007B59AE         8BF6              mov esi,esi
007B59B0         8BEC              mov ebp,esp
007B59B2         EB FF             jmp short license.007B59B3
007B59B4         F3:66:            prefix rep:
007B59B6         93                xchg eax,ebx
007B59B7         66:8BD2           mov dx,dx
007B59BA         66:93             xchg ax,bx
007B59BC         FFF6              push esi
007B59BE         FFF7              push edi
007B59C0         66:83E9 00        sub cx,0
007B59C4         837D 08 00        cmp dword ptr ss:[ebp+8],0
007B59C8         0F85 240B0000     jnz license.007B64F2
007B59CE         66:C1E8 40        shr ax,40
007B59D2         C0E0 20           shl al,20
007B59D5         66:C1E0 20        shl ax,20
007B59D9         74 04             je short license.007B59DF
007B59DB         1D E61B8466       sbb eax,66841BE6
007B59E0         C1E3 20           shl ebx,20
007B59E3         8B45 0C           mov eax,dword ptr ss:[ebp+C]
007B59E6         8BC9              mov ecx,ecx
007B59E8         8B0D 92BD7B00     mov ecx,dword ptr ds:[7BBD92]       ; license.0066654F
007B59EE         3908              cmp dword ptr ds:[eax],ecx
007B59F0         0F84 7E160000     je license.007B7074
007B59F6         8AE4              mov ah,ah
007B59F8         75 04             jnz short license.007B59FE
007B59FA         0A60 66           or ah,byte ptr ds:[eax+66]
007B59FD         E5 8A             in eax,8A
007B59FF         FF8B ED0F87EA     dec dword ptr ds:[ebx+EA870FED]
007B5A05         0A00              or al,byte ptr ds:[eax]
007B5A07         0076 04           add byte ptr ds:[esi+4],dh
007B5A0A         97                xchg eax,edi
007B5A0B         08AD 2E0F86DE     or byte ptr ss:[ebp+DE860F2E],ch
007B5A11         0A00              or al,byte ptr ds:[eax]
007B5A13         0025 F78B45FC     add byte ptr ds:[FC458BF7],ah
007B5A19         0F88 3D140000     js license.007B6E5C
007B5A1F         79 03             jns short license.007B5A24
007B5A21         7A A7             jpe short license.007B59CA
007B5A23         90                nop
007B5A24         0F89 32140000     jns license.007B6E5C
007B5A2A         D8A3 F50AFF39     fsub dword ptr ds:[ebx+39FF0AF5]
007B5A30         05 74BC7B00       add eax,license.007BBC74
007B5A35         0F87 28280000     ja license.007B8263
007B5A3B         76 04             jbe short license.007B5A41
007B5A3D         0FA2              cpuid
007B5A3F         90                nop
007B5A40         C3                retn

请教各位大侠,这是什么问题?
菜鸟一只.谢谢

[课程]FART 脱壳王!加量不加价!FART作者讲授!

收藏
免费 0
支持
分享
最新回复 (15)
雪    币: 439
活跃值: (106)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
昨天刚脱了一个变态的HASP狗壳.晕呀,

你这样脱成功的机会真的很小哦.

试一下原来的IAT哦.
2005-10-12 00:35
0
雪    币: 84
活跃值: (660)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
你这显然是带狗脱壳,我记得hasp狗带狗脱壳非常简单。最简单的方法使用peid的脱壳插件自动脱壳即可。如果不行,用ImportRec1.6。象你这种情况,你在401FC8设硬件写入断点,即hw 401fc8,跟踪看看壳是如何加密IAT表的。我记得应该第一次在该地址写入的是真正的api,第二次写入是做了加密, 如果第一次写入值的就是7B59A0,那基本上这个应该是垃圾指针,在ImportRec中剪切该指针即可。其他地址的修复是一样道理的。
2005-10-12 07:35
0
雪    币: 207
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
非常感谢两位,用PEID 只能探测到OEP,但是在自动脱的过程中,会停滞不前,当把被保护程序关掉时,会出现 “Debugee exited...”字样,手动脱,有两个指针用ImportRec也修复不了,剪切掉之后也不能运行,我在学习一下IAT加密的东东,或许会进一点步。
再次感谢!!
2005-10-12 07:56
0
雪    币: 207
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
难搞啊,很多东西需要恶补, 我在硬件写入断点后,即hw 401fc8,发现该地址从头至尾只被改变过一次, 但在 OD中搜索出来的模块间调用却有很多地方在调用license.007B59A9 这个CALL, 有没大侠指点一些关于 花指令与IAT加密 的有关文章, 因为这个软件 很多地方是
005F5F3A                   82A1 AA7CD505 0E  and byte ptr ds:[ecx+5D57CAA]>
005F5F41                   B0 EC             mov al,0EC
005F5F43                   6A FF             push -1
005F5F45                   68 C813AC00       push 0AC13C8
005F5F4A                   68 CCD55B00       push license.005BD5CC
005F5F4F                   64:A1 00000000    mov eax,dword ptr fs:[0]
005F5F55                   50                push eax
005F5F56                   64:8925 00000000  mov dword ptr fs:[0],esp

这样的,当运行到那个地方时,又会一点点的变,我想应该是传说中的花指令吧. 苦苦苦,追追追
2005-10-12 17:37
0
雪    币: 84
活跃值: (660)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
发给我,我无偿帮你脱壳!orchid88_1217@yahoo.com.cn
2005-10-12 19:59
0
雪    币: 200
活跃值: (13)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
我楼上的这位高人,我有没有这种运气啊?也是HASP的狗,不过也有同个程序被破解后又改成RC-DL狗的,能不能也帮我脱一下呢?期待中。。。
2005-10-12 21:49
0
雪    币: 84
活跃值: (660)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
彩虹狗RC-DL的壳无狗都可以轻易脱。我可以帮你脱!
2005-10-13 07:47
0
雪    币: 207
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
老大,这个不带狗脱可能不行的,非要带狗脱才可以,我再练习一下,实在不行,就把安装文件发给你,谢谢。
2005-10-13 08:13
0
雪    币: 207
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
软件又升级了一个版本,原来的版本用PEID探出来的OEP,导出后用两个函数修复不了,现在是4.96的有几十个,查了一晚上的国外网站,讲模拟的多,讲破解的少, 老版本中下硬件访问断点,有找到循环解码的地方,但解码出来就是下面这个样子,不知道为什么,再往后跟,陷入程序自身无穷无尽的循环中,很难走到PEID探出来的OEP处,即使下了断点也不行.

005C4060         - FF25 28446A00     jmp dword ptr ds:[6A4428]       ; kernel32.GetModuleHandleA
005C4066         - FF25 B8446A00     jmp dword ptr ds:[6A44B8]       ; license.007B59A9
005C406C         - FF25 B4446A00     jmp dword ptr ds:[6A44B4]       ; kernel32.LoadLibraryA
005C4072         - FF25 FC426A00     jmp dword ptr ds:[6A42FC]       ; ntdll.RtlUnwind
005C4078         - FF25 5C466A00     jmp dword ptr ds:[6A465C]       ; USER32.ReuseDDElParam
005C407E         - FF25 58466A00     jmp dword ptr ds:[6A4658]       ; USER32.UnpackDDElParam
005C4084         - FF25 8C496A00     jmp dword ptr ds:[6A498C]       ; WINSPOOL.ClosePrinter
005C408A         - FF25 88496A00     jmp dword ptr ds:[6A4988]       ; WINSPOOL.DocumentPropertiesA
005C4090         - FF25 84496A00     jmp dword ptr ds:[6A4984]       ; WINSPOOL.OpenPrinterA
005C4096         - FF25 80496A00     jmp dword ptr ds:[6A4980]       ; WINSPOOL.GetJobA
005C409C         - FF25 244A6A00     jmp dword ptr ds:[6A4A24]       ; oledlg.OleUIBusyA
005C40A2           CC                int3
2005-10-14 22:34
0
雪    币: 207
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
还有一个问题想说一下,看了很多其他老大的破解文章,就是没清楚怎样才是真正的OEP, 下面是循环解码的地方,但是像上面调用函数的地方都是一段段的:confused

007C07AB           FF45 EC           inc dword ptr ss:[ebp-14]
007C07AE           C0EA 40           shr dl,40
007C07B1           8AE4              mov ah,ah
007C07B3           8B45 EC           mov eax,dword ptr ss:[ebp-14]
007C07B6           3945 10           cmp dword ptr ss:[ebp+10],eax
007C07B9         ^ 0F86 BDE9FFFF     jbe license.007BF17C                ;  
007C07BF           8BED              mov ebp,ebp
007C07C1           66:C1E0 20        shl ax,20
007C07C5           77 03             ja short license.007C07CA
007C07C7           DDD9              fstp st(1)
007C07C9           2AC0              sub al,al
007C07CB           EB 40             jmp short license.007C080D
007C07CD           66:87EF           xchg di,bp
007C07D0           66:87FD           xchg bp,di
007C07D3           8B45 EC           mov eax,dword ptr ss:[ebp-14]
007C07D6           8B4D 0C           mov ecx,dword ptr ss:[ebp+C]
007C07D9           8A0401            mov al,byte ptr ds:[ecx+eax]
007C07DC           8B4D EC           mov ecx,dword ptr ss:[ebp-14]
007C07DF           86E9              xchg cl,ch
007C07E1           96                xchg eax,esi
007C07E2           96                xchg eax,esi
007C07E3           86CD              xchg ch,cl
007C07E5           8B55 08           mov edx,dword ptr ss:[ebp+8]
007C07E8           88040A            mov byte ptr ds:[edx+ecx],al         在这里更改  
007C07EB         ^ EB BE             jmp short license.007C07AB          ;  :
2005-10-14 22:42
0
雪    币: 1866
活跃值: (95)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
12
看样子是碰到新版本的壳了!新版本的壳比以前的版本增强了很多!主要是导入表加密做的不错!有点耐心会搞定的!
2005-10-15 01:02
0
雪    币: 207
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
谢谢大老,大老怎么也还是初级会员哪,是HASP4.96的版本,据说作了个对照表,专门HOOK函数的(楞是没弄明白这个单词,),这是在EXETOOL上面的高人说的,以前只有两个函数KERNEL32中的GETPROCEADDRESS EXITPROCESS,要手工调整,现在据说有N多
2005-10-15 08:04
0
雪    币: 84
活跃值: (660)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
"以前只有两个函数KERNEL32中的GETPROCEADDRESS EXITPROCESS,要手工调整"那是指hardlock的壳,hasp显然不止这两个函数。
2005-10-15 08:42
0
雪    币: 439
活跃值: (106)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
有狗是可以轻松搞定的,至少我知道的人很多

也不用修复那么累了,到OEP更简单了吧,有狗的情况下:)
2005-10-16 06:02
0
雪    币: 207
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
昨晚终于把壳脱掉了,不能用迷信PEID的OEP,有些IAT地方要手工去跟踪处理,然后用LORDPE脱出来可以用,用OD脱的好像还有点问题。

HASP,呵呵
2005-10-22 11:29
0
游客
登录 | 注册 方可回帖
返回
//