Произвожу внедрении DLL в процесс (например, explorer.exe): Код (Text): include '%fasminc%\win32a.inc' format PE GUI 4.0 DLL entry DllEntryPoint HKEY_LOCAL_MACHINE = 0x80000002 KEY_ALL_ACCESS = 0xf003f REG_SZ = 1 section '.code' code readable writeable executable proc DllEntryPoint hinstDLL,fdwReason,lpvReserved invoke RegOpenKeyEx, HKEY_LOCAL_MACHINE, KeyName, 0, KEY_ALL_ACCESS, hKey invoke RegSetValueEx, [hKey], ParamName, 0, REG_SZ, ParamValue, ParamValue.Len invoke ExitProcess, 0 hKey dd ? KeyName db 'SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows',0 ParamName db 'AppInit_DLLs',0 ParamValue db 'mydll.dll',0 .Len = $ - ParamValue endp section '.idata' import readable writeable library kernel32,'kernel32.dll',\ advapi32,'advapi32.dll' include '%fasminc%\apia\kernel32.inc' include '%fasminc%\apia\advapi32.inc' Но запись в реестр не производится. Хотя ExitProcess работает нормально. Может кто подскажет в чём проблема?
ExitProcess в dll? А вообще, рабочее оно. Разве что секция релоков нужна, непонятно, как оно загрузилось у тебя. Смотри в отладчике, где облом.
Проверял на нескольких машинах. Удаленный код выполняется на всех. Но вот не на всех работает LoadLibrary. GetLastError возвращает ERROR_MOD_NOT_FOUND. Понятния не имею почему.