Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.01.2010, 22:43   #1
garyanikin
Дизайнер, Кодер.
Пользователь
 
Аватар для garyanikin
 
Регистрация: 31.12.2009
Сообщений: 45
По умолчанию Билдер в Delphi

Здравствуйте.
Мне нужно создать билдер.
Есть программа написанная мною и нужно менять в ней некоторые параметры из другой программы как это возможно реализовать?
Заранее спасибо.
garyanikin вне форума Ответить с цитированием
Старый 15.01.2010, 01:30   #2
GvR
Пользователь
 
Аватар для GvR
 
Регистрация: 03.11.2009
Сообщений: 29
По умолчанию

Очень интересная тема! Сам давненько этим интересуюсь
GvR вне форума Ответить с цитированием
Старый 15.01.2010, 01:55   #3
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

например, через обмен сообщениями wm_copydata... на блоге выложен подробный пример... или через сокеты, вариантов множество.
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 15.01.2010, 01:58   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

в запущенной проге?
или создавать новый exe с новыми данными?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 15.01.2010, 02:35   #5
GvR
Пользователь
 
Аватар для GvR
 
Регистрация: 03.11.2009
Сообщений: 29
По умолчанию

Новий .exe
GvR вне форума Ответить с цитированием
Старый 15.01.2010, 02:41   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

ну если текстовые данные то очень просто...а вот если числовые...integer и тд...то труднее.

для текста в программе болванке задаем текстовую константу длиною 255 допустим из '0'(символа 0), потом через Хекс редактор находим смещение этой константы и перезаписываем её(в конструкторе через FileStream например)...но помните, что нельзя превышать длину.
можно уменьшить её..заполнив излишек #0
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.

Последний раз редактировалось mihali4; 15.01.2010 в 22:58.
Пепел Феникса вне форума Ответить с цитированием
Старый 15.01.2010, 03:35   #7
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

Project -> Options -> Linker, Map file: Publics
Компилируем, получаем карту файла с адресами всех структур project1.map
Код:
 Start         Length     Name                   Class
 0001:00000000 0004CC20H .text                   CODE
 0002:00000000 00001130H .data                   DATA
 ...

 Address         Publics by Name
 ...
 0002:00000D3C   testvar
По нему узнаём, что переменная testvar (она у нас cardinal, 4 байта) в секции #2 (.data) по смещению 00000D3Ch
Грузим экзешник в любой PE-редактор (PE Tools, DiE, PEID), смотрим смещение секции .data (Raw Offset, в данном случае 4D200h), прибавляем смещение переменной D3Ch, получаем физический адрес в файле 4DF3Ch - именно там лежат эти заветные 4 байта



Переменная должна быть глобальной инициализированной переменной или константой, иначе она попадёт в секцию неинициализированных данных и в файле её не будет.
Ещё там обратный порядок следования байт: число 1234ABCD будет храниться как CDAB3412

Написание собственно патчера на вашей совести, это несложно, главное знать сколько байт писать и куда (TFileStream.Create, Seek, Write, Free).
Если всё это для трояна - шлю лучи поноса
пыщь
JTG вне форума Ответить с цитированием
Старый 16.01.2010, 03:50   #8
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

Заведи в программе несколько переменных
Код:
var size: cardinal = 1024;
     ext: array[0..2] of char = ('t','x','t');
     ...
Получится экзешник, назовём его stub.exe, который по умолчанию создаёт текстовик в 1 кб. Доводишь его до ума, узнаёшь адреса, по которым хранятся эти переменные (как описано выше) и больше его не изменяешь.

Билдер будет хранить stub.exe в ресурсах, при необходимости извлекать в память, править переменные по нужным адресам (TResourceStream.Seek, TResourceStream.Write) и записывать на диск (TResourceStream.SaveToFile). Написал же "Мне нужно создать", вот и создавай, пинок в нужном направлении тебе дали

И не нужно создавать кучу тем, сообщения с ссылками на файлообменники отмечаются как потенциальный спам, поэтому отображаются не сразу, а только после проверки модератором
пыщь
JTG вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Портативный С++ Билдер Syltan Общие вопросы C/C++ 0 17.11.2009 22:50
Не работает Билдер!:( freedom_fighter Помощь студентам 0 03.05.2009 22:28
Конструкторы С++ Билдер prikolist Общие вопросы C/C++ 5 02.05.2009 17:40
из Visual C++ в C++ Билдер ГЫнок Общие вопросы C/C++ 0 19.03.2009 16:58