Api 财经事务及库务局局长-加入成立香港大学

Api 财经事务及库务局局长-加入成立香港大学,api,registry,startup,fasm,advapi32,Api,Registry,Startup,Fasm,Advapi32,我正试图通过在“SOFTWARE\Microsoft\Windows\CurrentVersion\Run”中添加一个条目,将我的FASM应用程序添加到系统启动中 我正在使用以下API: RegOpenKeyExA RegSetValueExA RegCloseKey 在advapi32.dll中 当我的代码运行时,永远不会创建条目。这是我的密码: format PE GUI 4.0 include "Win32A.Inc" entry start section ".idata" impor

我正试图通过在“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返回错误\u成功



事实证明,它正在将自身添加到启动中,但在RegEdit中不可见,仅在MSConfig..wird..?

当您调用
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]

尽管如此,这仍然没有解决问题,但我还是很感谢大家的回应。我正在使用您的代码和我以前的代码检查api调用=ERROR\u SUCCESS(或0)和RegOpenKeyExA调用是否成功,但RegSetValueEx没有。我不确定如何检查结果的准确值,除了使用:cmp eax,错误代码,但有许多不同的错误代码…因此需要一段时间。有没有一种方法可以直接显示错误代码?最简单的方法是使用调试器,否则您必须以某种方式编程数字到文本的转换以及此文本的输出。等等,您没有使用调试器?使用调试器进行调试要容易得多。等等,调试器不是吗?!:-)@Serge我使用了OllyDbg,它说最后一个错误是错误访问被拒绝,这对我来说毫无意义。RegOpenKeyExA返回错误\u成功,我无法访问HKLM。此错误不应有任何原因。。?