由于对这个问题的回复没有帮助,我决定自己寻找解决方案。对于将来遇到此问题的任何人,这里提供了一个针对 x64 应用程序的解决方案,可以修复 comctl32.dll 中的错误(这是特定版本)。确保您正在使用 LVS_EX_DOUBLEBUFFER。
[ENABLE]
alloc(newmem,128)
label(returnhere)
label(originalcode)
label(exit)
newmem:
cmp r14,0
jne originalcode
push rax
lea rax,[rsp+88]
dec dword ptr [rax+4]
pop rax
originalcode:
mov rbx,[rsp+30]
mov rsi,[rsp+38]
add rsp,20
exit:
jmp returnhere
comctl32.DSA_Create+105F:
jmp newmem
returnhere:
[DISABLE]
dealloc(newmem)
comctl32.DSA_Create+105F:
mov rbx,[rsp+30]
mov rsi,[rsp+38]
add rsp,20
这是针对comctl32.dll版本6.10.19041.1052的,但您应该能够扫描此AoB以查找脚本中结果上方几行使用的地址。
BA 0B 12 00 00 48 FF 15
LVS_EX_GRIDLINES
一直存在缺陷。 - Jonathan Potter