Проблема кодирования при записи в файл в x86 - PullRequest
0 голосов
/ 12 марта 2020

Я новичок в x86 и в настоящее время пишу программу, в которой мне нужно написать файл после выполнения некоторых операций с данными, которые я читаю из файла, но у меня возникают проблемы при записи результата в файл, потому что это пишет с некоторым странным концом.

Здесь я резервирую место, которое мне понадобится для хранения результата и выходного файла:

section .data
     new_file db "new_file.txt", 0 

section .bss
     data resb 4

Код, который записывает данные в файл с именем new_file.txt :

mov rax, SYS_OPEN
mov rdi, new_file
mov rsi, O_CREAT + O_WRONLY
mov rdx, 0644o
syscall

push rax
mov rdi, rax
mov rax, SYS_WRITE
mov rsi, data
mov rdx, 4
syscall

mov rax, SYS_CLOSE
pop rdi
syscall

Например, предположим, что я хочу сделать какое-то дополнение, а затем сохранить результат в data , чтобы записать его позже:

mov rax, 0xF
add rax, 0x1
mov [data], rax

в этом случае данные будут иметь значение 0x10, и когда я проверяю сгенерированный файл, я получаю что-то вроде этого:

enter image description here

Я заблудился, так как, похоже, ничего не понимаю в кодировке в x86, поэтому любая помощь будет признательна.

1 Ответ

1 голос
/ 12 марта 2020

Рассмотрим на мгновение файл с таким содержимым, скажем, в hexedit.

ADDR  00 01 02 03 04 05 06 07  08 09 0A 0B 0C 0D 0E 0F
------------------------------------------------------
 00   0A 20 20 20 20 20 20 20  20 20 20 F0 9D 90 98 F0
 10   9F 84 09 09 10 00 00 00  03 7C 2D 1A 0A 0A 0A 0A

Выгрузка на консоль с помощью CAT пытается отобразить то, что он считает текстом UTF-8 .

enter image description here

Однако, если вы посмотрите на то же самое с помощью текстового редактора, тогда; enter image description here или enter image description here Таким образом, ваши данные были записаны в файл правильно, но средства, с помощью которых вы хотите просмотреть их, несовместимы с ожидаемым результатом. Я полагаю, что есть приложения для Linux, которые будут отображать массивы байтов / слов / dwords или qwords и даже структур, несколько аналогичных hexedit

...