⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 wrapper.s

📁 linux下的MPEG1
💻 S
字号:
.section .datacaller_return:	.long 0.global wrapper_targetwrapper_target:		.long null_call#undef __i686 /* gcc define gets in our way */	.section .gnu.linkonce.t.__i686.get_pc_thunk.bx,"ax",@progbits.globl __i686.get_pc_thunk.bx	.hidden	__i686.get_pc_thunk.bx	.type	__i686.get_pc_thunk.bx,@function__i686.get_pc_thunk.bx:	movl (%esp), %ebx	ret.section .text.globl null_call	.type null_call, @function	.balign 16,0x90null_call:	ret.globl wrapper	.type wrapper, @function	.balign 16,0x90wrapper:	pushl $0	pusha			# store registers (EAX, ECX, EDX, EBX, ESP, EBP, ESI, EDI) 	pushf			# store flags		push %ebp		# set up a stack frame 	movl %esp, %ebp	call __i686.get_pc_thunk.bx	addl $_GLOBAL_OFFSET_TABLE_, %ebx	leal 4(%ebp), %eax	# push flags addr	push %eax	leal 8(%ebp), %eax	# push registers addr	push %eax		leal 44(%ebp), %edx		movl (%ebp), %eax	subl %edx, %eax	push %eax	push %edx		call report_func@PLT	# report entry		test %eax, %eax	jnz .Ldone	movl 44(%ebp), %eax	# switch return addresses	movl %eax, caller_return@GOTOFF(%ebx)	leal .Lwrapper_return@GOTOFF(%ebx), %eax	movl %eax, 40(%ebp)	movl wrapper_target@GOT(%ebx), %eax	movl (%eax), %eax	mov %eax, 40(%ebp)	# wrapper_target should return at .Lwrapper_return	leave			# restore %esp, %ebp	popf			# restore flags	popa			# restore registers	ret			# fake 'return' to wrapper_target actually	.balign 16, 0x90.Lwrapper_return:		pushl $0	pusha			# more for reference sake here	pushf		push %ebp		# set up a stack frame	movl %esp, %ebp	call __i686.get_pc_thunk.bx	addl $_GLOBAL_OFFSET_TABLE_, %ebx	movl caller_return@GOTOFF(%ebx), %eax	movl %eax, 40(%ebp)	# restore the original return address	leal 4(%ebp), %eax	# push flags addr	push %eax	leal 8(%ebp), %eax	# push registers addr	push %eax	leal 40(%ebp), %edx	# push stack top address (relative to our entry)	movl (%ebp), %eax	subl %edx, %eax		# calculate difference between entry and previous frame	push %eax	push %edx	call report_func_ret@PLT# report the return information (same args).Ldone:		leave	popf	popa	ret.section .note.GNU-stack,"",@progbits

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -