Не выходит открыть файл, в названии которого кириллица (FASM) - Assembler

Узнай цену своей работы

Формулировка задачи:

format PE GUI 4.0
entry start
 
include 'win32a.inc'
 
;section '.data' data readable writeable
 
dataArr db 0x0C,0x83,0xBB,0x30,0x77,0x00,0x00,0x00,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x75
sizeArr dd 16
dataOffset dd 0x8C05C
fName  db 'Пример 2.txt',0
hFile dd ?
 
;section '.code' code readable executable
 
start:
 
 invoke CreateFile,fName,GENERIC_WRITE,FILE_SHARE_WRITE,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_ARCHIVE,NULL
  cmp eax,INVALID_HANDLE_VALUE
  jz EW
  mov [hFile],eax
  invoke SetFilePointer,[hFile],[dataOffset],NULL,0
  invoke WriteFile,[hFile],dataArr,[sizeArr],sizeArr,NULL
  invoke CloseHandle,hFile
 
EW:
  invoke ExitProcess, NULL
 
;section '.idata' import data readable writeable
 
library kernel,'KERNEL32.DLL'
 
import kernel,\
CreateFile,'CreateFileA',\
WriteFile,'WriteFile',\
CloseHandle,'CloseHandle',\
ExitProcess,'ExitProcess',\
SetFilePointer,'SetFilePointer'
Прекращена работа программы app.exe Сигнатура проблемы: Имя события проблемы: APPCRASH Имя приложения: app.exe Версия приложения: 0.0.0.0 Отметка времени приложения: 527b60e0 Имя модуля с ошибкой: StackHash_0a9e Версия модуля с ошибкой: 0.0.0.0 Отметка времени модуля с ошибкой: 00000000 Код исключения: c0000005 Смещение исключения: 000010fc Это возможно исправить?

Решение задачи: «Не выходит открыть файл, в названии которого кириллица (FASM)»

textual
Листинг программы
;format PE GUI 4.0
format PE console 4.0
 
;entry start
 
include 'win32a.inc'
 
;section '.data' data readable writeable
  
;section '.code' code readable executable
 
start:
 
 invoke CreateFile,fName,GENERIC_WRITE,FILE_SHARE_WRITE,NULL,OPEN_ALWAYS,FILE_ATTRIBUTE_ARCHIVE,NULL
  cmp eax,INVALID_HANDLE_VALUE
  jz EW
  mov [hFile],eax
  invoke SetFilePointer,[hFile],[dataOffset],NULL,0
  invoke WriteFile,[hFile],dataArr,[sizeArr],sizeArr,NULL
  invoke CloseHandle,hFile
 
EW:
  invoke ExitProcess, NULL
dataArr db 0x0C,0x83,0xBB,0x30,0x77,0x00,0x00,0x00,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x75
sizeArr dd 16
dataOffset dd 0x8C05C
fName  db 'Пример 2.txt',0
;fName  db 'Example.txt',0
hFile dd ?
 
;section '.idata' import data readable writeable
; import data in the same section
 data import
 
library kernel,'KERNEL32.DLL'
 
import kernel,\
CreateFile,'CreateFileA',\
WriteFile,'WriteFile',\
CloseHandle,'CloseHandle',\
ExitProcess,'ExitProcess',\
SetFilePointer,'SetFilePointer'  
end data

Объяснение кода листинга программы

  1. Необходимо открыть файл с помощью функции CreateFile.
  2. Функция CreateFile возвращает дескриптор файла, который затем используется в остальных операциях.
  3. Функция SetFilePointer используется для установки позиции в файле.
  4. Функция WriteFile используется для записи данных в файл.
  5. Функция CloseHandle используется для закрытия файла.
  6. Функция ExitProcess используется для завершения работы программы.
  7. Переменная hFile используется для хранения дескриптора файла.
  8. Переменная dataOffset используется для хранения смещения данных в файле.
  9. Переменная fName используется для хранения имени файла.
  10. Переменная dataArr используется для хранения данных, которые необходимо записать в файл.
  11. Переменная sizeArr используется для хранения размера данных, которые необходимо записать в файл.
  12. Используется формат PE GUI 4.0.
  13. Используется формат PE console 4.0.
  14. Секция '.data' содержит данные, которые могут быть прочитаны и записаны.
  15. Секция '.code' содержит исполняемый код.
  16. Секция '.idata' содержит импортированные данные.
  17. Импортируются функции из библиотеки KERNEL32.DLL.
  18. Функция CreateFileA импортируется из библиотеки KERNEL32.DLL.
  19. Функция WriteFile импортируется из библиотеки KERNEL32.DLL.
  20. Функция CloseHandle импортируется из библиотеки KERNEL32.DLL.
  21. Функция ExitProcess импортируется из библиотеки KERNEL32.DLL.
  22. Функция SetFilePointer импортируется из библиотеки KERNEL32.DLL.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4.182 из 5
Похожие ответы