【关闭】call的一个小问题
本帖最后由 n0noper 于 2018-8-26 14:43 编辑网上看到一个问题:push 0
push offset szCaption
push offset szText
push 0
call dword ptr
结果反汇编代码:
...
push 0;这个是第二个push 0
push cs
call MessageBoxA
CS、EIP入栈不都是call内部执行时做的吗?求解啊。 (试了好几种调用,只发现这种有问题,可能是水平太菜,希望大家看一看)
没看懂你想说的意思{:soso_e134:} Rooking 发表于 2015-10-10 10:52
没看懂你想说的意思
一切尽在代码中:
.386
.model flat, stdcall
option casemap:none
include windows.inc
include kernel32.inc
includelib kernel32.lib
include user32.inc
includelib user32.lib
.data
szCaption db 'Msg', 0
szText db 'Hello, World', 0
.code
start:
push 0
push offset szCaption
push offset szText
push 0
call dword ptr
invoke ExitProcess, 0
ret
end start
;以下是反汇编代码
00401000 > PUSH 0
00401002| PUSH a.00403000 ; /Style = MB_OK|3000|400000
00401007| PUSH a.00403004 ; |Title = "Hello, World"
0040100C| PUSH 0 ; |Text = NULL
0040100E| PUSH CS ; |hOwner
0040100F| CALL <JMP.&USER32.MessageBoxA> ; \MessageBoxA
00401014| PUSH 0 ; /ExitCode = 0
00401016\ CALL <JMP.&KERNEL32.ExitProcess> ; \ExitProcess
0040101B RETN
0040101C JMP DWORD PTR DS:[<&KERNEL32.ExitProcess>;kernel32.ExitProcess
00401022 JMP DWORD PTR DS:[<&USER32.MessageBoxA>] ;USER32.MessageBoxA
小弟汇编功底太差,还在打基础 -_- 谢谢啦
页:
[1]