Перейти к содержанию
Авторизация  
karlgalagger

Редактирование памяти | Замена байтов большего кол-ва | C++

Рекомендуемые сообщения

Мне надо изменить строку в памяти стороннего приложения на строку с большим количеством символов к примеру: test -> testone
Я уже написал сам код по замене но дело в том что в "testone" кол-во байтов больше чем в "test" и когда я выполняю замену это производит краш (Так как задевается что-то другое).  Я не знаю, но у меня есть теория что мне надо создать свой блок памяти размером "testone" записать всё туда и в оригинальный адрес 

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

(C++)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
11 часов назад, karlgalagger сказал:

но дело в том что в "testone" кол-во байтов больше чем в "test"

Когда кол-во байт. которое тебе нужно больше оригинального - то обязательно делается прыжок (при прыжке производится выравнивание, если оно нужно) на выделенную тобой память  и там уже делаешь, что тебе нужно с возвратом в ориг. код.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
14 часов назад, karlgalagger сказал:

когда я выполняю замену это производит краш

Листингом делись, где замену хочешь произвести и на что.  Да, и желательно, что бы рядом стоящий код был. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

 

2 часа назад, Garik66 сказал:

Когда кол-во байт. которое тебе нужно больше оригинального - то обязательно делается прыжок (при прыжке производится выравнивание, если оно нужно) на выделенную тобой память  и там уже делаешь, что тебе нужно с возвратом в ориг. код.

Можно больше информации об таком прыжке? Как мне выделить память? malloc? 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
12 минут назад, LIRW сказал:

Листингом делись, где замену хочешь произвести и на что.  Да, и желательно, что бы рядом стоящий код был. 

Я делаю программу которая изменяет текст в сторонней программе на произвольный,  всё работает если новый текст <= оригинального. Когда же он больше в памяти задевается то что трогать не надо. Я думаю в коде смысла нет..

Изменено пользователем karlgalagger

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Тебе нужно найти место в программе, которое обращается к адресу этого твоего слова, и там подменить адрес на новую строку, которую ты, разумеется, должен писать куда-то в другое место.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация  

×

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.