karlgalagger Опубликовано 28 января, 2020 Поделиться Опубликовано 28 января, 2020 Мне надо изменить строку в памяти стороннего приложения на строку с большим количеством символов к примеру: test -> testone Я уже написал сам код по замене но дело в том что в "testone" кол-во байтов больше чем в "test" и когда я выполняю замену это производит краш (Так как задевается что-то другое). Я не знаю, но у меня есть теория что мне надо создать свой блок памяти размером "testone" записать всё туда и в оригинальный адрес записать указатель на новый блок памяти(Это всего теория, я не знаю как это работает). Я уверен что это можно сделать, но не знаю как, жду вашей помощи. (C++) Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 29 января, 2020 Поделиться Опубликовано 29 января, 2020 В 28.01.2020 в 19:47, karlgalagger сказал: но дело в том что в "testone" кол-во байтов больше чем в "test" Показать Когда кол-во байт. которое тебе нужно больше оригинального - то обязательно делается прыжок (при прыжке производится выравнивание, если оно нужно) на выделенную тобой память и там уже делаешь, что тебе нужно с возвратом в ориг. код. Ссылка на комментарий Поделиться на другие сайты Поделиться
LIRW Опубликовано 29 января, 2020 Поделиться Опубликовано 29 января, 2020 В 28.01.2020 в 19:47, karlgalagger сказал: когда я выполняю замену это производит краш Показать Листингом делись, где замену хочешь произвести и на что. Да, и желательно, что бы рядом стоящий код был. Ссылка на комментарий Поделиться на другие сайты Поделиться
karlgalagger Опубликовано 29 января, 2020 Автор Поделиться Опубликовано 29 января, 2020 В 29.01.2020 в 07:43, Garik66 сказал: Когда кол-во байт. которое тебе нужно больше оригинального - то обязательно делается прыжок (при прыжке производится выравнивание, если оно нужно) на выделенную тобой память и там уже делаешь, что тебе нужно с возвратом в ориг. код. Показать Можно больше информации об таком прыжке? Как мне выделить память? malloc? Ссылка на комментарий Поделиться на другие сайты Поделиться
karlgalagger Опубликовано 29 января, 2020 Автор Поделиться Опубликовано 29 января, 2020 (изменено) В 29.01.2020 в 10:02, LIRW сказал: Листингом делись, где замену хочешь произвести и на что. Да, и желательно, что бы рядом стоящий код был. Показать Я делаю программу которая изменяет текст в сторонней программе на произвольный, всё работает если новый текст <= оригинального. Когда же он больше в памяти задевается то что трогать не надо. Я думаю в коде смысла нет.. Изменено 29 января, 2020 пользователем karlgalagger Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 29 января, 2020 Поделиться Опубликовано 29 января, 2020 Тебе нужно найти место в программе, которое обращается к адресу этого твоего слова, и там подменить адрес на новую строку, которую ты, разумеется, должен писать куда-то в другое место. Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения