0

到目前为止,我正在尝试写入文件,我有以下代码可以附加到文件中。有谁知道为什么这不起作用?它运行良好,但到最后什么都没有改变。

filewritemode: .asciz "a"
filelocation: .asciz "/h/test.txt"

_main:  

push $filelocation
push $filewritemode
call _fopen
push $blabla
push %eax 
call _fprintf

push $result
call _printf
push $0
call _exit # exit the program

gcc 用于将源文件转换为 .exe $blabla 当前是带有一些随机字符的字符串,用于测试

4

2 回答 2

2

您将参数传递给fopenreversed 并且您没有检查错误。在这种情况下,ltrace可能是你的朋友。

于 2013-06-05T15:54:06.653 回答
2

它不起作用,因为您fopen以错误的顺序推送了参数。参数必须从最后一个推到第一个。除此之外,您会反复推送参数,但不会再次删除它们。在这种情况下,这是可行的,因为您潜入了exit,但如果您将返回该ret指令,您会发现这将导致崩溃,因为您将跳转到推送的参数之一。

于 2013-06-05T15:54:50.390 回答