Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Теоретические вопросы _ исправление Exe файла

Автор: исправление 16.06.2006 15:36

Проблема: Написал курсовик на Pascale. Принес преподу. У него не запустился. Я там пути не абсолютные указал на egavga. Терь он требует исправить это прямо в экзэшнике. Как это сделать?? я открыл его блокнотом нашел строку нужную удалил, а он не запускается

Автор: klem4 16.06.2006 16:11

Ты открыл exe - файл блокнотом и еще нашел что там исправлять ? blink.gif Ты не путаешь экзешник с иcходником ? Возможно препод хотел чтобы ты при инициализации графического режима явно указывал пусть к драйверу ?

т.е например

initgraph(gd, gm, 'c:\TP7\BGI')


?

Автор: volvo 16.06.2006 16:53

Или (что самое надежное) - включить BGI прямо в EXE-шник:
http://forum.pascal.net.ru/index.php?s=&showtopic=3895&view=findpost&p=34541
(смотреть директиву $L)

Автор: SKVOZNJAK 17.06.2006 21:06

Почему это нельзя патчить скомпилированную прогу? Если хватит знаний - на здоровье, но использовать для этого портящий код блокнот nea.gif C:\WINDOWS\system32\edit.com вот это намного лучше. Нужно открыть файл как двоичный и не допускать сдвигов текста: не стирать и не добавлять а только заменять символы.

Автор: Noof 17.06.2006 23:13

согласен. можно и исправить ехешник собсно если интересно =) смотришь и в нужное русло человек уйдет :D

Автор: volvo 17.06.2006 23:30

Вот только ты опять в сторону флейма не уходи, OK? Я больше предупреждать не буду...

Автор: Altair 18.06.2006 17:28

Цитата
и еще нашел что там исправлять ?

почему бы и нет ?
Вернемся к вопросу:
Цитата
Терь он требует исправить это прямо в экзэшнике.

Без проблемм!
Смотри как делал я.
Для тестирования написал программу :
uses graph,crt;
var
gd,gm:integer;
begin
gd:=detect;
initgraph(gd,gm,'c:\prog_sys\bin\');
readkey;
closegraph;
halt;
end.

Далее скомпилировал, проверил все норм.
Естественно если убрать из папки c:\prog_sys\bin\ файл egavga.bgi то программа не инициализирует видео.
Далее я открыл HEX редактором файл программы :
Прикрепленное изображение
И, используя поиск, нашел указанный в программе пусть к драйверу:
Прикрепленное изображение
И строку
Цитата
c:\prog_sys\bin\

(hex:633A5C70726F675F7379735C62696E5C )
заменил на
Цитата
\

(пробелыми заменяем ненужные символы пути)
(hex:5C202020202020202020202020202020 )

Прикрепленное изображение

Все!
Теперь программа работает в любой директории, если в ней находиться файл egavga.bgi
!!! cool.gif

Автору спасибо за интересный вопрос!

Автор: Malice 18.06.2006 20:25

Цитата(Altair @ 18.06.2006 14:28) *

почему бы и нет ?

В данном случае достаточно было по адресу 170 поставить 0 yes2.gif

Автор: Altair 18.06.2006 21:09

Это не очевидно...

p.s. я проверил это действительно так.