eXeL@B —› Вопросы новичков —› Исходник: по шаблону искать в файле |
Посл.ответ | Сообщение |
|
Создано: 20 марта 2016 18:05 · Личное сообщение · #1 Доброго дня господа. Ищется исходник (или его часть), который позволял бы по шаблону искать в файле определенный набор команд (байт). НО ... При положительном результате поиска, надо чтобы искомая строка сохранялась в некий буфер, для того чтобы ее оттуда извлечь, модифицировать и записать в измененном виде на место. маленький пример набора команд для ясности add edx, dword ptr [0x00570b84] mov eax, 1 imul eax, edx, 2 bytes - 03 15 84 0B 57 00 B8 01 00 00 00 6B C2 02 Заменить надо на mov eax, 3 mov dword ptr [0x00570b84], eax nop bytes - B8 03 00 00 00 89 15 84 0B 57 00 90 90 90 А вот другой ... add ecx, dword ptr [0x00570d40] mov edx, 1 imul edx, ecx, 3 А этот заменить надо на mov ecx, 3 mov dword ptr [0x00570d40], ecx nop Таких кусков в файле много и в искомых наборах команд, как регистры, так и явные адреса (первая команда - add, xxx [0x00xxxxxx]) всегда будут разные. По этим причинам и нужно наличие временного буфера. Ни один авто-патчер подобного не умеет. Кто чем поможет, кто что подскажет? Меня устроил бы даже скрипт для инно-сетап, если там подобное возможно. Надеюсь разрисовал все толково ... |
|
Создано: 20 марта 2016 18:51 · Поправил: dosprog · Личное сообщение · #2 |
|
Создано: 20 марта 2016 19:05 · Личное сообщение · #3 |
|
Создано: 20 марта 2016 19:16 · Личное сообщение · #4 ну да, по маске, а как еще ... dosprog асм-дизасм ... ? ищем по маске bytes - 03 ?? ?? ?? ?? 00 ?? 01 00 00 00 6B ?? 02 нашли bytes - 03 15 84 0B 57 00 B8 01 00 00 00 6B C2 02 здесь важная часть фактический адрес - 84 0B 57 00 пишем bytes - B8 03 00 00 00 89 15 84 0B 57 00 90 90 90 и все ... зачем асм-дизасм ? |
|
Создано: 20 марта 2016 19:37 · Поправил: dosprog · Личное сообщение · #5 ..проще самому написать, чем в чужом ковыряться.. Задача состоит из двух частей - сперва по строке поиска строится двоичная строка и двоичниая маска , а потом с помощью этих двух строк выполняется занудный поиск. Можно выполнять тупо последовательный strcmp, накладывая на текст двоичную маску, а можно помудрить с оптимизацией. Зависит от старательности. |
|
Создано: 20 марта 2016 20:06 · Поправил: maddmaks · Личное сообщение · #6 |
|
Создано: 20 марта 2016 20:10 · Поправил: dosprog · Личное сообщение · #7 maddmaks пишет: Если бы для меня это было как два пальца Сравнить две строки байтов сможете? - Думаю, да. А перед этим сделать им AND c двоичной маской? - Тоже не сложно. А дальше цикл для каждого байта исходного массива байтов - собственно поиск начала искомой строки. Работать будет. Хотя.. На словах-то оно всё просто maddmaks пишет: там по вашей ссылке файлик во вложении. мне не достать. Тоже там не зарегистрирован, сорри. |
|
Создано: 20 марта 2016 20:19 · Личное сообщение · #8 |
|
Создано: 20 марта 2016 21:34 · Личное сообщение · #9 На коленке пишется Code:
Конечно, можно оптимизировать... и возможны ошибки... но идея, надеюсь, понятна Вот скучно, видимо, всем - такие топики на 9 постов растягивать ----- IZ.RU |
|
Создано: 20 марта 2016 21:37 · Личное сообщение · #10 |
eXeL@B —› Вопросы новичков —› Исходник: по шаблону искать в файле |
Эта тема закрыта. Ответы больше не принимаются. |