Форум программистов, компьютерный форум, киберфорум
FASM
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/25: Рейтинг темы: голосов - 25, средняя оценка - 4.88
0 / 0 / 0
Регистрация: 15.09.2017
Сообщений: 9
FASM

Как записать данные по адресу в памяти?

21.09.2017, 13:02. Показов 4651. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как на FASM записать данные по адресу в памяти?

Мой код:

Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
include 'win32ax.inc'
 
.code
 
  start:
 
        mov eax, 50h
        push eax
        pop [z]
 
        invoke wsprintf, msg, 'Value = %u', [z]
        invoke  MessageBox,HWND_DESKTOP, msg, invoke GetCommandLine,MB_OK
        invoke  ExitProcess,0
 
.end start
z dw 0,0
msg db 200h dup(0)

Успешно компилируется и выводит 80 (десятичное значение 50h) в MassegeBox.
Однако, при просмотре в гекс-редакторе файла exe по адресам z и msg ничего не появляется.

Правильно ли я понял, что файл exe копируется в оперативную память и в ней меняются значения переменных, а чтобы изменить эти значения в файле exe, нужно его открыть для записи и произвести запись?

Как передать значение из стека по заданному числом адресу, т.е. без переменной?
Код типа "pop [z]" работает, а код типа "pop 500h" не работает!

Добавлено через 2 часа 8 минут
Вот ещё вопрос:
Почему если я меняю часть кода:

Assembler
1
2
3
mov eax, 50h
push eax
pop [z]
на код : mov [z], 8
, то в этом случае код тоже не работает, выводится в MessageBox какое-то большое произвольное число

варианты mov word [z], 8 и mov byte [z], 8 - аналогично.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
21.09.2017, 13:02
Ответы с готовыми решениями:

Как записать по адресу в постоянную память данные?
Подскажите, пожалуйста, как можно записать данные по адресу 0000h:7С00h на жесткий диск.

Данные по адресу памяти
У меня есть адрес например 0x11E9B62C как узнать что по нему записанно?

Данные по адресу памяти
У меня есть адрес например 0x11E9B62C как узнать что по нему записанно?Тема закрыта как дубль.

1
Asm/C++/Delphi/Py/PHP/VBA
 Аватар для Jin X
6812 / 2052 / 238
Регистрация: 14.12.2014
Сообщений: 4,305
Записей в блоге: 12
21.09.2017, 16:36
Цитата Сообщение от New Asm Посмотреть сообщение
Однако, при просмотре в гекс-редакторе файла exe по адресам z и msg ничего не появляется.
Что такое гекс-редактор? Там не может не появляться, раз результат выводится правильно.

Цитата Сообщение от New Asm Посмотреть сообщение
Правильно ли я понял, что файл exe копируется в оперативную память и в ней меняются значения переменных
Конечно, в памяти, на диске ничего не меняется.
Цитата Сообщение от New Asm Посмотреть сообщение
а чтобы изменить эти значения в файле exe, нужно его открыть для записи и произвести запись?
А как ещё?
Ну можно ещё, конечно, открыть диск \\.\PhysicalDrive0, например, и поискать файл, читая NTFS вручную

Или вопрос о том, как программе изменить самой себя?
Можно поменять самого себя в памяти, как вариант (только такая секция должна быть writeable).
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
include 'win32ax.inc'
 
section '.text' code readable writeable executable
 
start:
 
mov dword [addr],y
 
mov eax, 50h
push eax
pop dword [z]
addr = $-4
 
invoke wsprintf, msg, 'Value Z=%u, Y=%u', [z], [y]
invoke MessageBox,HWND_DESKTOP, msg, invoke GetCommandLine, MB_OK
invoke ExitProcess,0
 
.end start
z dd 0
y dd 0
msg db 200h dup(0)
Цитата Сообщение от New Asm Посмотреть сообщение
Код типа "pop [z]" работает, а код типа "pop 500h" не работает!
Потому что 500h - это не адрес. Адрес - это [500h] (вернее, dword [500h]). Ну или так: pop dword [ecx]

p.s. Почему код без тегов [asm][/asm] ?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
21.09.2017, 16:36
Помогаю со студенческими работами здесь

Как можно найти в дебаггере данную функцию: инструкция по адресу XXXXXXXXXXXXX обратилась к памяти по адресу YYYYYYYYYYYYY память не может быть read
Можно ли как то по адресу инструкции пробить что за инструкция такая в программе вызвала экзепшен? Добавлено через 35 минут Ведь по...

Как записать и считать данные в текстовик находящийся в памяти телефона? Android 5.1.1. Java
Вот что у меня тут: public void AddClick (View v) { // проверяем доступность SD if...

Инструкция по адресу обратилась к памяти по адресу. Память не может быть read
Пропали компоненты COM с компьютера, так как при попытке их выбрать Visual Studio попросту вылетает и открывается заново, а недавно еще...

Инструкция по адресу “0x490e355” обратилась к памяти по адресу “0x065ea847” память не может быть “written”
Здравствуйте, при загрузки картинки в хроме появляется такая ошибка и хром дохнет, также это наблюдается в других браузерах когда нажимаешь...

инструкция по адресу 0x7c91ac4a обратилась к памяти по адресу 0x00000010.Память не может быть written
Помогите разобраться пожалуйста!!!!! С:/rsit info.txt logfile of random's system information tool 1.06 2010-05-27 22:37:54 ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru