首页
社区
课程
招聘
[求助]这个PECompact 2.5 Retail很奇怪
2011-10-13 13:14 6197

[求助]这个PECompact 2.5 Retail很奇怪

2011-10-13 13:14
6197
PEiD0.95查是PECompact 2.5 Retail -> Jeremy Collake
OD载入后停在这里:
00401000 > $  B8 441C0E01   mov     eax, 010E1C44
00401005   .  50            push    eax
00401006   .  64:FF35 00000>push    dword ptr fs:[0]
0040100D   .  64:8925 00000>mov     dword ptr fs:[0], esp
00401014   .  33C0          xor     eax, eax
00401016   .  8908          mov     dword ptr [eax], ecx             ;  这里F7
00401018   .  50            push    eax
00401019   .  45            inc     ebp
0040101A   .  43            inc     ebx


7C92E480  |.  8B1C24        mov     ebx, dword ptr [esp] ;停在这里F8往下
7C92E483  |.  51            push    ecx
7C92E484  |.  53            push    ebx
7C92E485  |.  E8 9AC30100   call    7C94A824
7C92E48A  |.  0AC0          or      al, al
7C92E48C  |.  74 0C         je      short 7C92E49A
7C92E48E  |.  5B            pop     ebx
7C92E48F  |.  59            pop     ecx
7C92E490  |.  6A 00         push    0
7C92E492  |.  51            push    ecx
7C92E493  |.  E8 C6EBFFFF   call    ZwContinue                       ;  这里F7
7C92E498  |.  EB 0B         jmp     short 7C92E4A5


7C92D05E >/$  B8 20000000   mov     eax, 20 ;来到这里F8往下
7C92D063  |.  BA 0003FE7F   mov     edx, 7FFE0300
7C92D068  |.  FF12          call    dword ptr [edx]                  ;  这里F7进去
7C92D06A  \.  C2 0800       retn    8


7C92E510 >/$  8BD4          mov     edx, esp ;来到这里
7C92E512  |.  0F34          sysenter                  ;  到这一步跳走
7C92E514 >\$  C3            retn


010E1C67    B8 C9090EF1     mov     eax, F10E09C9 ;跳到这里,一路F8往下
010E1C6C    64:8F05 0000000>pop     dword ptr fs:[0]
010E1C73    83C4 04         add     esp, 4
.......
010E1CF4    68 00800000     push    8000
010E1CF9    6A 00           push    0
010E1CFB    57              push    edi
010E1CFC    FF11            call    dword ptr [ecx]
010E1CFE    8BC6            mov     eax, esi
010E1D00    5A              pop     edx
010E1D01    5E              pop     esi
010E1D02    5F              pop     edi
010E1D03    59              pop     ecx
010E1D04    5B              pop     ebx
010E1D05    5D              pop     ebp
010E1D06    FFE0            jmp     eax                  ;  这里大跳转
010E1D08    ED              in      eax, dx
010E1D09    48              dec     eax
010E1D0A    5F              pop     edi


大跳转后来到这里,这里不像是OEP啊
005F48ED   ?  E8 96030000   call    005F4C88 
005F48F2   .^ E9 36FDFFFF   jmp     005F462D
005F48F7   ?  6A 0C         push    0C
005F48F9   ?  68 586BB600   push    00B66B58
005F48FE   .  E8 B9000000   call    005F49BC
005F4903   ?  8365 FC 00    and     dword ptr [ebp-4], 0
005F4907   ?  66:0F28C1     movaps  xmm0, xmm1
005F490B   ?  C745 E4 01000>mov     dword ptr [ebp-1C], 1
005F4912   .  EB 23         jmp     short 005F4937
005F4914   .  8B45 EC       mov     eax, dword ptr [ebp-14]
005F4917   ?  8B00          mov     eax, dword ptr [eax]
005F4919   ?  8B00          mov     eax, dword ptr [eax]
005F491B   ?  3D 050000C0   cmp     eax, C0000005
005F4920   .  74 0A         je      short 005F492C
005F4922   .  3D 1D0000C0   cmp     eax, C000001D
005F4927   ?  74 03         je      short 005F492C
005F4929   ?  33C0          xor     eax, eax
005F492B   ?  C3            retn


ImportREC修复后程序运行出错,请问该怎么办

[培训]《安卓高级研修班(网课)》月薪三万计划,掌 握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
点赞0
打赏
分享
最新回复 (5)
雪    币: 1632
活跃值: (13)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
达文西 2011-10-13 15:56
2
0
多层吧,不知道。
雪    币: 285
活跃值: (16)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
liuyq 2012-4-13 23:50
3
0
别看你一直F7,诂计你跳过了很多代码(异常)
雪    币: 622
活跃值: (294)
能力值: ( LV13,RANK:410 )
在线值:
发帖
回帖
粉丝
无聊的菜鸟 9 2012-4-14 00:52
4
0
1. jmp eax确实是跳转到OEP的。至于你说这个不像,这不是问题。VC++在某些情况下编译出来的程序就是这样的开头。
2.ImportREC的修复之后出错是你修复的问题,PECompat不仅仅是一个压缩壳,它对输入表还是有一些处理过程的。
3.有些PECompat保护的程序是用了SDK的,至于这么确定,最好是你先修复输入表,然后查找LoadLibrary和GetProcAddress两个函数的参考,然后看他们的参数字符串,会很容易分辨的。
雪    币: 238
活跃值: (55)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
sierra 1 2012-4-14 03:01
5
0
这个入口令我回想起了asprotect
雪    币: 285
活跃值: (16)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
liuyq 2012-4-16 21:24
6
0
哎,再回一遍吧,其实你们都应该看看其它贴子里有没有类似的问题。
这里主要是注意前一次异常的代码,其中有这么一句:
mov [eax+b8],edx
当然,可能eax 或者 edx会是其它寄存器,因为异常调用中,[esp+C]是指向线程上下文结构(CONTEXT) winnt.h中有定义,改变其 偏移地址为B8的成员变量(也就是eip成员),会影响到系统在调用到zwcontinue时返回的地址,而且该结构中还有dr0 - dr3成员,清0也可以消除硬件中断,好好地注意一下在调用zwcontinue前一个异常中的代码吧。
游客
登录 | 注册 方可回帖
返回