Вверх ↑
Этот топик читают: Гость
Ответов: 28
Рейтинг: 14
#16: 2011-09-28 14:57:14 ЛС | профиль | цитата
1nd1g0
Спасибо за подсказку.

Tad писал(а):
или скачай готовый HTX-редактор.

HEX-редактор есть, раньше все изменения делались через HEX-редактор, а теперь хочецоо слепить такой простенький патч

Assasin
Assasin писал(а):
размеры файлов пропатченного и старого заведомо одинаковы?


да

Через HEX-редактор это делалось так; открывался файл, выделялись первый и последний блок (на фото в сообщении №1 это 4 до 8) и вместо их вставлялись другие данные (на примере это вместо 11111 вставлено 22222), размер файла при этом не увеличивался.
ВСЕ.

Тоисть это весь процесс того, что требуется от патчера. Буду благодарен если поможете.
карма: 0

0
Ответов: 1535
Рейтинг: 176
#17: 2011-09-28 15:09:05 ЛС | профиль | цитата
azurin писал(а):
Необходимо вставить данные например между 4 и 8 байтом
т.е. эти данные расположены не известно где и сколько? По подробнее пожалуйста.
карма: 1
Не так страшна ошибка, как опасность её не заметить.

0
Ответов: 28
Рейтинг: 14
#18: 2011-09-28 15:31:21 ЛС | профиль | цитата
ser_davkin писал(а):
эти данные расположены не известно где и сколько?



вставляемые данные я так понимаю лучше распотожить в компоненте MemoryStream. (вот эти даные 22222)
карма: 0

0
Ответов: 1535
Рейтинг: 176
#19: 2011-09-28 15:46:49 ЛС | профиль | цитата
Нужно заменить данные это я понял. Ты пишешь "например между 4 и 8 байтом", это значит блок может находится где угодно, а может и не один? Или его координаты уже известны?
карма: 1
Не так страшна ошибка, как опасность её не заметить.

1
Голосовали:azurin
Ответов: 28
Рейтинг: 14
#20: 2011-09-28 15:53:56 ЛС | профиль | цитата
да, координаты иэвестны и блок один (так как показано на фото в редакторе WinHEX)
мне главное понять какие компоненты связать между собой, и если что я сам подравлю
Спасиб!
карма: 0

0
Ответов: 1073
Рейтинг: 76
#21: 2011-09-28 15:55:38 ЛС | профиль | цитата
По идеи
azurin писал(а):
tom-it писал(а)
или может эти данные постоянны?


да, постоянны


tom-it писал(а)
всегда одни и те же данные в одно и тоже место?


да


Но лучше так
Вписываем в .txt файл расположение, количество и значение для замены. Далее согласно записям в файле изменяем необходимые байты.
карма: 0

0
Ответов: 28
Рейтинг: 14
#22: 2011-09-28 16:01:44 ЛС | профиль | цитата
tom-it писал(а):
Вписываем в .txt файл расположение, количество и значение для замены. Далее согласно записям в файле изменяем необходимые байты.


ну да идея правильная, а реализовать то как

карма: 0

0
Разработчик
Ответов: 4697
Рейтинг: 426
#23: 2011-09-28 18:34:38 ЛС | профиль | цитата
azurin, как буду за компьютером, реализую с минимальными размерами патчей.
карма: 10
0
Ответов: 28
Рейтинг: 14
#24: 2011-09-28 18:39:53 ЛС | профиль | цитата
Assasin
Спасибо !
карма: 0

0
Ответов: 131
Рейтинг: 15
#25: 2011-09-28 18:43:47 ЛС | профиль | цитата
azurin писал(а):
а реализовать то как
для начала, так
code_25282.txt
карма: 0

0
файлы: 1code_25282.txt [1.7KB] [187]
Ответов: 1535
Рейтинг: 176
#26: 2011-09-28 18:58:31 ЛС | профиль | цитата
Пример работает с текстовым файлом на бинарном уровне, сохраняя изменённый файл отдельно. Измени фильтр расширений файлов под себя и всё!

Add(LineBreakEx,5162647,532,231)
{
Type=3
link(_Data,10051208:Stream,[])
}
Add(DoData,2121044,420,196)
{
Data=Integer(8)
link(onEventData,3996864:doPosition,[])
}
Add(Memory,1997759,350,280)
{
@Hint=#21:То что нужно вставить|
Default=String(""""")
AddHint(-10,-36,130,13,@Hint)
}
Add(StreamConvertor,11782311,350,322)
{
Mode=7
link(onResult,8478240:doCopy,[])
link(Data,1997759:Value,[])
}
Add(StreamCopy,8478240,406,322)
{
Count=5
link(onCopy,1107729:doCopy,[])
link(Dest,7856340:getVar,[])
}
Add(LineBreakEx,7856340,406,294)
{
Type=2
}
Add(StreamCopy,13862299,259,315)
{
Count=4
link(onCopy,15753517:doEvent1,[])
link(Dest,6336548:getVar,[])
link(Source,2901884:Var1,[(272,271)])
}
Add(Button,3152175,203,315)
{
Left=275
Top=80
Width=110
Height=40
Caption="Патч"
link(onClick,13862299:doCopy,[])
}
Add(Hub,15753517,308,315)
{
link(onEvent1,2121044:doData,[(335,321)(335,202)])
link(onEvent2,11782311:doConvert,[])
}
Add(LineBreakEx,6336548,259,287)
{
Type=2
}
Add(StreamCopy,1107729,469,322)
{
link(Dest,16523226:getVar,[])
link(Source,2901884:Var2,[])
link(Count,7485691:reCalc,[(489,293)(496,293)])
}
Add(MathParse,7485691,483,231)
{
DataCount=1
MathStr="%1 - 5"
ResultType=0
Point(reCalc)
link(X1,3996864:Size,[])
}
Add(LineBreakEx,16523226,469,287)
{
Type=2
}
Add(FileStream,3996864,476,182)
{
Point(doPosition)
link(onLoad,10051208:doOpen,[])
}
Add(ODialog,11268351,385,133)
{
Filter="txt|*.txt"
FileName="Текстовый файл"
link(onExecute,2205564:doEvent1,[])
}
Add(Button,343284,336,133)
{
Left=155
Top=80
Width=110
Height=40
Caption="Открыть"
link(onClick,11268351:doExecute,[])
}
Add(FileStream,10051208,532,182)
{
Mode=1
AutoCopy=0
Point(doPosition)
Point(doCopyFromStream)
link(FileName,9491255:FString,[])
}
Add(Hub,2205564,434,133)
{
link(onEvent1,11778070:doPart,[])
link(onEvent2,3996864:doOpen,[(462,146)(462,188)])
}
Add(FilePartElm,11778070,476,133)
{
Mode=2
link(onPart,9491255:doString,[])
}
Add(FormatStr,9491255,532,133)
{
DataCount=1
Mask="%1(патч).txt"
Point(FString)
}
Add(GetDataEx,2901884,476,266)
{
link(Data,3996864:Stream,[])
}
карма: 1
Не так страшна ошибка, как опасность её не заметить.

1
файлы: 1code_25284.txt [2.8KB] [159]
Голосовали:azurin
Ответов: 3851
Рейтинг: 159
#27: 2011-09-28 19:32:10 ЛС | профиль | цитата

В публикаторе (правой кнопкой мыши на заголовке проекта - меню "список проектов"), в разделе FileSystem есть простой побайтовый файловый редактор (http://www.hiasm.com/sha/shatools.php?q=5&id=50 - первую строчку не копируй) - это для расширения кругозора...
карма: 0
начавший
0
Разработчик
Ответов: 4697
Рейтинг: 426
#28: 2011-09-28 20:18:36 ЛС | профиль | цитата
azurin, куда тебе скинуть схему? Или можно прямо сюда?

------ Добавлено:

azurin, скинул в личку на форуме, если что не так, обращайся.
карма: 10
0
Ответов: 28
Рейтинг: 14
#29: 2011-09-28 20:37:52 ЛС | профиль | цитата
Assasin
Assasin писал(а):
azurin, куда тебе скинуть схему? Или можно прямо сюда?


лучше сюда? у меня ЛС не работает
==============================================================================

так-же кому ключи говорите мыло или ICQ или любой другой способ передачи кроме ЛС

карма: 0

0
Разработчик
Ответов: 4697
Рейтинг: 426
#30: 2011-09-28 20:45:25 ЛС | профиль | цитата
Assasin писал(а):

Вот, сделал программу патчер. Алгоритм работы:
1. Считывает байт из old file.
2. Считывает байт из new file.
3. Сравнивает считанные байты.
4. Если различны, сохраняет этот байт в буфер.
5. Если равны, записывает в patch-файл позицию начала различия блока файла, потом размер блока различий, затем само различие, буфер очищается.
6. Повторить п1-п5 до конца файла.
7. Выполнить п5 без проверки условия равенства (ничего не сравнивается).
8. Вывести сообщение о завершении создания патч-файла

patcher.rar


почта: i"мой_ник"собака яндекс.ру

Вместо "мой_ник" подставить мой ник на этом форуме
карма: 10
1
Голосовали:azurin
Сообщение
...
Прикрепленные файлы
(файлы не залиты)