File (FASM)我能';看不到文件的内容
我的问题如下:我正在用汇编语言编写一个软件。它读取Windows可执行文件,并比较前两个字节是否等于“MZ” ReadFile API在其工作中取得了成功,但当我尝试将缓冲区的前两个字节与MZ符号进行比较时,它失败了 我不知道如何访问缓冲区中API函数存储的数据。如果发现MZ符号,程序应跳转到特殊例程。但是,我用一个真正的可执行文件测试代码,但它不会跳转到特殊的例程 以下是我的源代码:(简短,最小化,并复制我的错误):File (FASM)我能';看不到文件的内容,file,winapi,buffer,fasm,File,Winapi,Buffer,Fasm,我的问题如下:我正在用汇编语言编写一个软件。它读取Windows可执行文件,并比较前两个字节是否等于“MZ” ReadFile API在其工作中取得了成功,但当我尝试将缓冲区的前两个字节与MZ符号进行比较时,它失败了 我不知道如何访问缓冲区中API函数存储的数据。如果发现MZ符号,程序应跳转到特殊例程。但是,我用一个真正的可执行文件测试代码,但它不会跳转到特殊的例程 以下是我的源代码:(简短,最小化,并复制我的错误): 请帮帮我。谢谢你的回答我想你有字节顺序问题。从: 表达式中遇到带引号的字符串
请帮帮我。谢谢你的回答我想你有字节顺序问题。从: 表达式中遇到带引号的字符串时,将转换为数字-第一个字符将成为数字的最低有效字节
所以“MZ”将变成0x5A4D。我认为您有字节顺序问题。从: 表达式中遇到带引号的字符串时,将转换为数字-第一个字符将成为数字的最低有效字节
所以“MZ”将变成0x5A4D。我认为您有字节顺序问题。从: 表达式中遇到带引号的字符串时,将转换为数字-第一个字符将成为数字的最低有效字节
所以“MZ”将变成0x5A4D。我认为您有字节顺序问题。从: 表达式中遇到带引号的字符串时,将转换为数字-第一个字符将成为数字的最低有效字节
因此“MZ”将变为0x5A4D。错误在CreateFile函数中。API希望正确地使用开放模式。显然,开放模式不好,因此,我的功能不工作。只要使用有效的打开模式,如只读或只写,它就会工作。错误在CreateFile函数中。API希望正确地使用开放模式。显然,开放模式不好,因此,我的功能不工作。只要使用有效的打开模式,如只读或只写,它就会工作。错误在CreateFile函数中。API希望正确地使用开放模式。显然,开放模式不好,因此,我的功能不工作。只要使用有效的打开模式,如只读或只写,它就会工作。错误在CreateFile函数中。API希望正确地使用开放模式。显然,开放模式不好,因此,我的功能不工作。只要使用有效的打开模式,如只读或只写,它就会工作。谢谢您的回答。你的回答对解决我的问题非常有用。谢谢你的回答。你的回答对解决我的问题非常有用。谢谢你的回答。你的回答对解决我的问题非常有用。谢谢你的回答。你的回答对解决我的问题非常有用。
;I use the 4 for the open mode because it means "Read/Write".
;I open the file and Get its filesize for later use.
;The handle was stored in eax by the API
invoke CreateFile, cFileName, 4, 0, 0, 4, FILE_ATTRIBUTE_NORMAL, 0
mov [file_handle], eax
;Read 8000 bytes from the file
invoke ReadFile, [file_handle], buffer, 8000, bytesread, 0 ; Now read the full file
;The error is here.
;The program should compare the bytes, but when I test it
;with a real executable, it jumps to the wrong routine.
cmp buffer, "MZ" ;Check if the executable contains the MZ sign (4d5a) in hex
jne bad_executable
jmp good_executable