Сейчас на форуме: Magister Yoda, subword (+9 невидимых)

 eXeL@B —› Основной форум —› Изменение вычислений в программе
Посл.ответ Сообщение

Ранг: 2.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 25 июня 2008 02:01
· Личное сообщение · #1

Привет всем!

Нужен совет по внедрению в бинарный код программы и его изменения.

Есть программа написанная на Delphi. Она делает простые вычисления на основе введенных в TextBox-ы значений. Результаты вычислений отображаются в других TextBox-ах.
Все вычисления ведутся на основании простых формул.
Задача в том, чтобы изменить формулы уже в готовой программе.

Я тут поразмыслил, и пришел вот к чему:
Написать прогу, которая будет внедряться в адресное пространство программы где делаются вычисления (соотв протрассировав заранее), сделать свои вычисления и показать результат в TextBox.

Что посоветуете сделать? Может есть другие идеи?

Заранее Спасибо!




Ранг: 238.8 (наставник), 67thx
Активность: 0.20
Статус: Участник
CyberHunter

Создано: 25 июня 2008 08:05
· Личное сообщение · #2

Делайте, какие проблемы Имхо, код там несложный будет и инфы вроде много. Только вот зачем писать программу и каждый раз внедрятся в процесс?! Не лучше ли будет один раз исправить нужные алгоритмы в программе и сохранить все изменения, тогда как минимум отпадет необходимость писать лоадер.

-----
Nulla aetas ad discendum sera




Ранг: 2.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 25 июня 2008 08:12
· Личное сообщение · #3

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




Ранг: 126.7 (ветеран)
Активность: 0.140
Статус: Участник
#CCh

Создано: 25 июня 2008 08:21
· Личное сообщение · #4

Могут в 2х случаях:
1. приложения грузится не по имэдж бэйс - релоки
2. функи нходятся в длл

Если не в длл, то обращайся к ним не по прямым оффсетам, а по разнице адресов.

-----
invoke OpenFire





Ранг: 238.8 (наставник), 67thx
Активность: 0.20
Статус: Участник
CyberHunter

Создано: 25 июня 2008 08:32 · Поправил: Flint
· Личное сообщение · #5

4matic пишет:
будут ли меняться адреса подпрограмм при каждой загрузке, если да то как вычислить офсет нужной?


Тогда пиши базовонезависимый код, начало к примеру такое:
call $+5
pop eax

и уже от того что в eax и пляши.

Либо вариант: если нужно править код в dll, то вызываешь LoadLibraryA с именем нужной dll - возвращает ImageBase dll, если править код exe, то можно получить адрес ImageBase и PEB структуры

MOV EAX,DWORD PTR FS:[30]
MOV EAX,DWORD PTR DS:[EAX+8]

-----
Nulla aetas ad discendum sera



 eXeL@B —› Основной форум —› Изменение вычислений в программе
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати