我需要找出 %appdata% 文件夹的路径,并将这个路径写入一个寄存器,并在代码中使用这个寄存器。
我的代码示例(我使用 winapi):
global start
extern SHGetSpecialFolderPathA ; https://docs.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-shgetspecialfolderpatha
section .data
CSIDL_LOCAL_APPDATA equ 001ch
section .text
start:
push 0
push CSIDL_LOCAL_APPDATA
push 0
push 0
call [SHGetSpecialFolderPathA]
首先要做的是查看文档:SHGetSpecialFolderPathA function (shlobj_core.h)。文档说,在参数中,
pszPath
您需要传递一个指向缓冲区(缓冲区地址)的指针,MAX_PATH
其大小最少,路径将被写入:调试器中的结果:
同样在文档中,该功能被
SHGetSpecialFolderPathA
标记为不支持,您需要使用它SHGetFolderPathA
(这也已弃用,您需要使用SHGetKnownFolderPath
,但我无法使用此功能(又名“niasilil”)获得工作结果,所以以下是带有SHGetFolderPathA
) 的示例: