首页
社区
课程
招聘
[求助]SetUnhandledExceptionFilter处理问题
发表于: 2014-10-19 20:42 4624

[求助]SetUnhandledExceptionFilter处理问题

2014-10-19 20:42
4624
菜鸟一个,最近才看到带SEH的CM,关于SetUnhandledExceptionFilter的处理。断点断下后一路F8找到了SetUnhandledExceptionFilter调用处,但是并不是在程序领空下调用的,地址是100A2161,没有办法修改,这种情况该怎么处理呢?还望大牛不吝赐教,在下不胜感激!

[培训]科锐逆向工程师培训第53期2025年7月8日开班!

上传的附件:
收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 6
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
大家简单的说下思路就好了,或者谈谈自己的看法,只是我现在一点头绪也没有。。
2014-10-20 18:16
0
雪    币: 47
活跃值: (86)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
大概试了一下,觉得是利用SEH,设置eip指针执行代码的。异常处理我整理了一下,代码如下,去掉了许多jmp
xchg ebp,ebp
xchg ebx,ebx
mov ebx,ebx
mov eax,dword ptr ss:[esp+0x4]
mov ecx,dword ptr ds:[eax]
cmp dword ptr ds:[ecx],0x80000003
jnz 00401364
push esi
mov esi,dword ptr ds:[eax+0x4]
mov edx,dword ptr ds:[esi+0xB8] // eip
cmp byte ptr ds:[edx],0xCC
jnz 004013CE
inc edx
xchg ebp,ebp
mov ebx,ebx
mov cl,byte ptr ds:[edx]
mov al,cl
shl al,0x6
shr cl,0x2
add al,cl
xor al,0xD
mov cl,al
shr cl,0x5
shl al,0x3
xchg ebp,ebp
xchg ebx,ebx
mov ebx,ebx
add cl,al
add cl,0x11
mov al,cl
shl al,0x5
shr cl,0x3
add al,cl
xor al,0x51
mov cl,al
shl cl,0x7
shr al,1
xchg ebp,ebp
xchg ebx,ebx
mov ebx,ebx
add cl,al
sub cl,0x6F
and ecx,0xFF
and ecx,0x80000007
add edx,ecx
xchg ebp,ebp
mov ebx,ebx
inc edx
or eax,0xFFFFFFFF
mov dword ptr ds:[esi+0xB8],edx //eip
pop esi
retn 0x4

注意倒数第三行的 mov dword ptr ds:[esi+0xB8],edx 这个是设置eip。
我的方法是在这一行,设置条件记录断点,把所有的执行过的eip地址都打印出来,挨个找,貌似每12条int 3指令后,有一条有效指令,只找了下面几条,后面就没耐心了。。。 咱们可以一起研究下
push 0x1
mov ebx,0x1D9E2
lea esi,dword ptr ds:[edi+0x64]
mov eax,dword ptr ds:[esi]
2014-10-31 00:33
0
雪    币: 47
活跃值: (86)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
哎~~~  条件记录断点的条件弄错了~~可以过滤出不为CC的eip地址~~~~
2014-10-31 01:11
0
雪    币: 47
活跃值: (86)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
流程跟了一下,算法貌似也挺简单的,明天再看算法
0040168D     6A 01                 push 0x1
0040168F     E8 30100000           call <jmp.&MFC42.#CWnd::UpdateData_6334>
004016CE     BB E2D90100           mov ebx,0x1D9E2
00401715     8D77 64               lea esi,dword ptr ds:[edi+0x64]
00401718     6A 00                 push 0x0
0040171A     8BCE                  mov ecx,esi
0040171C     E8 9D0F0000           call <jmp.&MFC42.#CString::GetBuffer_2915>
00401721     8945 F8               mov dword ptr ss:[ebp-0x8],eax              //获取用户名
0040175A     8B06                  mov eax,dword ptr ds:[esi]
0040175C     8B48 F8               mov ecx,dword ptr ds:[eax-0x8]              //获取用户名长度
0040175F     894D FC               mov dword ptr ss:[ebp-0x4],ecx
004017A1     8B36                  mov esi,dword ptr ds:[esi]
004017A3     68 0C414000           push 0040410C
004017A8     56                    push esi
004017A9     8B35 B4314000         mov esi,dword ptr ds:[<&MSVCRT._mbscmp>]   ; msvcrt._mbscmp
004017AF     FFD6                  call esi
004017B1     83C4 08               add esp,0x8
004017B4     85C0                  test eax,eax
004017B6     74 4C                 je short 00401804                           
004017F2     8B47 60               mov eax,dword ptr ds:[edi+0x60]
004017F5     68 0C414000           push 0040410C
004017FA     50                    push eax
004017FB     FFD6                  call esi
004017FD     83C4 08               add esp,0x8
00401800     85C0                  test eax,eax
00401802     75 17                 jnz short 0040181B
00401804     6A 00                 push 0x0
00401806     6A 00                 push 0x0
00401808     68 2C404000           push 0040402C                                                 ; ASCII "注册失败!"
0040180D     8BCF                  mov ecx,edi
0040180F     E8 A40E0000           call <jmp.&MFC42.#CWnd::MessageBoxA_4224>
00401814     5F                    pop edi
00401815     5E                    pop esi
00401816     5B                    pop ebx
00401817     8BE5                  mov esp,ebp
00401819     5D                    pop ebp
0040181A     C3                    retn

004018ED     8B45 FC               mov eax,dword ptr ss:[ebp-0x4]
004018F0     8B55 F8               mov edx,dword ptr ss:[ebp-0x8]
004018F3     83C9 FF               or ecx,0xFFFFFFFF
004018F6     8D7410 01             lea esi,dword ptr ds:[eax+edx+0x1]
004018FA     2BCA                  sub ecx,edx
004018FC     8BC6                  mov eax,esi

// 循环
00401947     0FBE50 FE             movsx edx,byte ptr ds:[eax-0x2]
0040194B     48                    dec eax
0040194C     03DA                  add ebx,edx
00401994     8D149B                lea edx,dword ptr ds:[ebx+ebx*4]
00401997     8D14D3                lea edx,dword ptr ds:[ebx+edx*8]
0040199A     8D1C52                lea ebx,dword ptr ds:[edx+edx*2]
004019E4     8818                  mov byte ptr ds:[eax],bl
00401A22     81F3 3A45AC14         xor ebx,0x14AC453A
00401A66     0018                  add byte ptr ds:[eax],bl
00401AA1     8D1401                lea edx,dword ptr ds:[ecx+eax]
00401AA4     85D2                  test edx,edx
00401AA6   ^ 0F8F 52FEFFFF         jg 00401947

// 循环
00401B42     8BC6                  mov eax,esi
00401B96     0FBE50 FE             movsx edx,byte ptr ds:[eax-0x2]
00401B9A     48                    dec eax
00401B9B     03DA                  add ebx,edx
00401BD6     8D149B                lea edx,dword ptr ds:[ebx+ebx*4]
00401BD9     8D14D3                lea edx,dword ptr ds:[ebx+edx*8]
00401BDC     8D1C52                lea ebx,dword ptr ds:[edx+edx*2]
00401C2F     8818                  mov byte ptr ds:[eax],bl
00401C6C     81F3 3A45AC14         xor ebx,0x14AC453A
00401CAE     0018                  add byte ptr ds:[eax],bl
00401CF8     8D1408                lea edx,dword ptr ds:[eax+ecx]
00401CFB     85D2                  test edx,edx
00401CFD   ^ 0F8F 41FEFFFF         jg 00401B96

// 循环
00401D92     8BC6                  mov eax,esi
00401DDC     0FBE50 FE             movsx edx,byte ptr ds:[eax-0x2]
00401DE0     48                    dec eax
00401DE1     03DA                  add ebx,edx
00401E27     8D149B                lea edx,dword ptr ds:[ebx+ebx*4]
00401E2A     8D14D3                lea edx,dword ptr ds:[ebx+edx*8]
00401E2D     8D1C52                lea ebx,dword ptr ds:[edx+edx*2]
00401E75     8818                  mov byte ptr ds:[eax],bl
00401ECD     81F3 3A45AC14         xor ebx,0x14AC453A
00401F0A     0018                  add byte ptr ds:[eax],bl
00401F4E     8D1408                lea edx,dword ptr ds:[eax+ecx]
00401F51     85D2                  test edx,edx
00401F53   ^ 0F8F 3BFEFFFF         jg 00401DDC

00401F9E     8BC3                  mov eax,ebx
00401FA0     33D2                  xor edx,edx
00401FA2     B9 1F011500           mov ecx,0x15011F
00401FA7     F7F1                  div ecx
00401FA9     8BDA                  mov ebx,edx

00401FF0     8D77 60               lea esi,dword ptr ds:[edi+0x60]              //获取注册码
00401FF3     6A 00                 push 0x0
00401FF5     8BCE                  mov ecx,esi
00401FF7     E8 C2060000           call <jmp.&MFC42.#CString::GetBuffer_2915>
00402043     8B16                  mov edx,dword ptr ds:[esi]
00402045     8B52 F8               mov edx,dword ptr ds:[edx-0x8]
004020D5     33C9                  xor ecx,ecx
00402111     83CE FF               or esi,0xFFFFFFFF
00402114     8D5402 01             lea edx,dword ptr ds:[edx+eax+0x1]
00402118     2BF0                  sub esi,eax

//循环
004021A6     0FBE42 FE             movsx eax,byte ptr ds:[edx-0x2]
004021AA     4A                    dec edx
004021AB     8D0C89                lea ecx,dword ptr ds:[ecx+ecx*4]
004021AE     8D4C48 D0             lea ecx,dword ptr ds:[eax+ecx*2-0x30]
004021F9     880A                  mov byte ptr ds:[edx],cl
00402245     8D0432                lea eax,dword ptr ds:[edx+esi]
00402248     85C0                  test eax,eax
0040224A   ^ 0F8F CAFEFFFF         jg 004021A6

00402290     3BD9                  cmp ebx,ecx
00402292     75 17                 jnz short 00402384   // 关键跳
00402294     6A 00                 push 0x0
00402296     6A 00                 push 0x0
00402298     68 20404000           push 00404020                                                 ; ASCII "注册成功!"
0040229D     8BCF                  mov ecx,edi
0040229F     E8 14040000           call <jmp.&MFC42.#CWnd::MessageBoxA_4224>
004022A4     5F                    pop edi
004022A5     5E                    pop esi
004022A6     5B                    pop ebx
004022A7     8BE5                  mov esp,ebp
004022A9     5D                    pop ebp
004022AA     C3                    retn
00402384     6A 00                 push 0x0
00402386     6A 00                 push 0x0
00402388     68 2C404000           push 0040402C                                                 ; ASCII "注册失败!"
0040238D     8BCF                  mov ecx,edi
0040238F     E8 24030000           call <jmp.&MFC42.#CWnd::MessageBoxA_4224>
2014-11-1 01:00
0
游客
登录 | 注册 方可回帖
返回