22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
movl %esp, %ebp
pushl %ebx
subl $20, %esp
call get_eip
.L0:
movl 8(%ebp), %eax
movl %eax, (%esp)
leal sel_forwardingTargetForSelector_-.L0(%ebx), %eax
movl %eax, 4(%esp)
leal objc_msg_lookup-.L0(%ebx), %eax
call *%eax
|
<
|
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
movl %esp, %ebp
pushl %ebx
subl $20, %esp
call get_eip
.L0:
movl 8(%ebp), %eax
movl %eax, (%esp)
leal sel_forwardingTargetForSelector_-.L0(%ebx), %eax
movl %eax, 4(%esp)
leal objc_msg_lookup-.L0(%ebx), %eax
call *%eax
|
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
|
call *%eax
addl $20, %esp
popl %ebx
popl %ebp
jmp *%eax
.type of_forward, %function
.size of_forward, .-of_forward
init:
pushl %ebp
movl %esp, %ebp
pushl %ebx
subl $4, %esp
call get_eip
.L1:
leal module-.L1(%ebx), %eax
movl %eax, (%esp)
leal __objc_exec_class-.L1(%ebx), %eax
call *%eax
addl $4, %esp
popl %ebx
popl %ebp
ret
get_eip:
movl (%esp), %ebx
ret
.section .ctors, "a", %progbits
.long init
.section .rodata
str_forwardingTargetForSelector_:
.asciz "forwardingTargetForSelector:"
|
>
>
>
>
<
<
<
<
<
|
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
|
call *%eax
addl $20, %esp
popl %ebx
popl %ebp
jmp *%eax
get_eip:
movl (%esp), %ebx
ret
.type of_forward, %function
.size of_forward, .-of_forward
init:
pushl %ebp
movl %esp, %ebp
pushl %ebx
subl $4, %esp
call get_eip
.L1:
leal module-.L1(%ebx), %eax
movl %eax, (%esp)
leal __objc_exec_class-.L1(%ebx), %eax
call *%eax
addl $4, %esp
popl %ebx
popl %ebp
ret
.section .ctors, "a", %progbits
.long init
.section .rodata
str_forwardingTargetForSelector_:
.asciz "forwardingTargetForSelector:"
|