首页
社区
课程
招聘
[求助]这段反汇编代码怎么理解?
发表于: 2009-8-23 10:57 4956

[求助]这段反汇编代码怎么理解?

2009-8-23 10:57
4956
00401190  /$  55            PUSH EBP
00401191  |.  8BEC          MOV EBP,ESP
00401193  |.  6A FF         PUSH -1
00401195  |.  68 F01A4000   PUSH tests.00401AF0
0040119A  |.  64:A1 0000000>MOV EAX,DWORD PTR FS:[0]
004011A0  |.  50            PUSH EAX
004011A1  |.  51            PUSH ECX
004011A2  |.  53            PUSH EBX
004011A3  |.  56            PUSH ESI
004011A4  |.  57            PUSH EDI
004011A5  |.  A1 00304000   MOV EAX,DWORD PTR DS:[403000]
004011AA  |.  33C5          XOR EAX,EBP
004011AC  |.  50            PUSH EAX
004011AD  |.  8D45 F4       LEA EAX,DWORD PTR SS:[EBP-C]
004011B0  |.  64:A3 0000000>MOV DWORD PTR FS:[0],EAX
004011B6  |.  8965 F0       MOV DWORD PTR SS:[EBP-10],ESP
004011B9  |.  33C0          XOR EAX,EAX
004011BB  |.  8945 FC       MOV DWORD PTR SS:[EBP-4],EAX
004011BE  |.  C700 01000000 MOV DWORD PTR DS:[EAX],1
004011C4  |.  B8 01000000   MOV EAX,1
004011C9  |.  8B4D F4       MOV ECX,DWORD PTR SS:[EBP-C]
004011CC  |.  64:890D 00000>MOV DWORD PTR FS:[0],ECX
004011D3  |.  59            POP ECX
004011D4  |.  5F            POP EDI
004011D5  |.  5E            POP ESI
004011D6  |.  5B            POP EBX
004011D7  |.  8BE5          MOV ESP,EBP
004011D9  |.  5D            POP EBP
004011DA  \.  C3            RETN



原函数:
int test()
{
	try
	{
		int *p=0;
		*p=1;
		
		return *p;
	}
	catch(...)
	{
		return 0;
	}
}

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

收藏
免费 0
支持
分享
最新回复 (8)
雪    币: 251
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
这个大概有助于楼主理解
; Listing generated by Microsoft (R) Optimizing Compiler Version 15.00.30729.01

TITLE
.686P
.XMM
include listing.inc
.model flat

INCLUDELIB OLDNAMES

EXTRN @__security_check_cookie@4:PROC
PUBLIC _main
EXTRN ___security_cookie:DWORD
EXTRN ___CxxFrameHandler3:PROC
; COMDAT xdata$x
;
xdata$x SEGMENT
__catchsym$_main$2 DD 00H
DD 00H
DD 00H
DD FLAT:__catch$_main$0
__unwindtable$_main DD 0ffffffffH
DD 00H
DD 0ffffffffH
DD 00H
__tryblocktable$_main DD 00H
DD 00H
DD 01H
DD 01H
DD FLAT:__catchsym$_main$2
__ehfuncinfo$_main DD 019930522H
DD 02H
DD FLAT:__unwindtable$_main
DD 01H
DD FLAT:__tryblocktable$_main
DD 2 DUP(00H)
DD 00H
DD 00H
; Function compile flags: /Ogtpy
xdata$x ENDS
; COMDAT _main
_TEXT SEGMENT
__$EHRec$ = -16 ; size = 16
_main PROC ; COMDAT

; 7 : {

push ebp
mov ebp, esp
push -1
push __ehhandler$_main
mov eax, DWORD PTR fs:0
push eax
push ecx
push ebx
push esi
push edi
mov eax, DWORD PTR ___security_cookie
xor eax, ebp
push eax
lea eax, DWORD PTR __$EHRec$[ebp+4]
mov DWORD PTR fs:0, eax
mov DWORD PTR __$EHRec$[ebp], esp

; 8 :
; 9 : try
; 10 : {

xor eax, eax
mov DWORD PTR __$EHRec$[ebp+12], eax

; 11 : int *p=0;
; 12 : *p=1;

mov DWORD PTR [eax], 1

; 13 :
; 14 : return *p;

mov eax, 1

; 19 : }
; 20 : }

mov ecx, DWORD PTR __$EHRec$[ebp+4]
mov DWORD PTR fs:0, ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0
__catch$_main$0:

; 15 : }
; 16 : catch(...)
; 17 : {
; 18 : return 0;

mov DWORD PTR __$EHRec$[ebp+12], -1
mov eax, $LN7@main
ret 0
$LN7@main:
xor eax, eax

; 19 : }
; 20 : }

mov ecx, DWORD PTR __$EHRec$[ebp+4]
mov DWORD PTR fs:0, ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0
_TEXT ENDS
; COMDAT text$x
text$x SEGMENT
__ehhandler$_main:
mov edx, DWORD PTR [esp+8]
lea eax, DWORD PTR [edx+12]
mov ecx, DWORD PTR [edx-20]
xor ecx, eax
call @__security_check_cookie@4
mov eax, OFFSET __ehfuncinfo$_main
jmp ___CxxFrameHandler3
text$x ENDS
_main ENDP
END
2009-8-23 13:43
0
雪    币: 186
活跃值: (10)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
3
谁能详细的把每一行汇编代码注释一下,谢谢。。。
2009-8-23 23:16
0
雪    币: 401
活跃值: (18)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
学习了,大概还能看的东
2009-8-24 08:19
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
怎么没人回答啊·支持我也想看懂他
2009-9-1 08:43
0
雪    币: 314
活跃值: (271)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
6
早上起来就看到这个
2009-9-1 08:46
0
雪    币: 2067
活跃值: (82)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
7
要跨出这一步很难
2009-9-1 09:49
0
雪    币: 2368
活跃值: (81)
能力值: (RANK:300 )
在线值:
发帖
回帖
粉丝
8
00401190  /$  55            PUSH EBP
00401191  |.  8BEC          MOV EBP,ESP
00401193  |.  6A FF         PUSH -1                                         ;以下安装SEH(EBP-4)
00401195  |.  68 F01A4000   PUSH tests.00401AF0              ;指向你的catch 异常处理程序(EBP-8)
0040119A  |.  64:A1 0000000>MOV EAX,DWORD PTR FS:[0]    ;保存原有的异常处理结构
004011A0  |.  50            PUSH EAX                                                   ;完成链表 (EBP-C)
004011A1  |.  51            PUSH ECX                                                   ;(EBP-10)
004011A2  |.  53            PUSH EBX                                                    ;(EBP-14)
004011A3  |.  56            PUSH ESI                                                    ;(EBP-18)
004011A4  |.  57            PUSH EDI                                                    ;(EBP-1C)
004011A5  |.  A1 00304000   MOV EAX,DWORD PTR DS:[403000]
004011AA  |.  33C5          XOR EAX,EBP
004011AC  |.  50            PUSH EAX                                                     ;(EBP-20)
004011AD  |.  8D45 F4       LEA EAX,DWORD PTR SS:[EBP-C]             ;获得异常结构表头
004011B0  |.  64:A3 0000000>MOV DWORD PTR FS:[0],EAX             ;安装完成异常处理函数
004011B6  |.  8965 F0       MOV DWORD PTR SS:[EBP-10],ESP
004011B9  |.  33C0          XOR EAX,EAX                                              ;EAX 清零
004011BB  |.  8945 FC       MOV DWORD PTR SS:[EBP-4],EAX  ;
004011BE  |.  C700 01000000 MOV DWORD PTR DS:[EAX],1     ;给EAX所指的地址赋值相当于*p=1(EAX 是NULL 会报错触发异常)
004011C4  |.  B8 01000000   MOV EAX,1                                   ;这个是返回 return *p, 编译器听聪明直接就知道 *p里面是1了。
004011C9  |.  8B4D F4       MOV ECX,DWORD PTR SS:[EBP-C]
004011CC  |.  64:890D 00000>MOV DWORD PTR FS:[0],ECX
004011D3  |.  59            POP ECX
004011D4  |.  5F            POP EDI
004011D5  |.  5E            POP ESI
004011D6  |.  5B            POP EBX
004011D7  |.  8BE5          MOV ESP,EBP
004011D9  |.  5D            POP EBP
004011DA  \.  C3            RETN


我为什么会这般有兴致看这个问题呢,大约其他问题都太难了。好歹这个我还会点。
呵呵...
2009-9-1 15:28
0
雪    币: 546
活跃值: (1605)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
9
我什么时候能到达"狐狸"的水平就好了。继续努力!膜拜"狐狸"一个.
2009-9-1 15:37
0
游客
登录 | 注册 方可回帖
返回
//