Ищу исходник утилиты, нужно чтоб в командной строке можно было передать адрес и дата-код на вход утилиты и она это вбила бы в бинарный некий целевой файл... То-есть patch.exe /offset 0000a320 /code "Hello BINARY" C:\MyDocs\notepad.exe В никсах есть какой-то patch, но я чесно говоря не знаю, что он делает и как он делает? Хотя если порт под win32 бывает, вернее если он вообще это умеет? Ищу fasm исходник/пример, потому что если на си, то я не знаю чем капилить, не будуж из-за этого VisualStudio ставить. Сам написать затрудняюсь... А может вообще такой тулс уже есть в природе? Хотя собрать всёж хотелось бы свой, ато как всегда целый комбайн предложат, нет чтоб попросче. help! ps надо именно утиль, а не одноразовый патч! чтоб stdinввод слушало и для бинарей обязательно! а может это какой нить hexeditor делает в комманд строке?
Wikipedia, the free encyclopedia~ "patch is a Unix program that updates text files according to instructions contained in a separate file" меня вот что обламало, что текст-файлы... я как-то sed-ом ещё пытался в бинарный код влезть, кажись работало, но при какой-то видимо ошибке, по консоли каракули поползли (= Но сед не подходит, так как он ищет, а надо только патчить где надо.
Semiono Если *nix тоже подходит, чем плохо dd? У нее есть параметры bs, skip, seek и много других. Т.е. можно не только сектора, но и байты гонять. А в качестве if= задать терминальную линию или файл, с которого будет идти ввод.
Mika0x65 Ну так в порте *nix утилит(http://unxutils.sourceforge.net) есть dd, так что и под вендой можно замутить =))
может подойдет hpath? http://patkov-site.narod.ru/ Код (Text): ====- Что это такое -======================================================== Универсальный генератор патчей файлов / процессов на основе простых скриптов. Может создавать как GUI патчи, так и лодеры, размер ~ 6 кб. ====- Язык скриптов -======================================================== Язык скриптов довольно прост: указывается команда, а затем ее аргументы, через запятую. Все, что находится после символа ';' до конца строки считается комментарием и игногрируется при компиляции. <команда> [аргумент,[...]] ; комментарий Строковые константы надо заключать в "двойные кавычки", допускаются esc- последовательности, т.е. '\' экранирует любой последущий символ (в том числе и самого себя), причем есть особые последовательности: \n новая строка (0x0d,0x0a) \t горизонтальная табуляция Массив байт и адреса надо представлять в шестнадцатиричном виде. У hex-строк нельзя опускать предстоящий ноль, т.е. они должны состоять из четного числа символов. Адрес может принимать значения от 0 до ffffffff. Десятичные числа - от 0 до 2^31. А команды такие: silence при указании этой команды не будет выводится GUI - патч выполнит всю работу при запуске автоматически, втихоря. Полезна при создании лодеров. open "filename" открывает файл <filename>. Если в качестве аргумента указать '?', то будет выведено диалоговое окно выбора файла. Файл автоматически закрывается при открытии нового файла и выходе из патча. run "filename" запускает программу <filename> (в замороженном состоянии). Если в качестве аргумента указать '?', то будет выведено диалоговое окно выбора файла. Процесс выводится из замороженного состояния при запуске нового процесса и выходе из патча. kill завершает последний запущенный процесс. resume выводит последний запущенный процесс из замороженного состояния. При патче запакованных / зашифрованных программ рекомендуется размораживать процесс сразу после запуска. suspend замораживает последний запущенный процесс. writef <address>, <bytes> пишет в открытый файл по адресу <address> массив байт <bytes>. writep <address>, <bytes> пишет в запущенный процесс по адресу <address> массив байт <bytes>. Вместо writep настоятельно рекомендуется использовать patchp. patchf <address>, <original>, <bytes> сверяет у открытого файла по адресу <address> байты с <original>, если совпали, то пишет по тому же адресу массив байт <bytes>. patchp <address>, <original>, <bytes> серяет у запущенного процесса по адресу <address> байты с <original>, если совпали, то пишет по тому же адресу массив байт <bytes>. snr <start-addr>, <end-addr>, <original>, <bytes>, <count> ищет в открытом файле, в диапазоне адресов от <start-addr> до <end-addr> последовательности байт <original> и заменяет их на <bytes>. Последний аргумент <count> должен быть десятичным числом и показывает максимальное количество замен, '*' = неограниченно. Тот же символ '*' в аргументе <end-addr> означает конец файла. В массивах байт <original> и <bytes> можно использовать маски: '??' заменяет любой байт. Например, чтобы заменить во всем файле все последовательности байт 5E83C9??0A????90 (где '??' - любой байт) на B41E??67??00, надо писать: snr 0,*,5E83C9??0A????90,B41E??67??00,* try <number> устанавливает для patchp число попыток сверить байты, прежде чем будет выведено сообщение об ошибке на <number> раз. По умолчанию это значение равно 5000. Для простых незапакованных программ можно установить даже 1, но если программа запакована / зашифрована, то следует оставить как есть или установить еще больше. Аргумент должен быть десятичным числом. wait <ms> ждет <ms> миллисекунд. Осуществляется посредством WinAPI функции Sleep, то есть фактически система просто переключится на другой поток с таким же приоритетом на <ms> миллисекунд, причем даже если аргумент будет равен 0, переключение все равно произойдет. Подробнее смотри в MSDN. В общем, при патче запакованнах / зашифрованных программ можно установить после run и resume команду wait 0. Аргумент должен быть десятичным числом. shell "string" передает командную строку <string> оболочке (command.com/cmd.exe). backup <-|+|?> включает (если аргумент равен '+'), выключает ('-') или выдает запрос ('?') на создание резервной копии файла при его открытии. По умолчанию отключено. title "string" устанавливает заголовок окна патча на <string>. Только в GUI режиме (когда не указана команда silence). header "string" устанавливает надпись в верхней части окна патча на <string>. Только в GUI режиме. print "string" печатает строку <string> в информационном поле патча. Только в GUI режиме. cls очищает информационное поле патча. Только в GUI режиме. init ... endi все команды, находяшиеся внутри этого блока будут выполнены сразу после запуска патча, в отличии от остальных команд, которые выполняется только после нажатия пользователем кнопки "Patch". Сюда рекомендуется помещать команды title, header и т.п. Блок должен находится в начале файла. Только в GUI режиме.
Semiono: wasm.ru › Инструменты › Модификаторы › Подборка модификаторов Хотя, если crk.exe не подойдёт, чего уж там, пишите свой патчер
О! Большое спасибо! dd тоже заинтересовал, я сам даже не додумался, он ж с файлами тоже работает, хотя им можно раздел запросто снести ))) у меня как раз dd.exe порт всегда валяется в system32. А вот что я сам нашёл, rbach.priv.at/DumpHex/ но не успел толком потестить, хотя может это даже из другой оперы... но дамп там в консоли мне его понравился. ) Кстати, а hiew ничего такого не поддерживает? всмысле управление батником?