精易论坛

标题: 注册表操作Ex.枚举子项Ex() 返回值与备注不符合 [打印本页]

作者: bianyuan456    时间: 2025-1-28 12:08
标题: 注册表操作Ex.枚举子项Ex() 返回值与备注不符合
模块版本:精易模块[v11.1.5]
所用系统:win10 64位
命令名称:注册表操作Ex.枚举子项Ex()
BUG描述:
我的联系QQ:

@项目部004




[JavaScript] 纯文本查看 复制代码
.版本 2
.支持库 const

.计次循环首 (局_注册表.枚举子项Ex (#HKEY_CLASSES_ROOT, “Installer\Dependencies”, 局_文本数组), 局_计次)
    局_2文本 = 系统_取文本注册项 (#HKEY_CLASSES_ROOT, “Installer\Dependencies\” + 局_文本数组 [局_计次], “DisplayName”, 真)
.计次循环尾 ()



上面的代码,在特定的机子(tx云轻量服务器windows server2022系统,刚刚重装完系统没有装其他软件,但是它这个镜像自带的有7zip和一个叫cloudbase-init的软件),报数组异常的弹窗,发现局_注册表.枚举子项Ex 的第三个参数 局_文本数组 的数组成员数是0,但是枚举子项Ex()返回的是2,导致进入循环后数组成员数为0的数组引用了第1个成员导致报错。


我从精易模块源码看了枚举子项Ex()的代码,发现在没有走到最后的返回/中间产生错误时,会返回错误代码(整数),这个错误代码的返回容易让人以为  参考的文本数组是这个成员数,建议把返回错误码的功能改成返回-1,具体错误码可以直接在模块源码中 用输出调试文本 这样输出 ,这样才能跟备注 (成功返回子项目数,失败返回-1) 符合。



作者: 深情久伴    时间: 2025-2-27 04:33
册表操作Ex.枚举子项Ex()
作者: panaowei    时间: 2025-4-22 14:35
从我这个汇编萌新的角度来看可能是有bug。
首先,运行了楼主给的示例代码(版本是:win7 x86,版本号是: 6.1.7600)/
嘿,你猜怎么着,执行后输出的错误代码是998。并且弹框提示了找不到spec.frn支持库?
然后拉到0D里面看了看。
先不说这个peb,
首先,参数长度计算就错误了。实际长度是0x20,而非0x0E(我个人是这么认为的,这里需要一个狗头表情包)。
然后,没有现场保护(这里也需要一个狗头表情包)。
小改了一下:


置入代码 ({ 96, 100, 139, 29, 48, 0, 0, 0, 141, 155, 172, 0, 0, 0, 185, 3, 0, 0, 0, 139, 3, 139, 84, 205, 8, 137, 2, 131, 235, 4, 226, 243, 97, 201, 194, 32, 0 })
' pushad
' mov ebx, dword [fs:30h]
' lea ebx, dword [ebx+0ACh]
' mov ecx, 03h
' label1:
' mov eax, dword [ebx]
' mov edx, dword [ebp+ecx*8+08h]
' mov dword [edx], eax
' sub ebx, 04h
' loop label1
' popad
' leave
' retn 020h


作者: 不离01    时间: 2025-4-24 22:13
666666666666666




欢迎光临 精易论坛 (https://125.confly.eu.org/) Powered by Discuz! X3.4