Вот писал патчь для оутглюка столкнулся с проблемой в конкатенации подскажите как.Сам код Код (Text): .386 .model flat, stdcall option casemap :none include \masm32\include\windows.inc include \masm32\include\user32.inc include \masm32\include\kernel32.inc include \masm32\include\advapi32.inc includelib \masm32\lib\user32.lib includelib \masm32\lib\kernel32.lib includelib \masm32\lib\advapi32.lib .data SubKey db "Identities\",0 SetToPath db '\Software\Microsoft\Outlook Express\5.0\mail\',0 SetToKey db "Safe Attachments",0 szBetrayed db "Default User ID",0 SetData db "0x0",0 .data? hKey dd ? hValue dd ? szBuffer db 4 dup (?) .code start: invoke RegOpenKeyEx,HKEY_CURRENT_USER,ADDR SubKey,NULL,KEY_QUERY_VALUE,ADDR hKey invoke RegQueryInfoKey, hKey,0,0,0,0,0,0,0,0,ADDR hValue,0,0 invoke RegQueryValueEx, hKey, ADDR szBetrayed,0,0,ADDR szBuffer,ADDR hValue invoke lstrcat,offset SubKey,offset szBuffer invoke lstrcat,offset SubKey,offset SetToPath invoke RegCreateKey,HKEY_CURRENT_USER,offset SubKey,offset hKey invoke RegSetValueEx,hKey,ADDR SubKey,0,REG_SZ,ADDR SetData,sizeof SetData invoke RegCloseKey , hKey invoke ExitProcess,NULL end start "Identities\{536E12B6-7C5E-4257-96AE-02540C09B118}536E12B6-7C5E-4257-96AE-02540C09B118}5 ID" а должно получиться "Identities\{536E12B6-7C5E-4257-96AE-02540C09B118}\Software\Microsoft\Outlook Express\5.0\mail\" вожет это из за нуль-турминатора. Подскажите как исправить.
Первый lstrcat добавляет новую строку сразу после нуля в конце SubKey, тем самым портя всё содержимое SetToPath. Догадайтесь сами как исправить. Кстати, а не маловат ли буффер szBuffer (всего 4 байта)? Аккуратнее надо быть...
Все исправил еще до ответаНо пошол иным путем. Сделал больше буфер плюс добавил нулевой байт. Код (Text): .386 .model flat, stdcall option casemap :none include \masm32\include\windows.inc include \masm32\include\user32.inc include \masm32\include\kernel32.inc include \masm32\include\advapi32.inc includelib \masm32\lib\user32.lib includelib \masm32\lib\kernel32.lib includelib \masm32\lib\advapi32.lib MEMSIZE equ 65535 .data SubKey db "Identities\",0 SetToPath db '\Software\Microsoft\Outlook Express\5.0\mail\',0 SetToKey db "Safe Attachments",0 GetId db "Default User ID",0 Message db "Прикрепленные файлы разрешены",0 caption db "Информация",0 SetData dd 0 .data? hKey dd ? hValue dd ? szBuffer db 38 dup (?),0 hMemory HANDLE ? pMemory DWORD ? .code start: invoke RegOpenKeyEx,HKEY_CURRENT_USER,ADDR SubKey,NULL,KEY_QUERY_VALUE,ADDR hKey invoke RegQueryInfoKey, hKey,0,0,0,0,0,0,0,0,ADDR hValue,0,0 invoke RegQueryValueEx, hKey, ADDR GetId,0,0,ADDR szBuffer,ADDR hValue invoke GlobalAlloc,GMEM_MOVEABLE or GMEM_ZEROINIT,MEMSIZE mov hMemory,eax invoke GlobalLock,hMemory mov pMemory,eax invoke lstrcat,pMemory,offset SubKey invoke lstrcat,pMemory,offset szBuffer invoke lstrcat,pMemory,offset SetToPath invoke RegCreateKey,HKEY_CURRENT_USER,pMemory,offset hKey invoke RegSetValueEx,hKey,ADDR SetToKey,0,REG_DWORD,ADDR SetData,sizeof SetData invoke RegCloseKey , hKey invoke GlobalUnlock,pMemory invoke GlobalFree,hMemory invoke MessageBox,NULL,offset Message,offset caption,NULL invoke ExitProcess,NULL end start