Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
File (FASM)我能';看不到文件的内容_File_Winapi_Buffer_Fasm - Fatal编程技术网

File (FASM)我能';看不到文件的内容

File (FASM)我能';看不到文件的内容,file,winapi,buffer,fasm,File,Winapi,Buffer,Fasm,我的问题如下:我正在用汇编语言编写一个软件。它读取Windows可执行文件,并比较前两个字节是否等于“MZ” ReadFile API在其工作中取得了成功,但当我尝试将缓冲区的前两个字节与MZ符号进行比较时,它失败了 我不知道如何访问缓冲区中API函数存储的数据。如果发现MZ符号,程序应跳转到特殊例程。但是,我用一个真正的可执行文件测试代码,但它不会跳转到特殊的例程 以下是我的源代码:(简短,最小化,并复制我的错误): 请帮帮我。谢谢你的回答我想你有字节顺序问题。从: 表达式中遇到带引号的字符串

我的问题如下:我正在用汇编语言编写一个软件。它读取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