Разработка инструментов
И если кто-то, если кто-то....
-
Оффлайн
Звание: Ветеран
Команда сайта
Сообщений: 1003
Создано тем: 79
Рейтинг: 8
Репа:
(133|133|0)
Баллы: 1971
Был: 2025-09-11 22:24
Лайков: 216
Здравствуйте, Николай!
Вы создали инструмент применительно к 32-бит версии FontLab. Ваш алгоритм поиска и коррекции счётчиков (описан в справке к StrToCode+) основан на двухбайтовой инструкции PUSH XX (6A XX), где ХХ - значение счётчика. Причем эта инструкция находится непосредственно перед вызовом строки.
Теперь смотрим 64-бит версию FontLab. А здесь уже используется инструкция MOV со значением счётчика ХХХХХХХХ.
---- Немножко "ужаса"
Примеры счетчиков в других программах:
WonderFox DVD Video Converter (разбор здесь)
Vitascene
WinSpy++ (разбор здесь)
Topaz Adjust
Skype Call Recorder (разбор здесь)
Как вы собираетесь автоматизировать поиск таких счётчиков?
Причем работу некоторых из них можно определить только под отладчиком.
-------
Ну что, испугались?
Мне на первый взгляд, с наскока, задача показалась нереальной, особенно если глянуть на примеры выше.
И потом, мне ни разу не попадались программы, в которых требовалось изменить счётчики у более чем 10-20 строк. Для десятка это легко и быстро исправлялось в отладчике, а в последующих версиях программ обычным сценарием замен для нех-редактора. Как говорится: "5 сек., и готово!".
Так вот, пересмотрел на досуге свои старые проекты, где нужно было корректировать счётчики, и обнаружил интересный факт - в большинстве случаев передача счётчика строки выполняется по уже известной вам схеме:
применительно к приложениям 32-бит
PUSH (счётчик)
PUSH (ссылка на строку)
применительно к приложениям 64-бит
MOV (регистр) (счётчик)
PUSH (ссылка на строку)
Ссылки на строки также могут передаваться посредством инструкций MOV или LEA. Но не в этом суть, главное что инструкция счётчика находится непосредственно перед вызовом строки. Возьмите эту схему за основу, а то что в неё не вписывается сообщайте пользователю о необходимости исследовании вопроса в отладчике.
О чём это говорит?
Ваш инструмент имеет право на жизнь и может быть вполне рабочим помощником для других программ (РЕ-файлов).
Так что не отчаивайтесь и не опускайте руки.
А вот показанные "ужасные" случаи всё равно придется разгребать вручную, но уверяю вас, их не так много.
P.S.Цитата: NNK_RTRМне важно Ваше мнение
Не стоит акцентировать внимание всего лишь на одном мнении, тем более, что оно может быть ошибочным.
Сообщение отредактировал Leserg 13 декабря 2023 - 00:15Кто ищет, тот всегда найдет!
13 декабря 2023 - 00:15 / #11 -
Здравствуйте Leserg
С Вами очень интересно жить!
Неплохо бы свести все Ваши наработки в единую книгу, а для разбора "ужастиков" создать отдельную главу и так и назвать ее "Ужастики"
--------------------------------------
Ужастик № 1 (вероятно ужастиков больше десятка, поэтому "Ужастик № 001" (а вдруг и больше сотни)
WonderFox DVD Video Converter
Методом индексации строк я пользуюсь, но индексами заменяю первые буквы строки, то есть, "01ительность".
Такая индексация не удлиняет строку, даже если она в кодировке UTF-8, не заставляет Radialix напрягаться и упрощает поиск ее в отладчике.
Что для меня абсолютно новое, и даже, откровение, это установка точки останова по идентификатору строку (ID #9306252.008DF26C ). Как я понимаю, такой идентификатор появляется после подключению к проекту плагина `IDA , но, разве IDA загружает программу? Я был уверен, что это адрес строки в файле, но отладчик работает с образом файла в памяти... (А, наверно нужно изменить адресацию в отладчике относительно начала файла)
Понятно, что с таким ужастиком мой инструмент не справится, разве только в качестве искусственного интеллекта подключить Ваши мозги... (но это слишком шикарно)
------------------------------------
Ужастик № 3
WinSpy++
Нужно вникать, то есть, выполнять последовательно указанные Вами действия.
Но вот беда: У меня две версии WinSpy - 1.2 и 1.7, но не в одной из них при наведении курсора на "целеуказатель" подсказка не отображается.
Какая версия использовалась в примере?
---------------------------
Ужастик № 4
Skype Call Recorder
Это от WYLEK
Смотрел раньше.
Код в IDA:
первый случайpush 7 2 байта lea ecx[...] 6 байт push offset ссылка на строку
второй случайpush 7 2 байта mov byte... 5 байт lea ecx[...] 6 байт push offset ссылка на строку
Прежде всего, в команде push 7 используется push с оптокодом 6А, то есть, длина строки не может превышать 127 байт.
Во втором случае вклинилась команда mov byte...
Ничего страшного, просто в процессе проверки "показаний счетчика" будем проверять оба варианта (or).
То есть, проблем с использованием этой программы в качестве варианта не вижу (судя по разбору)
Скачал приложение, но для его работы требуется скайп. Я почему-то сразу отверг это приложение еще на заре его популярности. Можно, конечно, купить камеру и установить, но нужно еще и получать почту (от кого). Вероятно, если не найду ничего подходящего, установлю скайп на планшет и компьютер.
-----------------------------
При дальнейшей модернизации инструмента я научу его разбираться в разрядности приложения и Ваш скриншот по 64-разрядной версии FontLab очень даже пригодится.
Если можно, еще ужастиков. Пусть инструмент не сможет их осилить, просто "Для развлеченья и веселья"
Leserg,
Не стоит акцентировать внимание всего лишь на одном мнении, тем более, что оно может быть ошибочным
А нет других мнений...
Спасибо
С уважением, Николай13 декабря 2023 - 12:17 / #12 -
Оффлайн
Звание: Ветеран
Команда сайта
Сообщений: 1003
Создано тем: 79
Рейтинг: 8
Репа:
(133|133|0)
Баллы: 1971
Был: 2025-09-11 22:24
Лайков: 216
Цитата: NNK_RTRКакая версия использовалась в примере?
WinSpy++ v1.7.1 (скачать)Цитата: NNK_RTRЕсли можно, еще ужастиков. Пусть инструмент не сможет их осилить, просто "Для развлеченья и веселья"
Что понравилось?
iZotope RX7 64-бит (пояснение здесь, правда картинки там не сохранились)
В одном файле несколько вариантов счётчиков.
1)
2)
3) А здесь один счётчик на две строки. В английском варианте нет проблем, а вот для перевода (нормального, без жаргонизмов и сокращений) нужно немного подумать.
На этом все, ужастики кончились.
Кто ищет, тот всегда найдет!
13 декабря 2023 - 21:28 / #13
Статистика форума, пользователей онлайн: 0 (за последние 20 минут)
---
- Создано тем
- 1223
- Всего сообщений
- 16500
- Пользователей
- 18282
- Новый участник
- serge2375
Powered by Bullet Energy Forum

