Русский / Russian English / Английский

Сейчас на форуме: dima_0007 (+4 невидимых)
 · Начало · Статистика · Регистрация · Поиск · ПРАВИЛА ФОРУМА · Язык · RSS ·

 eXeL@B —› Вопросы новичков —› Как передать процедуре текстовую константу.
Посл.ответ Сообщение

Ранг: 3.2 (гость)
Статус: Участник

Создано: 2 июня 2013 06:49 New!
Цитата · Личное сообщение · #1

В программе есть процедура запуска плагина, она получает значение имени файла плагина (строка) через указатель на область памяти, записанный в EDX. Мне надо передать в эту функцию свою строку, которой нет в коде программы. Как это сделать? Вариант с лоадером не вариант.

Ранг: 49.7 (посетитель)
Статус: Участник

Создано: 2 июня 2013 10:03 New!
Цитата · Личное сообщение · #2

записываешь в пустую часть этой области памяти - путь к файлу
смотришь начало имени (позицию)
mov edx, 12345678
push edx

или же push 12345678

или поменять строку в файле она обычно лежит где-то в (директории) данных

ты же путь к файлу хочешь передать? или что-то другое?
покажи, какую процедуру редактируешь.

Ранг: 3.2 (гость)
Статус: Участник

Создано: 2 июня 2013 11:30 New!
Цитата · Личное сообщение · #3

Вопрос именно в реализации 2-х этих способов. Если можно пример кода который записывает строку в память. И потом чтобы это значение можно было передать регистре. Мне надо только название ддлки. В моем случае это 7 байт. Но с асемлером знаком не давно поэтому задаю этот вопрос. Второй способ я пытался сделать с помощью ресурс менеджера. Изменил левую строку на нужную мне. Но найти указатель на эту строку в коде программы мне не удалось. Оля говорит что ттаких строк нет... может чтото не так делаю...

Ранг: 403.1 (мудрец)
Статус: Участник
"Тибериумный реверсинг"

Создано: 2 июня 2013 11:53 New!
Цитата · Личное сообщение · #4

Для начала бы неплохо название программы и ссылку на нее - вопрос должен иметь "материальную" форму.

Ранг: 3.2 (гость)
Статус: Участник

Создано: 2 июня 2013 12:13 New!
Цитата · Личное сообщение · #5

Материальная форма исключена. Это специфическая прогоамма из узкой области. И да забыл сказать это не это кракинг а скорее изменение функционала существующих программ. Но мой вопрос не относится к самой программе. Больше к теори и...


Ранг: 564.4 (!)
Статус: Участник
_Вечный_Студент_

Создано: 2 июня 2013 22:59 New!
Цитата · Личное сообщение · #6

Ну назови свой plug-in (.dll) именем старого plug-in (.dll) и скопируй туда, куда надо, а старый убери.
И пусть программа запускает твой plug-in (.dll).
Если я конечно правильно понял вопрос, поскольку все покрыто тайной.

| Сообщение посчитали полезным: Abraham


Ранг: 3.2 (гость)
Статус: Участник

Создано: 3 июня 2013 09:08 New!
Цитата · Личное сообщение · #7

Вопрос просто в том, чтобы записать в edx указатель на строку(текст), которой изначально нет в коде программы. Как это сделать? Если можно поподробнее...


Ранг: 1024.9 (!!!!)
Статус: Участник

Создано: 3 июня 2013 09:22 New!
Цитата · Личное сообщение · #8

кратко так
берешь hiew, добавляешь в свободное место программы свою строку,
потом добавляешь mov/push смешение на свою строку
профит

| Сообщение посчитали полезным: yarcom


Ранг: 3.2 (гость)
Статус: Участник

Создано: 3 июня 2013 10:23 New!
Цитата · Личное сообщение · #9

reversecode пишет:
берешь hiew, добавляешь в свободное место программы свою строку,
потом добавляешь mov/push смешение на свою строку

Свободное место, это любое место занятое нулями, или есть какие-то ограничения? И еще вопроса, надо ли как-то ограничивать строку, ставить в конце 10,13 или что-то типа?

Ранг: 441.3 (мудрец)
Статус: Участник

Создано: 3 июня 2013 10:36 New!
Цитата · Личное сообщение · #10

Посмотреть в каком виде до этого передавались строки, не?

Ранг: 488.4 (мудрец)
Статус: Участник

Создано: 3 июня 2013 10:41 New!
Цитата · Личное сообщение · #11

yarcom строки бывают самые разнообразные.. анси/юникод (1 байт и 2 байта на 1 символ) .. бывают нуль терминейтед.. (когда в конце 0) бывают и такие.. в начале длина строки.. потом символы.. причем длима может быть и байтом и словом и двойным словом.. моет хватит гадать? вопрос то на 1 строчку ответа.. а у нас тут угадай мелодию

Ранг: 3.2 (гость)
Статус: Участник

Создано: 3 июня 2013 10:42 · Поправил: yarcom New!
Цитата · Личное сообщение · #12

tihiy_grom пишет:
Посмотреть в каком виде до этого передавались строки, не?

Дело в том что в памяти знаки конца строки не стоят, я не могу понять где он длину берет...
Строка помещается в EDX строчкой move EDX, dword ptr DS:[EAX+68]

Ранг: 488.4 (мудрец)
Статус: Участник

Создано: 3 июня 2013 11:05 · Поправил: VodoleY New!
Цитата · Личное сообщение · #13

yarcom как вариант в другом регистре.. все зависит от ТИПА строчки, яж высше описал варианты
З.Ы. а кто сказал что это вообще строка? а не массив символов?

Ранг: 3.2 (гость)
Статус: Участник

Создано: 3 июня 2013 11:16 New!
Цитата · Личное сообщение · #14

Понятно. С этим разобрались, спасибо. Теперь если можно про то, как безболезненно вставить в программу свою строку, чтобы потом на нее сослаться? Надо вставить в анси. Окончание строки пока не важно. Только сам принцип, если можно.

Ранг: 488.4 (мудрец)
Статус: Участник

Создано: 3 июня 2013 11:55 New!
Цитата · Личное сообщение · #15

тебеж reversecode уже написал как это сделать!!! 1. найти пустое место.. 2. записать свою строку.. 3 подменить адрес на СВОЮ строку.. в чем проблема?

Ранг: 3.2 (гость)
Статус: Участник

Создано: 3 июня 2013 12:40 New!
Цитата · Личное сообщение · #16

VodoleY пишет:
тебеж reversecode уже написал как это сделать!!! 1. найти пустое место.. 2. записать свою строку.. 3 подменить адрес на СВОЮ строку.. в чем проблема?
Вообще-то я задал дополнительный вопрос про пустое место. Но да ладно, думаю сам разберусь.


Ранг: 2006.0 (!!!!)
Статус: Модератор
retired

Создано: 3 июня 2013 13:20 New!
Цитата · Личное сообщение · #17

Да где угодно пустое местро. Где найдёшь-всё твоё. Сомневаешься-добавь новую секцию, там точно пустое.

| Сообщение посчитали полезным: yarcom

 eXeL@B —› Вопросы новичков —› Как передать процедуре текстовую константу.

Видеокурс ВЗЛОМ