@psiklop

Нужен простой hex-редактор или программа патчер?

Я понимаю, вопрос кому-то элементарный, но прошу не давать ответов по программированию и командной строке linux)
Требуется элементарный легковесный hex-редактор для windows (обязательно для командной строки), которому можно дать такую команду:

Типа (например): simple_hex_editor.exe [-отступ 20 байт] [входной файл(патч)] [файл для записи]

Ну и логично тогда в выходной файл запишется патч) Я никак не могу найти(
  • Вопрос задан
  • 91 просмотр
Решения вопроса 1
trapwalker
@trapwalker
Программист, энтузиаст
Держите вот я написал вам такую утилиту:
#!/usr/bin/python3


def patch_file(patch_fn, dest_fn, offset=0, limit=None):
    with open(patch_fn, 'rb') as patch_file, open(dest_fn, 'rb+') as dest_file:
        patch = patch_file.read()[:limit]
        dest_file.seek(offset)
        dest_file.write(patch)


if __name__ == '__main__':
    import sys
    args = sys.argv[1:]
    if args:
        args[2:] = [int(v) for v in args[2:]]
        print(args)
        patch_file(*args)
    else:
        print(f'{sys.argv[0]} <PATCH_FILE_NAME> <DEST_FILE_NAME> [OFFSET] [LIMIT]')
        print('  OFFSET by default is 0')
        print(
            '  No LIMIT by default. You can use counting from end of patch file content to limit them. \n'
            '    For example LIMIT=5 will truncate 5 bytes of patch content\n'
            '    LIMIT=-5 cut last 5 bytes of patch content before patching.'
        )

Сохраните в файл, например patch.py
Под линуксом нужно сделать chmod +x patch.py.
А под виндой можно запускать так:
python patch.py patch_file_name dest_file_name 33 -2

Заменит в dest_file_name все с 33 символа на содержимое patch_file_name за исключением двух последних символов патча. Последний и предпоследний параметры можно опустить.

Или использовать утилиту dd. Она стандартная и портирована под винду.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
sotvm
@sotvm
Умный поймёт, а дураку и так всё равно.
я пользую(иногда)
wxHexEditor
а на счёт комадной строки=это зачем/а смысл?
как вариaнт = vim/vi/mc/ или любoй консольный менеджнер,
который умеет/понимает Hex
Ответ написан
@U235U235
Можно использовать утилиту xxd для Windows
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы