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

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

25.03.2014, 10:10. Показов 18271. Ответов 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
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,168
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
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru