「SOFTWARE\Microsoft \ Windows \ CurrentVersion \ Run」にエントリを追加して、FASMアプリケーションをシステムの起動に追加しようとしています。
次のAPIを使用しています。
RegOpenKeyExA
RegSetValueExA
RegCloseKey
advapi32.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 ..?でのみ表示されます。