-
-
[已解决]
[求助]x64汇编代码执行系统system函数报错求助
10雪币
-
发表于:
2024-9-22 17:13
1695
-
[已解决] [求助]x64汇编代码执行系统system函数报错求助
10雪币
基础环境
win11 专业版
visual studio 2019 Professional
问题
编写x64汇编代码直执行system("dir")
函数,其中system
函数的地址使用手工查找定位的方式直接确定具体地址。
在汇编调用system
函数之前已经加载了msvcrt.dll
。
使用下面的代码执行system("dir")
时,发现必须要先调用push
指令进行一次压栈操作,否则弹出的cmd
窗口就不显示dir
输出。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | _asm {
push rbp
mov rbp, rsp
sub rsp, 0x20
push rbx
xor rax, rax
mov [rbp - 0x08 ],rax
mov al, 0x64
mov [rbp - 0x08 ],al
mov al, 0x69
mov [rbp - 0x07 ],al
mov al, 0x72
mov [rbp - 0x06 ],al
mov al, 0x00
mov [rbp - 0x05 ],al
lea rcx,[rbp - 0x08 ]
xor rbx,rbx
mov rbx, 0x00007FFDD353ABB0
call rbx
add rsp, 0x20
pop rbp
}
|
疑问点
为什么需要做一次压栈操作?使用代码x64dbg
调试发现即使不压栈实际上也进入了system
函数中,但是压栈之后就显示dir
的内容,否则就不显示。
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课
最后于 2024-9-22 17:20
被L11编辑
,原因: 增加奖励