Консультация № 17157
17.02.2005, 21:20
0.00 руб.
0 1 1
Помоги люди добрые, скажите почему не работает? Ошибки не выдает, но и ключ в реестре тоже не создает (а должен)

Приложение:
format PE GUI 4.0entry startinclude ‘d:\assembler\fasm\include\win32a.inc‘section ‘.data‘ data readable writeablemy_subkey db ‘SOFTWARE\Microsoft\Windows\CurrentVersion\Run‘,0my_value_name db ‘MyProgram‘,0my_value_data db ‘Myprogram.exe‘,0my_hkey: times 4 db 0section ‘.code‘ code readable executable start: invoke lstrlen,my_value_data invoke RegOpenKeyEx,80000002,my_subkey,my_hkey invoke RegSetValueEx,80000002,my_value_name,0,1,my_value_data,eax invoke RegCloseKey,my_hkey invoke ExitProcess,0section ‘.idata‘ import data readable writeablelibrary kernel,‘KERNEL32.DLL‘,\ advapi,‘ADVAPI32.DLL‘import kernel,\ ExitProcess,‘ExitProcess‘,lstrlen,‘lstrlenA‘import advapi,\ RegOpenKeyEx,‘RegOpenKeyExA‘,\ RegSetValueEx,‘RegSetValueExA‘,\ RegCloseKey,‘RegCloseKey‘

Обсуждение

Неизвестный
18.02.2005, 23:14
общий
это ответ
Здравствуйте, fAL!
Нифига не должен.Сам посмотри. Во-первых, одну из функций(RegOpenKeyEx) ты умудряешься вызывать с неправильным числом параметров. Следующей функции(RegSetValueEx) нужно в качестве первого параметра значение переменной my_hkey. Ну и RegCloseKey тоже хочет значение, а ты ей адрес даешь. В общем, верный код в приложении. Немного упрощенный, но работает :)
P.S. Если у тебя нету - скачай OllyDbg. Под отладчиком очень хорошо всё видно, вопросы отпадают сами собой :-)--
<p><font color=#C00000 size=1 face=tahoma><b>* In Gates we trust! :)</b></font></p>

Приложение:
format PE GUI 4.0 entry start include ‘%include%\win32a.inc‘ section ‘.data‘ data readable writeable my_subkey db ‘SOFTWARE\Microsoft\Windows\CurrentVersion\Run‘,0 my_value_data db ‘Myprogram.exe‘,0 my_hkey: dw 0 section ‘.code‘ code readable executable start: invoke RegOpenKeyEx,HKEY_CURRENT_USER,my_subkey,0,KEY_SET_VALUE,my_hkey invoke RegSetValueEx,[my_hkey], my_value_data,0,1,my_value_data,13 invoke RegCloseKey,[my_hkey] invoke ExitProcess,0 section ‘.idata‘ import data readable writeable library kernel,‘KERNEL32.DLL‘,\ advapi,‘ADVAPI32.DLL‘ import kernel,\ ExitProcess,‘ExitProcess‘import advapi,\ RegOpenKeyEx,‘RegOpenKeyExA‘,\ RegSetValueEx,‘RegSetValueExA‘,\ RegCloseKey,‘RegCloseKey‘
Форма ответа