首页
社区
课程
招聘
[旧帖] [求助]脱asprotect壳遇到问题 0.00雪花
发表于: 2010-12-6 12:20 1130

[旧帖] [求助]脱asprotect壳遇到问题 0.00雪花

2010-12-6 12:20
1130
目标程序是 加密与解密(第三版) 13.9的asprotect壳
我按书上写的试试了,不行。就决定用最后一次异常法,但是遇到一些问题,还望大牛解释下。
会后一次异常停在
00BCFAA5    C700 EFCA5C85   mov dword ptr ds:[eax],855CCAEF
00BCFAAB    67:64:8F06 0000 pop dword ptr fs:[0]
00BCFAB1    83C4 04         add esp,4
00BCFAB4    83E8 AF         sub eax,-51
00BCFAB7    83C8 4B         or eax,4B
00BCFABA    58              pop eax

堆栈中显示如下

0012FF34   0012FF80   指针到下一个 SEH 记录
0012FF38   00BCFA6E   SE 句柄
0012FF3C   E850D8BF
0012FF40   175256BF

数据窗口跟随  0012FF38
数据窗口显示如下
00BCFA6E  01EBF256
00BCFA72  247403F0
00BCFA76  83DEC138
00BCFA7A  1024748B

00BCFA6E 行下硬件执行断点
按shift+f9运行
运行到
00BCFA6E    56              push esi
00BCFA6F    F2:             prefix repne:
00BCFA70    EB 01           jmp short 00BCFA73
00BCFA72    F0:037424 38    lock add esi,dword ptr ss:[esp+38]       ; 不允许锁定前缀
00BCFA77    C1DE 83         rcr esi,83
00BCFA7A    8B7424 10       mov esi,dword ptr ss:[esp+10]
删除硬件断点
按f7又到
00BCFA73    037424 38       add esi,dword ptr ss:[esp+38]
00BCFA77    C1DE 83         rcr esi,83
00BCFA7A    8B7424 10       mov esi,dword ptr ss:[esp+10]
00BCFA7E    8D76 52         lea esi,dword ptr ds:[esi+52]
00BCFA81    8346 66 06      add dword ptr ds:[esi+66],6
00BCFA85    8D7475 6F       lea esi,dword ptr ss:[ebp+esi*2+6F]
00BCFA89    83EE 6F         sub esi,6F
00BCFA8C    5E              pop esi
00BCFA8D    83C8 FF         or eax,FFFFFFFF
00BCFA90    40              inc eax
00BCFA91    C3              retn

按f8继续走,到
7C9232A8  |.  64:8B25 00000>mov esp,dword ptr fs:[0]
7C9232AF  |.  64:8F05 00000>pop dword ptr fs:[0]
7C9232B6  |.  8BE5          mov esp,ebp
7C9232B8  |.  5D            pop ebp
7C9232B9  \.  C2 1400       retn 14
按f8继续走,到
7C92327A  |.  5F            pop edi                                  ;  00BA0000
7C92327B  |.  5E            pop esi
7C92327C  |.  5B            pop ebx
7C92327D  \.  C2 1400       retn 14
按f8继续走,到
7C94AA0F   .  F605 FAE3997C>test byte ptr ds:[7C99E3FA],80
7C94AA16   .  8BF8          mov edi,eax
7C94AA18   .  0F85 0B570200 jnz ntdll.7C970129
7C94AA1E   >  395D 08       cmp dword ptr ss:[ebp+8],ebx
7C94AA21   .  0F84 10570200 je ntdll.7C970137
7C94AA27   >  8BC7          mov eax,edi
7C94AA29   .  33C9          xor ecx,ecx
7C94AA2B   .  2BC1          sub eax,ecx
7C94AA2D   .^ 0F85 E2F8FFFF jnz ntdll.7C94A315
7C94AA33   .  F646 04 01    test byte ptr ds:[esi+4],1
7C94AA37   .  0F85 44570200 jnz ntdll.7C970181
7C94AA3D   .  C645 FF 01    mov byte ptr ss:[ebp-1],1
7C94AA41   >  5F            pop edi
7C94AA42   >  5B            pop ebx
7C94AA43   >  8A45 FF       mov al,byte ptr ss:[ebp-1]
7C94AA46   .  5E            pop esi
7C94AA47   .  C9            leave
7C94AA48   .  C2 0800       retn 8

按f8继续走,到
7C92E48A  |.  0AC0          or al,al
7C92E48C  |.  74 0C         je short ntdll.7C92E49A
7C92E48E  |.  5B            pop ebx
7C92E48F  |.  59            pop ecx
7C92E490  |.  6A 00         push 0
7C92E492  |.  51            push ecx
7C92E493  |.  E8 C6EBFFFF   call ntdll.ZwContinue
7C92E498  |.  EB 0B         jmp short ntdll.7C92E4A5
7C92E49A  |>  5B            pop ebx
7C92E49B  |.  59            pop ecx

在7C92E493  |.  E8 C6EBFFFF   call ntdll.ZwContinue跟进
7C92D05E >/$  B8 20000000   mov eax,20
7C92D063  |.  BA 0003FE7F   mov edx,7FFE0300
7C92D068  |.  FF12          call dword ptr ds:[edx]
7C92D06A  \.  C2 0800       retn 8

在7C92D068  |.  FF12          call dword ptr ds:[edx]跟进
7C92E510 >/$  8BD4          mov edx,esp
7C92E512  |.  0F34          sysenter
7C92E514 >\$  C3            retn

到这后,我不论按f7还是f8,程序都运行了,不知道怎么回事。
那里错了?
本人刚学脱壳,一直不知道,遇到一个新壳怎么处理,脱这个壳,脱了好长时间都。。。。。
希望能指点下,看过一些教程,他们只讲在哪下断点,根本就不明白。。遇到新壳无从下手

[课程]Linux pwn 探索篇!

收藏
免费 1
支持
分享
最新回复 (3)
雪    币: 87
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
我也是菜鸟,碰到这样的强壳,往往束手无策,个人觉得是不是去弄个加壳程序,版本一样的,给记事本加壳,看看是否是加壳的时候设置不一样,造成的脱壳结果也不一样,这个是笨办法。不过希望能对你有帮助吧。大家一起加油
2010-12-6 12:35
0
雪    币: 46
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
問題應該是出在SYSENTER,他是一個內存程序加密,要脫殼是可以的,但是脫殼後,如果內存程序加密部份有的會反調試,od會開不起來,看起來好像脫殼了。但用od載入後運行會停在
7C92E510 >  8BD4            mov edx,esp
7C92E512    0F34            sysenter
7C92E514 >  C3              retn
但用od載入後運行會停在retn
因為od跟本讀不出SYSENTER到底做了什麼事 ,所以不好追。
如果脫殼後沒停在RETN這那就是沒有內存加密,若停在RETN這就是內存加密了。
我也試過了很多辦法在脫殼後要跳過這個內存加密,但都試不出來。
之前也發過文,但都沒有人回覆希望有大牛可以PO個教程跳過HOOK的部份要如何調試。
因為論壇上遇到PO這個問題的大部份都沒有解決,大牛大牛,解答一下吧。
2011-12-28 13:31
0
雪    币: 285
活跃值: (16)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
4
给你一份迟到的爱吧,其实,在此之前它应该调用了一个异常,你可以看前面一个异常断下来,其中有这么一句:
MOV [EAX + B8] , EDX
这里的EDX就是sysenter的返回地址,为什么,其实以前就有论文说明过,这里的eax是指向“线程上下文结构”,而[eax + b8]其实是eip成员变量,线程上下文结构有什么用,不用我在这里说了吧???
2012-4-11 14:35
0
游客
登录 | 注册 方可回帖
返回
//