Форум программистов, компьютерный форум, киберфорум
PascalABC.NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.79/92: Рейтинг темы: голосов - 92, средняя оценка - 4.79
11 / 11 / 16
Регистрация: 07.03.2014
Сообщений: 202

Как можно изменить код программы, если имеем только exe файл?

25.03.2014, 10:10. Показов 18412. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вот, допустим, имеем exe файл с таким кодом
Pascal
1
2
3
4
5
6
7
begin
var a,b,c:integer;
a:=200;
b:=300;
c:=a+b;
writeln(c);
end.
Как можно без сторонних программ изменить, допустим, значение переменной a?Еще раз говорю имеем только exe файл!
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
25.03.2014, 10:10
Ответы с готовыми решениями:

Как конвертивровать apk файл если имеется exe, jar и исходный код программы?
Как конвертивровать apk файл если имеется exe, jar и исходный код программы?

Можно ли вернуть исходный код программы, если exe имеет отладочную информацию
Можно ли вернуть исходный код программы, если программа Debug и имеет отладочную информацию и была компилирована vc110 комиилятором в...

Можно посмотреть код программы exe файла, если знаешь что он написана на языке C#?
Можно посмотреть код программы exe файла, если знаешь что он написана на языке си шарп? И есть где-нибудь сайт где выкладывают простые...

21
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
25.03.2014, 10:24
Лучший ответ Сообщение было отмечено Nikakula как решение

Решение

Цитата Сообщение от Nikakula Посмотреть сообщение
Как можно без сторонних программ изменить
Да никак.
0
11 / 11 / 16
Регистрация: 07.03.2014
Сообщений: 202
25.03.2014, 10:27  [ТС]
Понятно, спасибо
0
Программист
 Аватар для Arigato
307 / 182 / 176
Регистрация: 05.12.2013
Сообщений: 685
Записей в блоге: 5
25.03.2014, 12:42
Цитата Сообщение от Nikakula Посмотреть сообщение
без сторонних программ
А что вообще на компе делается без сторонних программ? Воздействовать непосредственно на ячейки памяти остается. Ну а если допустимо использовать программы, то элементарно заменяется.
0
11 / 11 / 16
Регистрация: 07.03.2014
Сообщений: 202
25.03.2014, 17:36  [ТС]
Arigato_RU, нет, я имел ввиду не использовать всякие уже готовые программы, скачанные из интернет, в которых только кнопочку нажать и все.

Добавлено через 2 минуты
Мне нужно не просто, чтобы программу скачал, кнопочку нажал, и готово, а надо самому во всем процессе разобраться, как это делается!
0
Программист
 Аватар для Arigato
307 / 182 / 176
Регистрация: 05.12.2013
Сообщений: 685
Записей в блоге: 5
25.03.2014, 17:49
Открывай файл с exe, находи то место, где прописано нужное значение, записывай туда новое значение, закрывай файл.
0
 Аватар для gegart
0 / 0 / 0
Регистрация: 28.07.2013
Сообщений: 30
25.03.2014, 17:56
Дружище для того чтобы изменить код программы уже ехе файла, тебе нужно стать спецом в области дисассемблирования. Успехов
0
11 / 11 / 16
Регистрация: 07.03.2014
Сообщений: 202
25.03.2014, 19:25  [ТС]
Arigato_RU, можете поподробнее рассказать про
Цитата Сообщение от Arigato_RU Посмотреть сообщение
Открывай файл с exe, находи то место, где прописано нужное значение, записывай туда новое значение, закрывай файл.
там же одни иероглифы

Добавлено через 1 минуту
Я же правильно понимаю, что разрешение вместо exe надо поменять на txt, и открывать или как то по другому?
0
Программист
 Аватар для Arigato
307 / 182 / 176
Регистрация: 05.12.2013
Сообщений: 685
Записей в блоге: 5
25.03.2014, 19:29
Лучший ответ Сообщение было отмечено Nikakula как решение

Решение

Берем исходную программу:
Pascal
1
2
3
4
5
6
7
8
begin
var a,b,c:integer;
a:=200;
b:=300;
c:=a+b;
writeln(c);
readln;
end.
Компилируем, получаем Program1.exe (можно скачать из вложения).

Теперь пишем программу-патч:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
var
  a,b: integer;
  f: file;
  ok: boolean;
begin
  write('a = '); readln(a);
  write('b = '); readln(b);
  ok:=true;
  try
    assign(f,'Program1.exe');
    reset(f);
    seek(f,$EEE);
    write(f,a);
    seek(f,$EF4);
    write(f,b);
    close(f);
  except
    ok:=false;
  end;
  if ok
    then writeln('OK')
    else writeln('WRONG');
end.
Она просит ввести новые значения переменных, записывает их прямо в Program1.exe. Для этого надо знать адреса, где хранятся значения: $EEE - переменная a, $EF4 - переменная b. Я узнал эти адреса, запустив программу WinHex, открыв в ней Program1.exe и воспользовавшись поиском целых значений. В принципе, такой поиск легко написать на Pascal, просто просматриваем файл и сравниваем с нужным значением, тем самым находим его адрес.
Вложения
Тип файла: rar Program1.rar (4.0 Кб, 24 просмотров)
1
11 / 11 / 16
Регистрация: 07.03.2014
Сообщений: 202
25.03.2014, 19:33  [ТС]
Я просто не такой хакер, как ты можешь объяснить, что значит seek в 14 строчке и как написать эту самую программу поиска адресов переменных, я вообще не понял, что за адрес, объясни пожалуйста)
0
Программист
 Аватар для Arigato
307 / 182 / 176
Регистрация: 05.12.2013
Сообщений: 685
Записей в блоге: 5
25.03.2014, 19:36
seek - переместить указатель файла в нужную позицию. Для поиска адреса качай WinHex и в нем ищи.
0
11 / 11 / 16
Регистрация: 07.03.2014
Сообщений: 202
25.03.2014, 20:00  [ТС]
Ну а все-таки, как написать программу поиска этих адресов

Добавлено через 3 минуты
Понятно, что намного проще скачать программу и сделать, но мне сам принцип интересен, как это делается

Добавлено через 2 минуты
И еще я не понял, вот ты перемещаешь указатель в то место, где записано значение переменной a, и сразу пишешь новое значение, а куда старое девается?
0
Программист
 Аватар для Arigato
307 / 182 / 176
Регистрация: 05.12.2013
Сообщений: 685
Записей в блоге: 5
25.03.2014, 20:03
Цитата Сообщение от Nikakula Посмотреть сообщение
Ну а все-таки, как написать программу поиска этих адресов
Банальная работа с файлами, чтение файла.

Цитата Сообщение от Nikakula Посмотреть сообщение
И еще я не понял, вот ты перемещаешь указатель в то место, где записано значение переменной a, и сразу пишешь новое значение, а куда старое девается?
Старое значение исчезает навсегда
0
11 / 11 / 16
Регистрация: 07.03.2014
Сообщений: 202
25.03.2014, 20:18  [ТС]
Цитата Сообщение от Arigato_RU Посмотреть сообщение
Банальная работа с файлами, чтение файла.
Я понимаю, что работа с файлами, но как найти этот адрес, как определить, что у переменной "a" адрес $EEE?
Pascal
1
2
3
4
var f:text
begin
assign(f,'путь к программе');
reset(f);
напиши хотябы словами, как дальше делать, что именно там надо искать? Надо искать значение 200(для переменной "a"), если так, то найду я его, и как дальше, как найти адрес?
0
Программист
 Аватар для Arigato
307 / 182 / 176
Регистрация: 05.12.2013
Сообщений: 685
Записей в блоге: 5
25.03.2014, 20:25
Ты вообще представляешь, что такое файл? У меня складывается ощущение, что не представляешь.

Вот пример для поиска произвольного значения в бинарном файле, находит только первое встретившееся:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
var
  f: file;
  a,x: integer;
  p,ef: int64;
  found: boolean;
begin
  write('a = '); readln(a);
  assign(f,'Program1.exe');
  reset(f);
  p:=0;
  found:=false;
  ef:=filesize(f)-sizeof(integer);
  while p<ef do begin
    seek(f,p);
    read(f,x);
    if x=a then begin
      writeln(p);
      found:=true;
    end;
    inc(p);
  end;
  close(f);
  if not found then
    writeln('Not Found!');
end.
0
11 / 11 / 16
Регистрация: 07.03.2014
Сообщений: 202
25.03.2014, 20:37  [ТС]
Я не понимаю вот что
там в файл так и будет написано
$EEE=200 или как там будет в файле написано, что "a" = 200
я понимаю, как искать, я не понимаю, что мне надо искать
0
Программист
 Аватар для Arigato
307 / 182 / 176
Регистрация: 05.12.2013
Сообщений: 685
Записей в блоге: 5
25.03.2014, 20:37
200 надо искать. Вообще, рано вы полезли в такие дебри.
0
11 / 11 / 16
Регистрация: 07.03.2014
Сообщений: 202
25.03.2014, 20:40  [ТС]
Pascal
1
ef:=filesize(f)-sizeof(integer);
и можешь еще объяснить эту строчку

Добавлено через 53 секунды
Ну, допустим, я нашел 200, а как узнать адрес?

Добавлено через 1 минуту
А с таким опытным человеком, как вы, можно и не в такие дебри лезть
0
Программист
 Аватар для Arigato
307 / 182 / 176
Регистрация: 05.12.2013
Сообщений: 685
Записей в блоге: 5
25.03.2014, 20:41
Цитата Сообщение от Nikakula Посмотреть сообщение
и можешь еще объяснить эту строчку
Размер файла в байтах минус размер переменной типа integer (оно 4 равно).

Цитата Сообщение от Nikakula Посмотреть сообщение
Ну, допустим, я нашел 200, а как узнать адрес?
Так где нашел, там и адрес.
0
11 / 11 / 16
Регистрация: 07.03.2014
Сообщений: 202
25.03.2014, 20:59  [ТС]
Цитата Сообщение от Arigato_RU Посмотреть сообщение
Размер файла в байтах минус размер переменной типа integer (оно 4 равно).
А зачем это делать?
Цитата Сообщение от Arigato_RU Посмотреть сообщение
Так где нашел, там и адрес.
Вообщем, чтобы проще было, можешь пример написать, как это выглядит

Добавлено через 5 минут
Pascal
1
2
3
4
5
p:=0;
  found:=false;
  ef:=filesize(f)-sizeof(integer);
  while p<ef do begin
    seek(f,p);
А зачем каждый раз указатель возвращать в начало, проверятся же по сути будет одно и тоже слово!
Pascal
1
2
read(f,x);
    if x=a then begin
А здесь, в переменную "x" считывается же вся строчка, как ты можешь проверять равна ли она x, тебе же надо только слово сравнивать?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
25.03.2014, 20:59
Помогаю со студенческими работами здесь

Как можно поворачивать объект если не имеем градусной меры?
Как можно поворачивать объект если не имеем градусной меры? На форме объекты имеют x,y координаты, но градусов нет.

Можно ли узнать исходной код Delphi, если есть только ехе-файл?
можно узнать исходной код delphi. если есть только ехе файл? может есть какая та прога

Как обновить Bios через флэшку, если в обновлении только один файл с расширением .exe (плата MSI)?
Как обновить Bios через флэшку, если в обновлении только один файл с расширением .exe (плата MSI)? Обычно есть еще файл с расширением типа...

Можно ли изменить код готового exe файла?
Есть уже скомпилированный екзешник другой проги.... Мне нужно с помощью фри паскаля, или делфи, открыть этот екзешник, програмно вписать...

Как можно изменить код программы представленной ниже, чтобы изображения менялись местами без кнопки, тое есть произвольно!
Как можно изменить код программы представленной ниже, чтобы изображения менялись местами без кнопки, тое есть произвольно! &lt;html&gt; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru