Проблема такая:
Нужно найти определенную строку в bin-файле (или exe), адрес по которому расположена строка я знаю. Как получить строку? В HEX-редакторе найти строку очень просто, а как это сделать с помощью HiAsm? Т.е. мне нужно сделать так, чтобы указал путь к файлу, в котором будет происходить поиск, указал адрес с какого по какой искать и прога нашла строку, расположенную по этому адресу и выдала ее.
Этот топик читают: Гость
Ответов: 33
Рейтинг: 0
|
|||
карма: 0 |
|
Ответов: 2058
Рейтинг: 28
|
|||
Изучаем.
|
|||
карма: 1 |
|
Ответов: 33
Рейтинг: 0
|
|||
Эдик, пример конечно хороший. Нечто подобное я изучил по HiAsmExampleFiles. Понятно как открыть файл, а как искать строку в файле мне не понятно.
Что дальше-то делать? |
|||
карма: 0 |
|
Ответов: 2058
Рейтинг: 28
|
|||
1.Галков удали верхнее сообщение.
2.code_956 =DEN=, только большие по объёму файлы не открывай. |
|||
карма: 1 |
| ||
файлы: 1 | code_956.txt [1KB] [636] |
Гость
Ответов: 17029
Рейтинг: 0
|
|||
Редактировалось 3 раз(а), последний 2021-05-21 12:13:22 |
|||
карма: 0 |
|
Ответов: 8926
Рейтинг: 823
|
|||
=DEN=, чуть модифицированный код от Эдик:
code_957 |
|||
карма: 19 |
| ||
файлы: 1 | code_957.txt [2.4KB] [511] |
Ответов: 9906
Рейтинг: 351
|
|||
Wolfik писал(а): stream2hex а потом поиск текст. блокаА что, Stream2Str не спасет отца русской демократии |
|||
карма: 9 |
|
Ответов: 33
Рейтинг: 0
|
|||
Спасибо за помощь.
Леонид, все более-менее понятно, кроме одного: для чего нужен этот блок
|
|||
карма: 0 |
|
Ответов: 8926
Рейтинг: 823
|
|||
=DEN=, здесь могущие быть в строке символы "перевода каретки и новой строки" (коды 10 и 13) заменяются пробелами, в принципе могут быть выкинуты
|
|||
карма: 19 |
|
Ответов: 952
Рейтинг: 4
|
|||
Адреса нужного текста в бинарнике знаю, открываю файл приведенным выщше примером - вижу нужный текст.
Подсобите с изменением этого текста и сохранением измененного бинарника. Тыкаюсь как слепой котенок. |
|||
карма: 0 |
|
Ответов: 8926
Рейтинг: 823
|
|||
user_asm писал(а): ..Тыкаюсь как слепой котенок..code_34757.txt Заменяется не более числа прочитанных символов. Следует иметь ввиду, что при замене в исполняемых файлах может измениться контрольная сумма и файл не будет работать. |
|||
карма: 19 |
| ||
файлы: 1 | code_34757.txt [3.5KB] [414] | ||
Голосовали: | user_asm |
Ответов: 16884
Рейтинг: 1239
|
|||
Мимо проходил
case_1.png |
|||
карма: 25 |
| ||
файлы: 1 | case_1.png [3.3KB] [677] |
Ответов: 952
Рейтинг: 4
|
|||
Спасибо за помощь. Пересобрал чуток. Но снова упёрся в стену. В файле требуется изменить тест в 2-х местах.
С 1 понятно, всё работат, а вот как впихнуть изменение во втором месте и сохранить .... что-то туплю.... code_34767.txt |
|||
карма: 0 |
| ||
файлы: 1 | code_34767.txt [8.3KB] [533] |
Ответов: 8926
Рейтинг: 823
|
|||
user_asm, зачем плодить FileStream-ы, тем более никуда не подключённые, достаточно одного! Вписать ручками новые данные и нажать "Заменить" и всего делов. Можно и заранее заготовить и выбирать из заготовленного, или запустить "Заменить всё"
code_34768.txt |
|||
карма: 19 |
| ||
файлы: 1 | code_34768.txt [6.3KB] [389] |
Ответов: 952
Рейтинг: 4
|
|||
Тут дело в том что надо заменить именно 2 разных значения в 2 разных местах файла. Т.е. в одно место надо вставить 1111, а во второе надо вставить 2222. Поэтому и делал 2 пары эдитов для одновременного указания этих двух разных значений и двух разных адресных мест в файле.
|
|||
карма: 0 |
|
15