Патч состоит в отыскании в файле atioglxx.dll функции glRenderMode(). Например, в версии 9.2 Catalyst для Windows XP (файл версии 6.14.10.8494) фрагмент кода такой (дизассемблерный листинг из IDA ):
[]
.text:69372D20 glRenderMode proc near
.text:69372D20 mode = dword ptr 8
.text:69372D20
.text:69372D20 push ebp
.text:69372D21 mov ebp, esp
.text:69372D23 and esp, 0FFFFFFF8h
.text:69372D26 push ecx
.text:69372D27 push ebx
.text:69372D28 push esi
.text:69372D29 mov esi, [ebp+8]
.text:69372D2C cmp esi, SaveRenderMode
.text:69372D32 push edi
.text:69372D33 jnz short @@RenderModeChanged - вот здесь надо вместо jnz ставить jmp (заменить 75 на EB)
.text:69372D35 mov eax, dword_69AF6E5C
.text:69372D3A mov edi, dword_69AF2240
.text:69372D40 mov ebx, esi
.text:69372D42 mov dword_69AF6E60, eax
.text:69372D47 call SameRenderMode
.text:69372D4C xor eax, eax
.text:69372D4E pop edi
.text:69372D4F pop esi
.text:69372D50 pop ebx
.text:69372D51 mov esp, ebp
.text:69372D53 pop ebp
.text:69372D54 retn 4
.text:69372D57 @@RenderModeChanged:
.text:69372D57 cmp dword_69AF3748, 0
как вычислить адрес этого куска кода?
я в отладчике ищу, занимает весь процесс минуту.
набросал минимальную программку с использованием этой функции и немножко трассировки...