Исходники моей программы по некоторым причинам приводить не хочу, хотя бы потому, что 30Kb чистой мнемоники.
Пробовал разными путями получить ошибку, вылезающую в моей программе и написал маленькую программульку имитирующую вызов Win32API при котором происходит ошибка (востановил контекст регистров и младшие 16 бит регистра флагов). К сожалению требуемого результата не достиг, буду копать дальше, может удастся выделить условия возникновения ошибки.
Вот код имитирующей программы:
.386
.model flat,stdcall
option casemap:none
include windows.inc
include kernel32.inc
includelib kernel32.lib
.data
db 2800h DUP (0)
.code
TestSTD PROC
LOCAL hStdout :DWORD
mov eax, 3d2eh
mov ebx, 4039b0h
mov ecx, 14h
mov edx, 14h
mov edi, 4039afh
mov esi, 132559h
pushf
pop ax
mov ax, 246h
push ax
popf
; xor eax, eax
;std
push dword ptr 0
call ExitProcess
; invoke ExitProcess, eax
ret
TestSTD ENDP
end TestSTD ---
|