Вверх ↑
Этот топик читают: Гость
Ответов: 33
Рейтинг: 0
#1: 2007-02-08 20:43:28 ЛС | профиль | цитата
Проблема такая:
Нужно найти определенную строку в bin-файле (или exe), адрес по которому расположена строка я знаю. Как получить строку? В HEX-редакторе найти строку очень просто, а как это сделать с помощью HiAsm? Т.е. мне нужно сделать так, чтобы указал путь к файлу, в котором будет происходить поиск, указал адрес с какого по какой искать и прога нашла строку, расположенную по этому адресу и выдала ее.
карма: 0
Время верстки: %cr_time% Текущее время: %time%
0
Ответов: 2058
Рейтинг: 28
#2: 2007-02-08 21:03:57 ЛС | профиль | цитата
Изучаем.
Add(MemoryStream,14829367,322,91)
{
}
Add(DataToFile,3187199,210,140)
{
link(Stream,3352605:Stream,[])
}
Add(FileStream,3352605,210,91)
{
Point(doPosition)
}
карма: 1

0
Ответов: 33
Рейтинг: 0
#3: 2007-02-08 21:28:20 ЛС | профиль | цитата
Эдик, пример конечно хороший. Нечто подобное я изучил по HiAsmExampleFiles. Понятно как открыть файл, а как искать строку в файле мне не понятно.

Add(Button,6064643,-24,82)
{
Left=140
Top=235
Width=60
Caption="Открыть"
link(onClick,13223982:doExecute,[])
}
Add(ODialog,13223982,27,82)
{
link(onExecute,7113640:doEvent1,[])
}
Add(FileStream,3596279,158,82)
{
}
Add(Hub,7113640,81,82)
{
OutCount=5
link(onEvent1,3596279:doOpen,[])
link(onEvent2,3341811:doGet,[(138,95)(138,179)])
link(onEvent5,3596279:doClose,[(145,116)(145,95)])
}
Add(DataToFile,3341811,158,166)
{
Type=5
link(Stream,3596279:Stream,[(164,140)(164,140)])
}


Что дальше-то делать?
карма: 0
Время верстки: %cr_time% Текущее время: %time%
0
Ответов: 2058
Рейтинг: 28
#4: 2007-02-08 22:05:28 ЛС | профиль | цитата
1.Галков удали верхнее сообщение.
2.code_956 =DEN=, только большие по объёму файлы не открывай.
карма: 1

0
файлы: 1code_956.txt [1KB] [636]
Гость
Ответов: 17029
Рейтинг: 0
#5: 2007-02-08 22:29:27 правка | ЛС | профиль | цитата


Редактировалось 3 раз(а), последний 2021-05-21 12:13:22
карма: 0

0
Ответов: 8926
Рейтинг: 823
#6: 2007-02-08 23:15:42 ЛС | профиль | цитата
=DEN=, чуть модифицированный код от Эдик:
code_957
карма: 19

0
файлы: 1code_957.txt [2.4KB] [511]
Ответов: 9906
Рейтинг: 351
#7: 2007-02-09 01:58:22 ЛС | профиль | цитата
Wolfik писал(а):
stream2hex а потом поиск текст. блока

А что, Stream2Str не спасет отца русской демократии
карма: 9

0
Ответов: 33
Рейтинг: 0
#8: 2007-02-09 21:05:50 ЛС | профиль | цитата
Спасибо за помощь.
Леонид, все более-менее понятно, кроме одного: для чего нужен этот блок

Add(If_else,5916734,331,263)
{
Type=5
Op2=Integer(10)
link(onTrue,8761262:doValue,[])
link(onFalse,8761262:doClear,[])
}
Add(If_else,14561006,415,263)
{
Type=5
Op2=Integer(13)
link(onTrue,7766034:doValue,[])
link(onFalse,7766034:doClear,[])
}
Add(Memory,8761262,373,263)
{
Default=Integer(32)
link(onData,14561006:doCompare,[])
}
Add(Memory,7766034,457,263)
{
Default=Integer(32)
}

ведь и без него все работает ? Я не программист, так что не судите строго.
карма: 0
Время верстки: %cr_time% Текущее время: %time%
0
Ответов: 8926
Рейтинг: 823
#9: 2007-02-09 22:24:32 ЛС | профиль | цитата
=DEN=, здесь могущие быть в строке символы "перевода каретки и новой строки" (коды 10 и 13) заменяются пробелами, в принципе могут быть выкинуты
карма: 19

0
Ответов: 952
Рейтинг: 4
#10: 2014-12-18 09:44:05 ЛС | профиль | цитата
Адреса нужного текста в бинарнике знаю, открываю файл приведенным выщше примером - вижу нужный текст.
Подсобите с изменением этого текста и сохранением измененного бинарника. Тыкаюсь как слепой котенок.
карма: 0

0
Ответов: 8926
Рейтинг: 823
#11: 2014-12-18 11:14:21 ЛС | профиль | цитата
user_asm писал(а):
..Тыкаюсь как слепой котенок..
Постов-то скоро 1000!
code_34757.txt Заменяется не более числа прочитанных символов.
Следует иметь ввиду, что при замене в исполняемых файлах может измениться контрольная сумма и файл не будет работать.
карма: 19

1
файлы: 1code_34757.txt [3.5KB] [414]
Голосовали:user_asm
Ответов: 16884
Рейтинг: 1239
#12: 2014-12-18 19:04:38 ЛС | профиль | цитата
Мимо проходил
case_1.png

карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
файлы: 1case_1.png [3.3KB] [677]
Ответов: 952
Рейтинг: 4
#13: 2014-12-20 08:45:15 ЛС | профиль | цитата
Спасибо за помощь. Пересобрал чуток. Но снова упёрся в стену. В файле требуется изменить тест в 2-х местах.
С 1 понятно, всё работат, а вот как впихнуть изменение во втором месте и сохранить .... что-то туплю....
code_34767.txt
карма: 0

0
файлы: 1code_34767.txt [8.3KB] [533]
Ответов: 8926
Рейтинг: 823
#14: 2014-12-20 11:51:24 ЛС | профиль | цитата
user_asm, зачем плодить FileStream-ы, тем более никуда не подключённые, достаточно одного! Вписать ручками новые данные и нажать "Заменить" и всего делов. Можно и заранее заготовить и выбирать из заготовленного, или запустить "Заменить всё"
code_34768.txt
карма: 19

0
файлы: 1code_34768.txt [6.3KB] [389]
Ответов: 952
Рейтинг: 4
#15: 2014-12-20 12:29:27 ЛС | профиль | цитата
Тут дело в том что надо заменить именно 2 разных значения в 2 разных местах файла. Т.е. в одно место надо вставить 1111, а во второе надо вставить 2222. Поэтому и делал 2 пары эдитов для одновременного указания этих двух разных значений и двух разных адресных мест в файле.
карма: 0

0
15
Сообщение
...
Прикрепленные файлы
(файлы не залиты)