Разработка инструментов

И если кто-то, если кто-то....
  1. Оффлайн

    Leserg

    Звание: Ветеран

    Команда сайта

    Сообщений: 929

    Создано тем: 79

    Рейтинг: 8

    Репа: (131|131|0)

    Баллы: 1596

    Был: 2024-04-28 00:36

    Лайков: 140

    Здравствуйте, Николай!

    Вы создали инструмент применительно к 32-бит версии FontLab. Ваш алгоритм поиска и коррекции счётчиков (описан в справке к StrToCode+) основан на двухбайтовой инструкции PUSH XX (6A XX), где ХХ - значение счётчика. Причем эта инструкция находится непосредственно перед вызовом строки.

    Разработка инструментов

    Теперь смотрим 64-бит версию FontLab. А здесь уже используется инструкция MOV со значением счётчика ХХХХХХХХ.



    ---- Немножко "ужаса" budo

    Примеры счетчиков в других программах:

    WonderFox DVD Video Converter (разбор здесь)



    Vitascene



    WinSpy++ (разбор здесь)



    Topaz Adjust



    Skype Call Recorder (разбор здесь)



    Как вы собираетесь автоматизировать поиск таких счётчиков?
    Причем работу некоторых из них можно определить только под отладчиком.
    -------

    Ну что, испугались?

    Мне на первый взгляд, с наскока, задача показалась нереальной, особенно если глянуть на примеры выше. biggrin

    И потом, мне ни разу не попадались программы, в которых требовалось изменить счётчики у более чем 10-20 строк. Для десятка это легко и быстро исправлялось в отладчике, а в последующих версиях программ обычным сценарием замен для нех-редактора. Как говорится: "5 сек., и готово!". roll

    Так вот, пересмотрел на досуге свои старые проекты, где нужно было корректировать счётчики, и обнаружил интересный факт - в большинстве случаев передача счётчика строки выполняется по уже известной вам схеме:

    применительно к приложениям 32-бит
    PUSH (счётчик)
    PUSH (ссылка на строку)

    применительно к приложениям 64-бит
    MOV (регистр) (счётчик)
    PUSH (ссылка на строку)

    Ссылки на строки также могут передаваться посредством инструкций MOV или LEA. Но не в этом суть, главное что инструкция счётчика находится непосредственно перед вызовом строки. Возьмите эту схему за основу, а то что в неё не вписывается сообщайте пользователю о необходимости исследовании вопроса в отладчике.

    О чём это говорит?
    Ваш инструмент имеет право на жизнь и может быть вполне рабочим помощником для других программ (РЕ-файлов).
    Так что не отчаивайтесь и не опускайте руки. ok2

    А вот показанные "ужасные" случаи всё равно придется разгребать вручную, но уверяю вас, их не так много.

    agree

    P.S.
    Цитата: NNK_RTR
    Мне важно Ваше мнение

    Не стоит акцентировать внимание всего лишь на одном мнении, тем более, что оно может быть ошибочным. yes
    Смотрящий, NNK_RTR нравится это сообщение.
    Сообщение отредактировал Leserg 13 декабря 2023 - 00:15

    Кто ищет, тот всегда найдет!

    13 декабря 2023 - 00:15 / #11
  2. Оффлайн

    Автор темы

    NNK_RTR

    Звание: Бывалый

    Мастер

    Сообщений: 282

    Создано тем: 52

    Рейтинг: 5

    Репа: (61|61|0)

    Баллы: 1801

    Был: 2024-05-04 21:28

    Лайков: 87

    Здравствуйте 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
  3. Оффлайн

    Leserg

    Звание: Ветеран

    Команда сайта

    Сообщений: 929

    Создано тем: 79

    Рейтинг: 8

    Репа: (131|131|0)

    Баллы: 1596

    Был: 2024-04-28 00:36

    Лайков: 140

    Цитата: NNK_RTR
    Какая версия использовалась в примере?

    WinSpy++ v1.7.1 (скачать)

    Цитата: NNK_RTR
    Если можно, еще ужастиков. Пусть инструмент не сможет их осилить, просто "Для развлеченья и веселья"

    Что понравилось? goof

    iZotope RX7 64-бит (пояснение здесь, правда картинки там не сохранились)
    В одном файле несколько вариантов счётчиков.

    1) Разработка инструментов

    2)

    3) А здесь один счётчик на две строки. В английском варианте нет проблем, а вот для перевода (нормального, без жаргонизмов и сокращений) нужно немного подумать.



    На этом все, ужастики кончились. order

    Кто ищет, тот всегда найдет!

    13 декабря 2023 - 21:28 / #13

Статистика форума, пользователей онлайн: 0 (за последние 20 минут)

---
Создано тем
1177
Всего сообщений
15352
Пользователей
17856
Новый участник
Daniel7375ysk