ukrlanser Какое значение возвращается из CreateFile(), что передаётся в CloseHandle() и к чему это приводит ?
Опа! Внимательно прогнав прогу под Олькой, заметил (брейк на 00401324): 004012BB >/$ 68 81114000 PUSH BEER.00401181 ; /pFindFileData = BEER.00401181 004012C0 |. 68 62114000 PUSH BEER.00401162 ; |FileName = "*.exe" 004012C5 |. FF15 3C104000 CALL DWORD PTR DS:[<&kernel32.FindFirstF>; \FindFirstFileA 004012CB |. 68 68114000 PUSH BEER.00401168 ; ASCII "BEER.EXE" 004012D0 |. 5E POP ESI 004012D1 |. 68 AD114000 PUSH BEER.004011AD ; ASCII "aaa.exe" 004012D6 |. 5F POP EDI 004012D7 |. 83C9 FF OR ECX,FFFFFFFF 004012DA |> AC /LODS BYTE PTR DS:[ESI] 004012DB |. 84C0 |TEST AL,AL 004012DD |. 74 51 |JE SHORT BEER.00401330 004012DF |. 3A07 |CMP AL,BYTE PTR DS:[EDI] 004012E1 |. 75 03 |JNZ SHORT BEER.004012E6 004012E3 |. 47 |INC EDI 004012E4 |.^E2 F4 \LOOPD SHORT BEER.004012DA 004012E6 |> 6A 00 PUSH 0 ; /hTemplateFile = NULL 004012E8 |. 6A 00 PUSH 0 ; |Attributes = 0 004012EA |. 6A 03 PUSH 3 ; |Mode = OPEN_EXISTING 004012EC |. 6A 00 PUSH 0 ; |pSecurity = NULL 004012EE |. 6A 03 PUSH 3 ; |ShareMode = FILE_SHARE_READ|FILE_SHARE_WRITE 004012F0 |. 68 000000C0 PUSH C0000000 ; |Access = GENERIC_READ|GENERIC_WRITE 004012F5 |. 68 AD114000 PUSH BEER.004011AD ; |FileName = "aaa.exe" 004012FA |. FF15 44104000 CALL DWORD PTR DS:[<&kernel32.CreateFile>; \CreateFileA 00401300 |. 83F8 FF CMP EAX,-1 00401303 |. 74 2B JE SHORT BEER.00401330 00401305 |. A3 7D114000 MOV DWORD PTR DS:[40117D],EAX 0040130A |. 6A 00 PUSH 0 ; /pOverlapped = NULL 0040130C |. 68 7C114000 PUSH BEER.0040117C ; |pBytesWritten = BEER.0040117C 00401311 |. 6A 0A PUSH 0A ; |nBytesToWrite = A (10.) 00401313 |. 68 71114000 PUSH BEER.00401171 ; |Buffer = BEER.00401171 00401318 |. FF35 7D114000 PUSH DWORD PTR DS:[40117D] ; |hFile = NULL 0040131E |. FF15 48104000 CALL DWORD PTR DS:[<&kernel32.WriteFile>>; \WriteFile 00401324 |. FF35 7D114000 PUSH DWORD PTR DS:[40117D] ; /hObject = NULL 0040132A |. FF15 4C104000 CALL DWORD PTR DS:[<&kernel32.CloseHandl>; \CloseHandle 00401330 |> 6A 00 PUSH 0 ; /ExitCode = 0 00401332 \. FF15 40104000 CALL DWORD PTR DS:[<&kernel32.ExitProces>; \ExitProcess А объект-то NULL! Вот где собака порылась! Да только я не понял, почему запись в файл происходит нормально, без ошибок, а дальше такой гимор?????????