@Drovosek01

Почему этот perl скрипт не меняет байты в файле?

Есть файл (он в архиве, нужно распаковать) - https://workupload.com/start/Vc7f2PhXwqJ
В нем есть 2 набора байт:
D6 6C 9E C8 DC 86 F3 DB 68 B2 B8 BF 66 05 51 63 05 27 F4 EC 31 19 3B 69 74 3E E1 E6 50 AB B1 A2 27 63 61 B0 03 83 F2 3D 66 68 0A 68 1E B3 B8 DC 4A 7F 91 51 E7 32 F6 D4 B7 69 63 D1 12 2A 8F 58 99 73 6B DE 7B 91 1C 9F 2A 55 E4 2D AA 85 66 CB AD 43 BE 68 1B 2F 38 15 49 C3 42 FC 19 F1 F5 93 D2 44 54 74 1D 17 AD F2 21 F6 33 A5 AC 4D E8 5E F6 02 36 28 F8 F9 36 8C 61 6B 19 49 D7 02 C4 19 5D 41 1D D5 1A 2F 1B 84 59 83 22 99 03 5E EF 68 BE 1E E3 7D 92 A4 DF 75 8F 58 92 C8 AA F6 35 A4 06 A7 AD 4F 9E BF 03 EB 0E 44 DA 48 5B BB F0 98 3D F8 39 20 42 0A E8 24 F4 DA 3C C9 D1 69 95 35 63 5F 71 51 B2 79 D2 71 44 B8 A2 9A 65 B6 E2 8C CB AF FD DB AB 3F DE 84 CB F0 E1 FF 4E 28 AB 65 19 7E C9 FD 02 7D CD 7A F5 28 80 BF 14 32 75 78 2F 07 82 C3 04 3B 47 02 04 B6 3C 40 FC 7B AF 33

Существование которых в этом файле я проверил с помощью 010 Editor.

Этот набор байт я хочу заменить на другой набора байт:
D2 BF 80 69 B2 98 61 8B 54 27 2B 13 CE 40 2C 37 82 6D 90 6F A0 DB 47 C9 16 E3 04 D6 1C FE 84 73 06 AD 17 63 A3 32 A6 FA CB EF 13 3D E5 E6 34 B3 33 73 9E FF FE 9F 75 13 F7 C3 8C DF 4E B7 CE 27 B5 6B 72 84 24 F9 41 0D B4 CD 3A B3 3D 2A 36 71 23 47 0D 62 32 42 11 87 6D 83 C1 5B 59 FB 7A 4D 5A 74 E5 6F 9E 44 3D BE FF 30 28 9D 3E 4F 84 E5 8E 6A B2 3A D4 F4 38 70 03 46 05 E6 8E DF 1F F9 02 56 AA 02 7C 61 02 98 1B 8A 77 42 C3 DC FC 53 6A 4D 98 C4 E2 27 02 F2 BF FD E2 98 5E 23 2A 24 46 D5 75 0E 20 ED D2 7E 59 FA 24 75 CF F2 88 2C A3 33 47 20 9F 62 DE D6 96 5D 85 B0 3B DE 6E 02 B9 9F 68 0F 33 B7 DC 08 F8 73 0C 0B CE 62 25 6F CA 56 13 21 3A 11 82 C0 0A 36 A9 D4 96 62 9D 15 C1 B6 04 55 0F 97 38 8C 2D FD 60 CC 8D C1 5C F5 D6 1A 82 91 67 CE 07 F9 79 81 68 C9 2D 60 37 47


Если я меняю их "ручками" в 010 Editor - все нормально меняется и сохраняется.

Для автоматизации процесса я это обернул в такой скрипт:
sudo perl -pi -e 's/\xD6\x6C\x9E\xC8\xDC\x86\xF3\xDB\x68\xB2\xB8\xBF\x66\x05\x51\x63\x05\x27\xF4\xEC\x31\x19\x3B\x69\x74\x3E\xE1\xE6\x50\xAB\xB1\xA2\x27\x63\x61\xB0\x03\x83\xF2\x3D\x66\x68\x0A\x68\x1E\xB3\xB8\xDC\x4A\x7F\x91\x51\xE7\x32\xF6\xD4\xB7\x69\x63\xD1\x12\x2A\x8F\x58\x99\x73\x6B\xDE\x7B\x91\x1C\x9F\x2A\x55\xE4\x2D\xAA\x85\x66\xCB\xAD\x43\xBE\x68\x1B\x2F\x38\x15\x49\xC3\x42\xFC\x19\xF1\xF5\x93\xD2\x44\x54\x74\x1D\x17\xAD\xF2\x21\xF6\x33\xA5\xAC\x4D\xE8\x5E\xF6\x02\x36\x28\xF8\xF9\x36\x8C\x61\x6B\x19\x49\xD7\x02\xC4\x19\x5D\x41\x1D\xD5\x1A\x2F\x1B\x84\x59\x83\x22\x99\x03\x5E\xEF\x68\xBE\x1E\xE3\x7D\x92\xA4\xDF\x75\x8F\x58\x92\xC8\xAA\xF6\x35\xA4\x06\xA7\xAD\x4F\x9E\xBF\x03\xEB\x0E\x44\xDA\x48\x5B\xBB\xF0\x98\x3D\xF8\x39\x20\x42\x0A\xE8\x24\xF4\xDA\x3C\xC9\xD1\x69\x95\x35\x63\x5F\x71\x51\xB2\x79\xD2\x71\x44\xB8\xA2\x9A\x65\xB6\xE2\x8C\xCB\xAF\xFD\xDB\xAB\x3F\xDE\x84\xCB\xF0\xE1\xFF\x4E\x28\xAB\x65\x19\x7E\xC9\xFD\x02\x7D\xCD\x7A\xF5\x28\x80\xBF\x14\x32\x75\x78\x2F\x07\x82\xC3\x04\x3B\x47\x02\x04\xB6\x3C\x40\xFC\x7B\xAF\x33/\xD2\xBF\x80\x69\xB2\x98\x61\x8B\x54\x27\x2B\x13\xCE\x40\x2C\x37\x82\x6D\x90\x6F\xA0\xDB\x47\xC9\x16\xE3\x04\xD6\x1C\xFE\x84\x73\x06\xAD\x17\x63\xA3\x32\xA6\xFA\xCB\xEF\x13\x3D\xE5\xE6\x34\xB3\x33\x73\x9E\xFF\xFE\x9F\x75\x13\xF7\xC3\x8C\xDF\x4E\xB7\xCE\x27\xB5\x6B\x72\x84\x24\xF9\x41\x0D\xB4\xCD\x3A\xB3\x3D\x2A\x36\x71\x23\x47\x0D\x62\x32\x42\x11\x87\x6D\x83\xC1\x5B\x59\xFB\x7A\x4D\x5A\x74\xE5\x6F\x9E\x44\x3D\xBE\xFF\x30\x28\x9D\x3E\x4F\x84\xE5\x8E\x6A\xB2\x3A\xD4\xF4\x38\x70\x03\x46\x05\xE6\x8E\xDF\x1F\xF9\x02\x56\xAA\x02\x7C\x61\x02\x98\x1B\x8A\x77\x42\xC3\xDC\xFC\x53\x6A\x4D\x98\xC4\xE2\x27\x02\xF2\xBF\xFD\xE2\x98\x5E\x23\x2A\x24\x46\xD5\x75\x0E\x20\xED\xD2\x7E\x59\xFA\x24\x75\xCF\xF2\x88\x2C\xA3\x33\x47\x20\x9F\x62\xDE\xD6\x96\x5D\x85\xB0\x3B\xDE\x6E\x02\xB9\x9F\x68\x0F\x33\xB7\xDC\x08\xF8\x73\x0C\x0B\xCE\x62\x25\x6F\xCA\x56\x13\x21\x3A\x11\x82\xC0\x0A\x36\xA9\xD4\x96\x62\x9D\x15\xC1\xB6\x04\x55\x0F\x97\x38\x8C\x2D\xFD\x60\xCC\x8D\xC1\x5C\xF5\xD6\x1A\x82\x91\x67\xCE\x07\xF9\x79\x81\x68\xC9\x2D\x60\x37\x47/g' /path/to/libbinaryninjacore.1.dylib


Я проверил md5 хэш сумму файла до и после выполнения скрипта - хэш сумма не меняется.

Я проверил вот такой скрипт:
sudo perl -pi -e 's/\x00/\xFF/g' /path/to/libbinaryninjacore.1.dylib

И он нормально отрабатывает (хэш суммы файла до и после выполнения скрипта - отличаются).

Вопрос:
Что не так с первым (большим) perl скриптом по замене байт? Почему после его выполнения содержимое файла не меняется?
  • Вопрос задан
  • 105 просмотров
Решения вопроса 1
saboteur_kiev
@saboteur_kiev Куратор тега bash
software engineer
Если взять кусочек комбинации, то все работает.

Думаю дело в том, как работают такие конструкции.
Считывается строка, в ней ищется искомое.
А у тебя в строке я вижу встречается x0A
То есть скорее всего твоя последовательность байт "разбита" на несколько строк, и для перла это критично.
Если в комбинации нет 00, То можно так: -0pe

sudo perl -0pi -e 's/SEARCH/REPLACE/g' filename
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы