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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.05.2012, 16:43   #1
Lauri
Форумчанин
 
Регистрация: 01.04.2010
Сообщений: 171
По умолчанию Патчинг ехе из DLL

Уважаемые знатоки, такой вопрос, можна ли вызовом функции из Длл, пропатчить пару байтов в "родном" ехе?
Сам склоняюсь к варианту что это не возможно, так как процесс запущен и тд. Но всё же.
Lauri вне форума Ответить с цитированием
Старый 05.05.2012, 18:32   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Если в памяти то можно. Так поступают некоторые трейнеры в играх.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 05.05.2012, 20:08   #3
Lauri
Форумчанин
 
Регистрация: 01.04.2010
Сообщений: 171
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Если в памяти то можно. Так поступают некоторые трейнеры в играх.
Ну т.е можна в режиме работы ехе само себя пропатчить через длл на примере следующего кода? (юзаю для патча моей программой другой)
Можете подсказать алгоритм процесса? с изминениями байтов в сторонних программах мало опыта, а тем более из длл да ещё и себя
Код:
...
  f := fileopen(filename, fmOpenReadWrite);
  // 4860-48C8
  for i := 1 to 100 - length(page) do
    page := page + ' ';
  for i := 0 to 99 do
  begin
    p := $A0E8;
    for j := 1 to i do
      p := p + $1;
    c := ord(char(pchar(page[i+1])));
    SetFilePointer(f, p, nil, 0);
    WriteFile(f, c, SizeOf(c), BytesRead, nil);
  end;
...
Lauri вне форума Ответить с цитированием
Старый 05.05.2012, 20:50   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
мало опыта
Аналогично. Знаю что нужно сначала получить права на запись в то место памяти где сидит программа, а потом через WriteProcessMemory уже патчить.
Тут по-моему Грузин выкладывал свою программу для этого посмотри поиском...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 05.05.2012, 21:49   #5
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,434
По умолчанию

не туда....
Человек_Борща вне форума Ответить с цитированием
Старый 06.05.2012, 23:47   #6
Lauri
Форумчанин
 
Регистрация: 01.04.2010
Сообщений: 171
По умолчанию

Кто то подскажет?
Lauri вне форума Ответить с цитированием
Старый 07.05.2012, 02:02   #7
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,434
По умолчанию

Система не даст доступа к физическому файлу запущенной программы.
А вот память программы патчите,сколь вам угодно. Аналогично с файлом можно, но программу придется вырубить для тамошних изменений.
Человек_Борща вне форума Ответить с цитированием
Старый 07.05.2012, 04:39   #8
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,830
По умолчанию

Ну вообще-то можно исхитрится, но это очень низко, не переносимо, сложнова-то и вообще не нужно.
p51x вне форума Ответить с цитированием
Старый 07.05.2012, 11:06   #9
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,434
По умолчанию

Можно, но не нужно.
Человек_Борща вне форума Ответить с цитированием
Старый 30.05.2012, 20:08   #10
Lauri
Форумчанин
 
Регистрация: 01.04.2010
Сообщений: 171
По умолчанию

Задача примерно следующая :
Первый запуск на компьютере.
В программе уже имеется строка к примеру "00000000"
Программа получает серийник жётского диска и меняет/патчит себя же, заменяя "00000000" на серийник HDD.
При следующем запуске проверяет если номер не серийник HDD, программа не запускается.

Такое возможно?
Lauri вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Если есть ЕХЕ, который работает с mySQL базой и сайт тоже с базой. Можно ли прикрутить ЕХЕ на сторону сервера? TwiX Софт 1 18.11.2011 16:14
Патчинг байт памяти процесса CyberMaster C# (си шарп) 2 25.04.2011 19:42
ехе который запускает другой ехе CrOsP Фриланс 12 24.06.2010 18:59
Ошибка при выхове функций Bass.dll из другой DLL SalasAndriy Общие вопросы Delphi 7 21.10.2009 23:36