Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484

Сместить адрес регистра

10.01.2020, 16:27. Показов 2798. Ответов 28
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Читаю статью с хабра https://habr.com/en/post/190800/
и там сказано :
CONTEXT lcContext;
lcContext.ContextFlags = CONTEXT_ALL;
GetThreadContext(m_cProcessInfo.hThread, &lcContext);
Окей, мы получили его. Что теперь?
В регистре EIP содержится адрес следующей инструкции для выполнения. Он представлен членом Eip структуры CONTEXT. Как я уже упоминал раннее, EIP продвинулся вперёд и мы должны вернуть его обратно. К счастью для нас, нам надо всего лишь переместить его ровно на один байт, так как инструкция точки останова равна по длине одному байту. Именно это и делает код ниже:
lcContext.Eip --; // Move back one byte
SetThreadContext(m_cProcessInfo.hThread, &lcContext);
так вот тут ошибка же ,
C++
1
lcContext.Eip --;
не сдвинет адрес на 1 байт , а просто уменьшит значение этого регистра на 1, как правильно сдвинуть адрес на 1 байт? Создать указатель на этот регистр и его уменьшить?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
10.01.2020, 16:27
Ответы с готовыми решениями:

Создание регистра сведений Адрес
Здравствуйте! Как посоветуете создать Адрес в конфигурации (только улица, город и страна)? Чтобы при выборе улицы автоматически выбирались...

Поместить адрес регистра в память
Есть кусочек кода mov ,al mov eax, mov ,eax test rcx,rcx

Вычислить адрес верхушки стека, адрес следующей команды, адрес переменной, адрес которой содержится в BX
Помогите решить следующие задачи: 1.Вычислить адрес верхушки стэка. 2.Вычислить адрес следующей выполняемой программы. 3. Вычислить...

28
653 / 466 / 183
Регистрация: 23.04.2019
Сообщений: 1,987
11.01.2020, 16:05
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от ReYalp Посмотреть сообщение
я понимаю что я смещаю адрес самого регистра, а не адрес в регистре, меня больше смущает почему это работает, во-вторых вы шлете какую-то непонятную дичь, хранится предположим там число 20 в том регистре, когда автор делает регистр-- то он уменьшает 20 на 1, это же не сдвиг адреса, хелоо
Рекомендую попробовать Cheat Engine, пройди туториал и ты почувствуешь что такое адрес, что такое регистр, что такое смещение

Ты реально делаешь ракету, при этом не зная как она работает и в добавок не пытаешься понять
0
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
11.01.2020, 17:05  [ТС]
zayats80888, окей, хорошо, если eip-- смещает на 1 байт то почему это тогда не работает?
0
 Аватар для zayats80888
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
11.01.2020, 17:12
Цитата Сообщение от ReYalp Посмотреть сообщение
почему это тогда не работает?
что это?
0
653 / 466 / 183
Регистрация: 23.04.2019
Сообщений: 1,987
11.01.2020, 17:19
Цитата Сообщение от ReYalp Посмотреть сообщение
окей, хорошо, если eip-- смещает на 1 байт то почему это тогда не работает?
Я не понимаю, что у вас не работает?

Регистр это условно ячейка СОЗУ, которая хранит некоторую информацию (подобно обычным переменным), в данном случае
EIP - Extended Instruction Pointer тоесть указатель на инструкцию
Такие указатели - просто адреса, адреса ничем не отличаются от обычного числа!
Чтобы сдвинуть на 1 байт нужно отнять 1, если у вас что то не работает - скорее всего ошибка не тут
0
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
12.01.2020, 00:48  [ТС]
AndryS1, так а как же не отличаются если адреса хранятся же в шестнадцатиричном виде? zayats80888, я понял что я фигню писал, но почему не работает уменьшение адреса в регистре на 1? А если я делаю так как писал выше то все окей?
0
 Аватар для zayats80888
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
12.01.2020, 01:00
Цитата Сообщение от ReYalp Посмотреть сообщение
А если я делаю так как писал выше то все окей?
Если ты про
Цитата Сообщение от ReYalp Посмотреть сообщение
C++
1
2
DWORD* pl = &lcContext.Eip;
--pl; // Move back one byte
то ты тут просто объявляешь локальную переменную pl указывающую на поле Eip, потом "смещаешь" этот локальный указатель. После этого он возможно указывает на другое поле lcContext(на другой регистр может). Что после этого ты делаешь с этим указателем и что там у тебя "работает" мне не видно.
1
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,038
Записей в блоге: 1
12.01.2020, 01:21
Цитата Сообщение от ReYalp Посмотреть сообщение
Создать указатель на этот регистр и его уменьшить?
Начнем с того, то нельзя создать указатель на регистр.
Цитата Сообщение от ReYalp Посмотреть сообщение
как правильно сдвинуть адрес на 1 байт?
Адрес чего? Адрес, находящийся в eip?
Процессор сам его меняет выполняя программу.
Этот адрес программисту можно изменить с помощью инструкций call, jmp, и т.д.
В CONTEXT содержатся значения флагов и состояние регистров в определенный момент, но это всё уже лежит в памяти, которую Вы предоставили под CONTEXT. Туда просто скопируются нужные значения. Их изменение не есть изменение значений в регистрах.

Если бы Вы могли так менять регистр eip, чтобы Вам это дало? Чего Вы хотите добиться изменением eip?
1
653 / 466 / 183
Регистрация: 23.04.2019
Сообщений: 1,987
12.01.2020, 02:21
Цитата Сообщение от ReYalp Посмотреть сообщение
так а как же не отличаются если адреса хранятся же в шестнадцатиричном виде?
иди почитай про виды
FF - 255
--FF = 254
255 = FF
--255 = FE

РАЗНИЦЫ НЕТ, ЭТО ПРОСТО ПРЕДСТАВЛЕНИЕ ДЛЯ УДОБСТВА

Добавлено через 45 секунд
И ВСЕ данные для компа вообще хранятся в bin
0
12.01.2020, 02:23

Не по теме:

Цитата Сообщение от AndryS1 Посмотреть сообщение
ЭТО ПРОСТО ПРЕДСТАВЛЕНИЕ ДЛЯ УДОБСТВА
Запись числа.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
12.01.2020, 02:23

Частный адрес, динамический адрес, статический адрес - какой у меня?
Привет. Открываем рубрику глупых вопросов. Я сижу с компьютера который подключен к интернету по кабелю, кабель от компьютера идёт к...

Как реализовать в LPT взаимосвязь статус регистра и регистра данных
Как реализовать в LPT взаимосвязь статус регистра и регистра данных. Чтобы при изменении сигнала в статус регистре на одном из регистров...

Как записать информацию из 16 битного регистра в два регистра по 8 бит
Как записать информацию из 16 битного регистра в два регистра по 8 бит. (То есть каждый раз может быть разное число в регистре 16 бит) ...

Строки: все буквы малого регистра заменить большими, а большого регистра малыми
введенной строке все буквы малого регистра заменить большими,а большого регистра малыми

Преобразовать буквы от k до х нижнего регистра в соответствующие верхнего регистра
Написать программу, выполняющую действия со строкой символов . Для модификации символов использовать условную операцию. Вывести исходную и...


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

Или воспользуйтесь поиском по форуму:
29
Ответ Создать тему
Новые блоги и статьи
сукцессия 6. Питон реализация энилоджиковской модели, картинка про Центральную часть будущей модели
anaschu 26.06.2026
Етить. ИИ мне на основе моего старого файла R создал вот эту вот хмерь на пайтоне. Это уже новая модель, модель сукцессии грибной. потоки фосфора, азота. Углерода. 5 видов организмов. Я даже. . .
Как замкнутый ядерный цикл решит проблему недостатки фосфора? Био миграция фосфора со дна океана
anaschu 26.06.2026
Биологический лифт: Концепция подъема фосфора со дна океана с помощью ЗЯТЦ Предлагаю на обсуждение альтернативу тяжелому промышленному бурению океанического дна. Вместо сложной инженерии мы можем. . .
сукцессия 5
anaschu 26.06.2026
ПЛАН РАЗРАБОТКИ математической модели сукцессии микоризных систем Переход AM → EcM (Endo + ErM) · Шумилов А. С. · ИФХиБПП РАН · Пущино · 2026 . . .
сукцессия 4
anaschu 25.06.2026
Более детализированный план разработки План доработки модели динамики микоризных симбиозов (EcM с гистерезисом) Цель: Реализовать логику переключения между эрикоидным (ErM) и эктомикоризным. . .
сукцессия 3
anaschu 25.06.2026
Примерный план работ по модели
сукцессия 2
anaschu 25.06.2026
параметризировочная калибровочная таблица будущей модели
Многофункциональное здание: как одно здание порождает конфликты требований, которые никто не планировал (мат мет мод 29)
anaschu 23.06.2026
Многофункциональное здание: как одно здание порождает конфликты требований, которые никто не планировал Материалы для обсуждения с МГСУ · 2026 Рисунки внутри приложенного ворд файла. Что за. . .
28. Конкретное развертывание плана номер 1 из поста номер 27
anaschu 22.06.2026
Можно ли из модели получить конкретные строительные требования? Честно — напрямую из текущей модели такие ответы не получить. Но цепочка логики есть, и она не такая длинная. Где разрыв . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru