Сейчас на форуме: Rio, site-pro, -Sanchez-, artyavmu (+6 невидимых)

 eXeL@B —› Софт, инструменты —› WCRPatcher
<< 1 ... 9 . 10 . 11 . 12 . 13 . 14 . 15 . 16 . 17 . 18 . 19 . >>
Посл.ответ Сообщение

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

Создано: 24 декабря 2006 18:50 · Поправил: Модератор
· Личное сообщение · #1

WCRPatcher - универсальный патчер

Подробнее... http://www.wcrpro.net/?id=1

Последняя версия http://www.wcrpro.net/?id=3

Буду благодарен за отзывы и предложения.



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

Создано: 14 января 2011 16:53
· Личное сообщение · #2

Kindly как ты себе представляешь массивный патчинг? в деталях....




Ранг: 275.9 (наставник), 340thx
Активность: 0.22=0.22
Статус: Участник
RBC

Создано: 14 января 2011 17:24 · Поправил: Kindly
· Личное сообщение · #3

В моем понимании, когда байты патчаться не по смещениям, а по анализу двух массивов обеих файлов. В полученном результирующем файле, должны находиться только изменения, при внесении которых патченый файл должен по структуре совпадать с патченым оригиналом (который у крэкера). Именно так делает либа DeltaMax - сканирует два файла, получает патч-файл с изменениями, вносит изменения. Ради интереса возьми два непакованых файла, поправь ресурсы редактором ресурсов, сравни в DeltaMax и в Dup например. Либа сгенерирует только изменения в несколько байт или килобайт, а дуп будет шустрить по оффсетам, которые поменялись, и результирующий патч будет внушительных размеров.

Думаю, ты разобрался, на всякий случай:
Source: Оригинал
Target: Патченый
Diff file: результирующий патч-файл

Encode: сравнить и сгенерировать патч-файл
Decode: применить патч файл к указанному Source файлу, сохранив его как указанный Target файл.
(это пример MFC60Client.exe)

Ты имел ввиду что сам реализуешь такой патчинг? Я лишь хотел сэкономить твое время. Сам, так сам.

-----
Array[Login..Logout] of Life




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

Создано: 14 января 2011 18:39
· Личное сообщение · #4

Дело в том что я еще не предумал что да как




Ранг: 275.9 (наставник), 340thx
Активность: 0.22=0.22
Статус: Участник
RBC

Создано: 14 января 2011 22:29 · Поправил: Kindly
· Личное сообщение · #5

По точно такому же принципу еще работает VPatch, который можно прикручивать к инсталяторам NSIS и Inno, но дело не в этом. Можешь глянуть: http://www.tibed.net/files/vpatch32.exe
Самый интересный сорец - Patch Generator (C++), будет тут:
Source\GenPat32\PatchGenerator.cpp
Лучше самому конечно накодить, чем прикручивать тяжеленькую буржуйскую dll, да и еще требующей ActiveX регистрации.

-----
Array[Login..Logout] of Life




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

Создано: 15 января 2011 11:20 · Поправил: WatCheR
· Личное сообщение · #6

Учебу закончил сегодня, с женщиной почти расстался... Щас пробухаюсь чуть и за дело.

Kindly стукни мне в аську если можешь))




Ранг: 275.9 (наставник), 340thx
Активность: 0.22=0.22
Статус: Участник
RBC

Создано: 16 января 2011 12:27
· Личное сообщение · #7

WatCheR пишет:
стукни мне в аську если можешь))

Нэт аска

Есть предложения, а ты уже рассматривай:
1. Встроить в патчер резчик байтов по шаблону (иногда бывает полезно вырезать кусок байтов из бинарников, можно будет резать xml, да и ini там всякие и т.д.)
2. Сделать опцию удаления цифровой подписи после патчинга (исходники есть у Jupiter-а, если что)

-----
Array[Login..Logout] of Life




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

Создано: 16 января 2011 15:33 · Поправил: WatCheR
· Личное сообщение · #8

Kindly пишет:
Нэт аска

жабер?

Kindly пишет:
Встроить в патчер резчик байтов по шаблону

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

Kindly пишет:
Сделать опцию удаления цифровой подписи после патчинга

Вот это я считаю дельным предложением, сразу появилась мысль сделать опцию установки правильной CRC в РЕ заголовке. надо?




Ранг: 275.9 (наставник), 340thx
Активность: 0.22=0.22
Статус: Участник
RBC

Создано: 16 января 2011 16:51 · Поправил: Kindly
· Личное сообщение · #9

WatCheR пишет:
можно, только опиши чуть подробней как оно будет работает.

например, указываются байты до начала отрезаемых (шаблон start), и байты после окончания (шаблон end) - содержимое между ними отрезается, а сам файл естественно склеивается и сохраняется. Могут например в оверлеях хранится пошифрованые пароли к содержимому, которые можно срезать или там шелуха всякая типа цифровой подписи или ватермарков. К резчику можно было еще сделать и действие наоборот, т.е. добавлять байты между указанными шаблонами, это в основном служило бы для правки текстовых файлов. У дияблы почти такая фишка реализована (Text Patch), но предложеная будет более суровая и универсальная.

WatCheR пишет:
надо?

да, некрасиво, когда ЦП остается недействительной после патча CRC тоже можно, хотя это особо не важно.

Как-то давно просил диаблу сделать process killer, чтобы перед патчингом требуемый процесс (или процессы) автоматом прекращались, но что-то он не захотел это делать. Не знаю, полезно это или нет, но зачем юзеру лишний раз лезть в диспетчер задач, если патчится сервис какой или прога в трее где-то?

-----
Array[Login..Logout] of Life




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

Создано: 16 января 2011 16:56
· Личное сообщение · #10

Kindly пишет:
служило бы для правки текстовых файлов

Вот это кстати тоже очень дельное предложение, как и с цифровой подписью.
WatCheR
в планах поддержка скинов есть? еще можно опционально сделать и эбаут и нфовьювер одновременно




Ранг: 337.6 (мудрец), 224thx
Активность: 0.210.1
Статус: Участник
born to be evil

Создано: 16 января 2011 16:58
· Личное сообщение · #11

Чексумму можно обнулять, она нахрен не нужна. Сертификат резать - ума особо не нужно, просто глянуть в PE заголовок. А вот умники типа резать-добавлять - приведите алго Можете в hiev попробовать, с сохранением работоспособности

-----
От многой мудрости много скорби, и умножающий знание умножает печаль





Ранг: 275.9 (наставник), 340thx
Активность: 0.22=0.22
Статус: Участник
RBC

Создано: 16 января 2011 17:00 · Поправил: Kindly
· Личное сообщение · #12

ajax пишет:
А вот умники типа резать-добавлять - приведите алго Можете в hiev попробовать, с сохранением работоспособности

Никто не говорит, что это для PE. С ними конечно сложно, высчитывать размеры секций, адреса - этого никто не просит.
Kindly пишет:
1. Встроить в патчер резчик байтов по шаблону (иногда бывает полезно вырезать кусок байтов из бинарников, можно будет резать xml, да и ini там всякие и т.д.)


ressa пишет:
в планах поддержка скинов есть?

сначала функционал

-----
Array[Login..Logout] of Life




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

Создано: 16 января 2011 17:28
· Личное сообщение · #13

Kindly
Да, не спорю, это в первую очередь! Я просто так долго ждал возвращения автора и возрождения проекта, что хочется в перед заглянуть)))



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

Создано: 16 января 2011 21:19
· Личное сообщение · #14

Kindly process killer я уже давно задумал... но вот почему-то все забывают про такую штуку как консоль. это конечно не bash но можно делать вполне универсальные патчи. тот же убица процессов, остановка-запуск служб, импорт файлов реестра (в месте с Add Files), запускать свои/чужие ехе и многое другое. не от балды же я это делал

функционал в первую очередь, что тут говорить, еще движок не допилен. скины в приоритете в будушем.



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

Создано: 21 января 2011 06:21
· Личное сообщение · #15

С процессами какие еще манипуляции будем производить? Убивать/запускать?




Ранг: 109.3 (ветеран), 55thx
Активность: 0.060
Статус: Участник
Yes! I_m noob!

Создано: 21 января 2011 06:39
· Личное сообщение · #16

WatCheR пишет:
Убивать/запускать

А что ещё надо?
Ну если только "приостанавливать", только не вижу практической пользы в том.

-----
z+7v+/Lq4CAtIO/l8OL76SD44OMg6iDv8O7i4OvzLiCpIMPu7OXwINHo7O/x7u0=




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

Создано: 21 января 2011 16:20 · Поправил: WatCheR
· Личное сообщение · #17

Нарисовалось пару вопросов.

Что еще в классический offset patch добавить? Что у нас есть: имя файла, check size, check crc, backup, save options и думаю добавим выпиливание сертификатов + имеем стандартный список изменяемых байт и смещений с возможностью сравнения файлов и ручное изменение/добавление/очистка данных.

Переменные среды нам надо? И вообще в предидущей версии была фитча доставать пути к каталогу/файлу из реестра. В некоторых случаях это довольно таки удобно, юзеру не надо кидать патч в каталог. На сколько это актуально? И нужны ли свои переменные среды?


ADD: Прошу отписатся всех у кого имеются замечания/дополнения/идеи т.к. лучше это организовать сейчас (на стадии проектирывания) чем потом допиливать и заниматся сексом с готовым.



Ранг: 129.0 (ветеран), 116thx
Активность: 0.060
Статус: Участник

Создано: 21 января 2011 16:35
· Личное сообщение · #18

WatCheR пишет:
предидущей версии была фитча доставать пути к каталогу/файлу из реестра.

Это действительно очень удобно и если это будет реализовано в новой версии, то было бы неплохо.

-----
We do what we want because we can.




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

Создано: 21 января 2011 17:42
· Личное сообщение · #19

WatCheR Да, это все правильно, доставать из реестра - довольно удобно. удаление сертификатов тоже надо и надо текстовый патченг, как писал уважаемый Kindlyудачного развития проекта, нужный софт кодишь!




Ранг: 275.9 (наставник), 340thx
Активность: 0.22=0.22
Статус: Участник
RBC

Создано: 21 января 2011 21:00 · Поправил: Kindly
· Личное сообщение · #20

WatCheR пишет:
Переменные среды нам надо?

Вроде как патчинг может понадобиться в System, ApplicationData или CommonFiles и т.д. но это так редко на практике, может и надо, но в одну из последних очередей.

Наверное, есть смысл сделать Silent Mode, в нем же опции: делать ли бэкап, удалять ли сертификат. На практике такие патчи могут вшиваться в инсталляторы софта или игр, например, для тихой русификации (это если ты реализуешь "патчинг массивов").

Я выложил небольшую прогу, в которой ты можешь посмотреть сам принцип работы "массивного патчинга" (на основе DeltaMAX). Хотелось бы что-то на подобие в твоем будущем патчере.
http://rghost.ru/4027196
(только в этой проге есть баг - некорректная обработка и создание нерабочего патча, если ключевые файлы указаны в подпапках, а не в основной папке)

Еще есть небольшая просьба: Search&Replace байты сделай без разделителя -, а еще лучше сделай радио батоны с указанием типа бинарной строки: с пробелами (как из ольки) или слитные без пробелов (как из WinHEX)

Еще есть такая прикольная опция в uPPP - User Input. Я такую фишку также когда-то реализовывал в своих кряко-установщиках. Принцип работы примерно такой: крэкер патчит имя в эбауте на ненужную строку, скажем, в пределах 20 символов. Эту строку он обнуляет, а пользователю выдает запрос - "Введите имя" (можно системное по дефолту вставлять в эдит). Патч считывает введенные данные и патчит обнуленную строку по указанному крекером оффсету. В результате в эбауте будет введенный в UserInput текст. (Дополнительно можно указать ASCII или Unicode формат вносимых данных). Но это в принципе понты.

-----
Array[Login..Logout] of Life





Ранг: 213.0 (наставник), 4thx
Активность: 0.220
Статус: Участник
Тот ещё Lamer

Создано: 21 января 2011 22:29
· Личное сообщение · #21

WatCheR пишет:
Переменные среды нам надо? И вообще в предидущей версии была фитча доставать пути к каталогу/файлу из реестра. В некоторых случаях это довольно таки удобно, юзеру не надо кидать патч в каталог. На сколько это актуально? И нужны ли свои переменные среды?


всё оставляй =) вот пару дней назад в кое веки зарелизил патч - именно с реестра путь к файлу и выдёргивал =)

-----
Do Not Get Mad Get Money! ;)




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

Создано: 22 января 2011 14:34
· Личное сообщение · #22

Kindly пишет:
Вроде как патчинг может понадобиться в System, ApplicationData или CommonFiles и т.д. но это так редко на практике, может и надо, но в одну из последних очередей.


Я про другое. Я про собственные переменные среды! Эти-то понятно, они поддерживаются с первых версий, тут ничего сложного... Тут же мы, допустим, в определенном разделе имеем список своих переменных сред,
${PROGRAM_DIR} = C:\Program Files\WinRar,
или
${PROGRAM_DIR} = (взять из HKEY_LOCAL_MACHINE\Software\WinRar::Installation Directory
или
${PROGRAM_DIR} = (спросить у пользователя)
etc

и уже в патчинге определенного файла прописывать его каталог отдельной опцией
как?

Kindly пишет:
Наверное, есть смысл сделать Silent Mode, в нем же опции: делать ли бэкап, удалять ли сертификат. На практике такие патчи могут вшиваться в инсталляторы софта или игр, например, для тихой русификации (это если ты реализуешь "патчинг массивов").


Это тоже есть в задумках Только проще.




Ранг: 275.9 (наставник), 340thx
Активность: 0.22=0.22
Статус: Участник
RBC

Создано: 22 января 2011 14:51 · Поправил: Kindly
· Личное сообщение · #23

WatCheR пишет:
Я про собственные переменные среды!

Не помешает. Только при чтении из реестра учти удаление кавычек и получение пути, если в реестре прописан путь вместе с файлом, например, InstallPath = "C:\Program Files\WinRAR\WinRAR.exe"

-----
Array[Login..Logout] of Life




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

Создано: 22 января 2011 15:02
· Личное сообщение · #24

Kindly пишет:
Только при чтении из реестра учти удаление кавычек и получение пути, если в реестре прописан путь вместе с файлом, например, InstallPath = "C:\Program Files\WinRAR\WinRAR.exe"

это всё мы уже давно прошли

Kindly пишет:
Не помешает

Не помешает или всё таки это нужно? На самом деле это не так просто как кажется Потрахатся придется...




Ранг: 275.9 (наставник), 340thx
Активность: 0.22=0.22
Статус: Участник
RBC

Создано: 22 января 2011 15:52 · Поправил: Kindly
· Личное сообщение · #25

WatCheR пишет:
Потрахатся придется...

Может не совсем то, но я такое в инсталляторе на паскале писал:
Code:
  1. function CheckInstallPath(): Boolean;
  2. begin
  3. if RegQueryStringValue(regRoot, regKey, regValue, ResultStr) then
  4.    ResultStr:=ExtractFilePath(ResultStr) // нужно, если путь содержит файл
  5.    begin
  6.       if ResultStr<>'' then
  7.          ResultStr:=RemoveQuotes(ResultStr);
  8.       begin
  9.          if not RegValueExists(regRoot, regKey, regValue) then
  10.          begin
  11.             ResultStr:=ExpandConstant('{src}');
  12.          end;
  13.       end;
  14.    end;
  15. end;


В переменную ResultStr (или твоя ${PROGRAM_DIR}) вносим путь, если не реестр, то указанная системная переменная, если файла и там нету, можно и у юзера спросить. В последнюю очередь проверяется наличие файла рядом с патчем. Потом с полученым результатом ResultStr манипулируем в дальнейшем, ес-но функцию инициализируем либо при запуске патча, либо по батону Patch. Вроде все просто, или это все равно не то?

-----
Array[Login..Logout] of Life




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

Создано: 23 января 2011 17:51 · Поправил: WatCheR
· Личное сообщение · #26

Kindly пишет:
Может не совсем то, но я такое в инсталляторе на паскале писал


Да нет, я не про это. Это всё элементарно. А вот добавлять поддержку сред в продукт дело нудное и не приятное

Реализовать-то реализуем, главное чтобы было полезно и востребовано.




Ранг: 275.9 (наставник), 340thx
Активность: 0.22=0.22
Статус: Участник
RBC

Создано: 27 января 2011 00:38 · Поправил: Kindly
· Личное сообщение · #27

Откопал у себя либу для проигрывания формата ym (ZX Spectrum). Может прикрутишь заодно?

--> Подробнее об этом формате, эмуляторы, архивы музыки <--

В аттаче либа, сорцы (асм/дельфи) и сконвертированые чипы (dll на офсайте нету, еле раньше нашел).


554a_26.01.2011_CRACKLAB.rU.tgz - ym_playing_lib.zip

-----
Array[Login..Logout] of Life




Ранг: 101.0 (ветеран), 344thx
Активность: 1.150
Статус: Участник

Создано: 27 января 2011 01:38
· Личное сообщение · #28

WatCheR
Это стеб, или опечатка? "програмирЫвания" на сайте.



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

Создано: 27 января 2011 09:08
· Личное сообщение · #29

Kindly пишет:
Откопал у себя либу для проигрывания формата ym (ZX Spectrum). Может прикрутишь заодно?


Не вопрос. Только до музыки еще далеко. А если кто нибудь соберет из этого либу на асм - процесс ускорится в разы


int пишет:
Это стеб, или опечатка? "програмирЫвания" на сайте.


Былая безграмотность int, ты первый человек за 3 года заметивший.



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

Создано: 29 января 2011 14:24
· Личное сообщение · #30

С иконками как быть? оставить 32х32 или всётаки добавить большие?



Ранг: 129.0 (ветеран), 116thx
Активность: 0.060
Статус: Участник

Создано: 29 января 2011 14:47
· Личное сообщение · #31

WatCheR пишет:
С иконками как быть? оставить 32х32 или всётаки добавить большие?

Лично мое мнение, так это не существенно, может быть 32х32 и этого достаточно.

-----
We do what we want because we can.



<< 1 ... 9 . 10 . 11 . 12 . 13 . 14 . 15 . 16 . 17 . 18 . 19 . >>
 eXeL@B —› Софт, инструменты —› WCRPatcher
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати