Сейчас на форуме: vsv1, Alf (+4 невидимых)

 eXeL@B —› Вопросы новичков —› Вопрос по созданию патча на Дельфи. Неправильно записывает файл...
Посл.ответ Сообщение

Ранг: 0.2 (гость)
Активность: 0=0
Статус: Участник

Создано: 18 августа 2015 15:03
· Личное сообщение · #1

Решил сделать патч для проги. Чтобы не вручную заменять код в WinHEX, а прога делала это автоматически. Делаю это в дельфи, но возникает проблема: после записи, он изменяет .ехе файл совсем не так, как нужно. Например я создал полностью пустой .exe файл (сначала пустой блокнот, потом заменил txt на ехе). И написал прогу, чтобы она записывала в него ровно один символ. Вод код:

Code:
  1. AssignFile(myFile, '2.EXE');
  2. Rewrite(myFile);
  3.   Seek(myFile, 1);
  4.   ChW:=Char(65);
  5.   BlockWrite(myFile, ChW, 1);
  6.   CloseFile(myFile);


После выполнения проги, открыв ехешник в WinHex вижу вот это:

Offset 0 1 2 3 4 5 6 7 8 9 A B C D E F

00000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00000040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00000050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00000060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00000070 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00000080 41 AC FD 12 00 46 8F 05 52 40 83 D7 00 C0 93 05 A¬э FЏ R@ѓЧ А“
00000090 52 37 00 03 00 37 00 00 00 03 00 00 00 00 00 00 R7 7
000000A0 00 00 00 00 00 41 00 00 00 11 00 00 00 9C FE 12 A њю
000000B0 00 40 83 D7 00 24 FE 12 00 3E 8A 05 52 9C FE 12 @ѓЧ $ю >Љ Rњю
000000C0 00 87 0F EC 00 40 83 D7 00 01 B4 37 7E F0 F2 67 ‡ м @ѓЧ ґ7~ртg
000000D0 00 00 00 00 00 00 00 07 00 02 02 00 00 00 00 00
000000E0 00 EE 1D 00 10 00 00 00 00 00 00 00 00 02 02 00 о
000000F0 00 D4 FC 12 00 01 B4 37 7E 00 BB 64 00 00 00 03 Фь ґ7~ »d

Он добавил не только, то что я написал Char(65) но еще целую кучу кода.

1) Это норма?
2) Делали ли вы рабочие патчи на дельфи?
3) Можно ли пример кода?



Ранг: 419.0 (мудрец), 647thx
Активность: 0.460.51
Статус: Участник
"Тибериумный реверсинг"

Создано: 18 августа 2015 15:14
· Личное сообщение · #2

Я конечно не спец в делфях. Но, здравый рассудок подсказывает, что косяк где-то в самом начале, при открытии файла - посему надо лучше знать, какие параметры принимает служебная функа и что передается по умолчанию, если параметр явно не указан.
Если всё таки не полениться и погуглить, то можно найти такой пример: --> Link <--.

Методом дедукции можно предположить, что проблема кроется здесь:
Code:
  1.  ReWrite(myFile, 4); // Определение отдельной 'записи' как 4 байта


| Сообщение посчитали полезным: ludendorff

Ранг: 106.6 (ветеран), 7thx
Активность: 0.040.02
Статус: Участник

Создано: 18 августа 2015 15:16 · Поправил: digger70
· Личное сообщение · #3

Внимательно читать http://www.delphibasics.ru/ReWrite.php

| Сообщение посчитали полезным: ludendorff


Ранг: 324.3 (мудрец), 222thx
Активность: 0.480.37
Статус: Участник

Создано: 18 августа 2015 15:19
· Личное сообщение · #4

ludendorff пишет:
После выполнения проги, открыв ехешник в WinHex вижу вот это:

Это ж не exe-шник

где дос-сигнатура? где пе-хидер?

ludendorff пишет:
Решил сделать патч для проги. Чтобы не вручную заменять код в WinHEX, а прога делала это автоматически. Делаю это в дельфи, но возникает проблема: после записи, он изменяет .ехе файл совсем не так, как нужно. Например я создал полностью пустой .exe файл (сначала пустой блокнот, потом заменил txt на ехе). И написал прогу, чтобы она записывала в него ровно один символ. Вод код:

Мозговыносящее словоблудие...
Сосредоточьтесь, напишите грамотно по-русски, и тогда больше шансов, что Вам помогут

-----
IZ.RU




Ранг: 0.2 (гость)
Активность: 0=0
Статус: Участник

Создано: 18 августа 2015 15:21
· Личное сообщение · #5

ELF_7719116 пишет:
сяк где-то в самом начале, при открытии файла

Да, похоже ошибка где-то здесь, спасибо.




Ранг: 324.3 (мудрец), 222thx
Активность: 0.480.37
Статус: Участник

Создано: 18 августа 2015 15:24
· Личное сообщение · #6

ELF_7719116, digger70, ludendorff, вы сговорились, чтобы кому-то мозг взорвать?

-----
IZ.RU




Ранг: 431.7 (мудрец), 390thx
Активность: 0.730.32
Статус: Участник

Создано: 18 августа 2015 15:30 · Поправил: dosprog
· Личное сообщение · #7

ludendorff пишет:

Code:
  1. AssignFile(myFile, '2.EXE');
  2. Rewrite(myFile);
  3.   Seek(myFile, 1); <-------------!!!
  4.   ChW:=Char(65);
  5.   BlockWrite(myFile, ChW, 1);
  6.   CloseFile(myFile);


Seek(myFile, 0);





Ранг: 45.7 (посетитель), 40thx
Активность: 0.030
Статус: Участник

Создано: 18 августа 2015 15:30
· Личное сообщение · #8

Бред какой то.
Как это создать ехе в блокноте?А отлаживать в калькуляторе?
Есть же DUP,UPPP

| Сообщение посчитали полезным: DenCoder, Jaa

Ранг: 0.2 (гость)
Активность: 0=0
Статус: Участник

Создано: 18 августа 2015 15:38
· Личное сообщение · #9

dosprog пишет:
Да, спасибо. Понял, что в Rewrite нужно параметр добавлять. А Seek не важно в моем случае, я хотел проверить как сработает прога

igorca пишет:
Бред какой то.
Как это создать ехе в блокноте?

Чтобы посмотреть как запишется текст в файл. Если бы я выбрал не пустой, а рандомный ехешник, то даже не заметил, что он вместо одного пишет 128 символов



Ранг: 95.1 (постоянный), 247thx
Активность: 0.260.01
Статус: Участник

Создано: 18 августа 2015 15:51 · Поправил: unknownproject
· Личное сообщение · #10

Книжка по 7ой дельфи, любая -> Раздел работы с файлами.Совсем уже обленились.

-----
TEST YOUR MIGHT


| Сообщение посчитали полезным: DenCoder
 eXeL@B —› Вопросы новичков —› Вопрос по созданию патча на Дельфи. Неправильно записывает файл...
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати