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

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

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

Автор: ROxY 7.11.2007 11:31

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

Автор: Lapp 7.11.2007 11:58

М
Тема переносится в раздел Теоретические Вопросы



Судя по всему, у тебя исполняемый файл (то есть, грубо говоря, экзешник). Это есть оттранслированная и скомпилированная программа. Процесс трансляции и компиляции, строго говоря, необратим (или обратим неоднозначно). Экзешник ты можешь дизассемблировать и получить код на ассемблере. Его в принципе возможно подредактировать, но это непросто. Средств, переводящих ассемблер в Паскаль я не знаю. Может, другие что подскажут...

Автор: мисс_граффити 7.11.2007 14:14

Откуда она такая взялась?
Если скачал или кто-то дал - Lapp все сказал
А если сам писал - посмотри вокруг, должны быть исходники

Автор: Malice 7.11.2007 15:36

При очень большем желании дописать немножко можно, но в результате у тебя будет тоже только exe-шник, исходники получить будет проблематично.

Автор: ROxY 7.11.2007 18:30

Цитата(Malice @ 7.11.2007 11:36) *

При очень большем желании дописать немножко можно, но в результате у тебя будет тоже только exe-шник, исходники получить будет проблематично.


так мне и надо только exe-шник
каким образом можно попасть в код программы и дописать

Автор: Malice 7.11.2007 19:58

Цитата(ROxY @ 7.11.2007 14:30) *

так мне и надо только exe-шник
каким образом можно попасть в код программы и дописать

Тебе в качестве инструмента понадобится программка hiew.exe (ищется гуглем). Все что необходимо добавить пишется в ней на ассемблере и сохраняется. Могу расписать подробнее весь процесс, как это выглядит в теории (т.к. мы в теоретическом разделе smile.gif ). Не знаю разрешат ли админы, но если ты приложишь екзешник, то объяснить будет проще..

Автор: ROxY 7.11.2007 20:07

вообщем файлик не добавляется
мне нужно записать вот это
writeln('a*x^3+bx+c');
writeln('a*sin(x+b)+c');
writeln('a*ln(abs(x+b)+c;)
вот и всё..

Автор: Malice 7.11.2007 21:04

Цитата(ROxY @ 7.11.2007 16:07) *

вообщем файлик не добавляется
мне нужно записать вот это
вот и всё..


Приду домой попробую набросать подробный план действий smile.gif

Автор: Lapp 8.11.2007 5:46

Цитата(Malice @ 7.11.2007 15:58) *

если ты приложишь екзешник, то объяснить будет проще..

В виде исключения, разрешается smile.gif. Заархивируй его раром, зипом или чем хочешь, и прикладывай. Кстати, тогда он вдвойне оправдает название темы smile.gif))). Поневоле вспомнишь Фонвизина..

Malice, покажи, что программисы не зря свой хлеб едят..

Автор: ROxY 8.11.2007 15:33

вот..


Прикрепленные файлы
Прикрепленный файл  _.rar ( 23.56 килобайт ) Кол-во скачиваний: 130

Автор: Malice 8.11.2007 17:21

Проверь вот такой вариант:
Прикрепленный файл  progra2.zip ( 24.69 килобайт ) Кол-во скачиваний: 315

Вариантов для подобных манипуляций много.. Для твоего случая я выбрал самый простой - т.к. в самом начале программы уже стоит write('введите номер уровнения 1 2 3'), я просто подменил адрес строки, передаваемой как параметр для функции write на другой. Нашел более-менее свободное место (сообщения об ошибках всяких smile.gif ) и записал туда все необходимые тебе строки.
В общем случае можно поступать так:
- найти место, в которой хотелось бы что-то добавить;
- запомнить команду, которая в итоге будет замещена;
- поставить на нее переход в свободное место, где и написать весь необходимый код и ту самую запомненную команду;
- вернуться обратно, на следующую за переходом команду.
Свободное место ищется по разному.. Можно заместить некоторые неиспользуемые функции модулей Crt или Graph или еще как.. Главное тут не промахнутся smile.gif

Автор: ROxY 9.11.2007 17:58

большой сЭнкс))