我正在尝试确定我的应用运行的PC是x64还是x86。
这是我目前的代码:
format PE GUI 4.0
include "Win32A.Inc"
entry start
section ".idata" import data readable writable
library kernel32,"KERNEL32.DLL",user32,"USER32.DLL"
import kernel32,\
IsWow64Process,"IsWow64Process",\
GetCurrentProcess,"GetCurrentProcess",\
ExitProcess,"ExitProcess"
import user32,\
MessageBox,"MessageBoxA"
section '.data' data readable writeable
hProcess dd ?
hResult dd ?
section '.code' code readable executable
start:
invoke GetCurrentProcess
mov [hProcess],eax
invoke IsWow64Process,hProcess,hResult
cmp [hResult],1
je Is64
cmp [hResult],0
je Is32
invoke ExitProcess,0
Is64:
invoke MessageBox,0,'64','AR',0
invoke ExitProcess,0
Is32:
invoke MessageBox,0,'32','AR',0
invoke ExitProcess,0
它只是在执行时崩溃。
检查布尔值的正确方法是什么,我正确地做了那个部分吗?
感谢您解决此问题的任何帮助。
答案 0 :(得分:1)
为了能够声明内联字符串,您需要包含扩展标题:
include "Win32AX.Inc"
或者'64'等等将被解释为常量。
您也没有将hProcess作为值传递:
invoke IsWow64Process,[hProcess],hResult