我正试图通过在"SOFTWARE\Microsoft\Windows\CurrentVersion\Run“中添加一个条目来使FASM应用程序添加到系统启动中。
我使用的API如下:
RegOpenKeyExA
RegSetValueExA
RegCloseKey
在先进32.dll
运行我的代码时,从未创建该条目。这是我的代码:
format PE GUI 4.0
include "Win32A.Inc"
entry start
section ".idata" import data readable writable
library kernel32, "kernel32.dll",\
advapi32, "advapi32.dll"
import kernel32,\
lstrlen, "lstrlenA",\
ExitProcess, "ExitProcess"
import advapi32,\
RegOpenKeyExA, "RegOpenKeyExA",\
RegSetValueEx, "RegSetValueExA",\
RegCloseKey, "RegCloseKey"
section ".data" data readable writeable
sKey db "SOFTWARE\Microsoft\Windows\CurrentVersion\Run",0
lpData db "C:\File.txt",0
lpValueName db "Text File"
phkresult dd ?
section ".code" code readable executable
start:
invoke RegOpenKeyExA, HKEY_CURRENT_USER, sKey, 0, KEY_SET_VALUE, phkresult
invoke lstrlen, lpData
invoke RegSetValueEx, phkresult, lpValueName, 0, REG_SZ, lpData, eax
invoke RegCloseKey, phkresult
exit:
invoke ExitProcess, 0 我不明白为什么我的条目没有被添加到注册表中。如能在此问题上提供任何帮助,将不胜感激。
尝试使用OllyDbg并得到以下结果:

不知道为什么我会被拒绝访问错误。RegOpenKeyExA返回ERROR_SUCCESS
原来它是把自己添加到启动中,但在RegEdit中是不可访问的,只在MSConfig..weird中是不可访问的。
发布于 2012-10-14 03:25:52
当您调用RegSetValueEx时,您传递的是phkresult地址,而不是它的值。
所以,试试这样的东西:
invoke RegOpenKeyExA, HKEY_CURRENT_USER, sKey, 0, KEY_SET_VALUE, phkresult
invoke lstrlen, lpData
invoke RegSetValueEx, [phkresult], lpValueName, 0, REG_SZ, lpData, eax
invoke RegCloseKey, [phkresult]https://stackoverflow.com/questions/12878942
复制相似问题