Текущая статья не является практическим руководством или руководством к действию. Представленный материал представлен исключительно в образовательных целях и повышения информационной грамотности и несёт в себе концепцию «пища для размышления» не нарушая авторского и/или смежного права. Повторять описанные процессы не рекомендуется. Часть материала может быть полезна инженерам, которые занимаются различными вопросами и проблемами криптологии. Некоторые материалы, находящиеся в теле статьи, являются собственностью их многоуважаемых авторов, о чем указано. Статья не претендует на полноту. Некоторые значения и параметры были сознательно изменены.
Общая информация о программе
Попал как-то в руки экземпляр GEOstrip Systems v4.0.7.0 компании Geological Rentals and Services Inc. ("GRS"), Калгари, Альберта, Канада. Скачать указанную версию можно на сайте компании. Web-сайт http://www.grsi.ca, однако на момент написания статьи Web-ресурс был доступен фрагментально.
На удивление достаточно компактная по размеру программного кода софтина, с приличным, как ни странно, функционалом. В комплекте с установщиком идут демонстрационные файлы с примерами и инструкции по установке и использованию. Для нашего брата не совсем комфортно использование интерфейса из-за отсутствия русской локализации.
Возможности для описания процесса строительства скважины достаточно хороши. А в некоторых случаях на станциях ГТИ могут быть более чем достаточными.
Жирный плюс можно поставить этому произведению за поддержку WITS (Wellsite Information Transfer Specification) протокола. Благодаря которому можно получать в режиме реального времени данные как состояния скважины и технологического контроля, так и данные забойной телеметрии. Что в условиях дефицита кадрового потенциала очень и очень актуально.
Однако у этого программного продукта есть ограничения, для полноценного использования необходим USB-Dongle. Стоимость такого устройства в пределах 3000 ÷ 5000 USD в зависимости от набора функционала. Можно использовать программу для описания как вертикальных так и горизонтальных скважин, и в зависимости от того какие модули нужны и меняется стоимость лицензии.
При этом срок лицензирования в пределах полугода (могу ошибаться). Кроме этого необходимо время от времени подключать компьютер, с установленным USB-ключом, к сети интернет, для синхронизации с центром сертификации.
Есть предположение, что механизм защиты может быть организован как в этом случае. Однако это только догадки, так как на момент написания статьи ключ защиты в наличии отсутствовал.
Наблюдение ограничений и их анализ
Строка меню
Само по себе ограничение функционала основывается только на доступности команд из пользовательского интерфейса. Сами по себе процедуры и функции описаны и работают полностью. То есть, установщик распаковывает софт без ограничений.
Посмотрев, в метод @Menus@TMenuItem@AppendTo можно обнаружить, что свойство Enable строки меню и команды Edit определяется через команду OR и имеет значение по умолчанию 3.
Любое нечетное слово DW в адресах 00823520h и 00823558h (с единицей в младшем разряде) блокирует доступность команд строки меню. Четные слова DW делают доступными команды строки меню, однако не обрабатывается событие OnClick. Значение равное нулю полностью делает доступные команды строки меню. Адрес 00823520h отвечает за команды меню Edit. Адрес 00823558h отпускает другие команды строки меню.
Поменяв значения с тройки на нули по указанным двум адресам можно, таким образом, отпустить строку меню.
После отпускания строки меню, можно походить и посмотреть существующие команды.
Однако сами по себе процедуры и функции не вызываются.
Наличие USB-ключа
Наличие донгла "зануляется" в трёх местах. Две проверки в модуле обновления лицензии и один по программному таймеру.
Наличие долгла определяется по глобальному байту byte_8978AC. В идеале по трём указанным адресам 006BF9A7h, 006BFDB4h и 006C0117h, хорошо бы залить единицы. Однако для начальной проверки будет достаточно фикса в двух местах:
В дополнение надо симулировать наличие донгла, можно заменить данные по адресу .data:008978AC byte_8978AC db 0 с нуля на единицу. Кроме этого по адресу 6BFDCB необходимо в нижнюю часть аккумулятора загрузить единицу, то есть заменить MOV AL, db_8978AC на MOV AL, 1. Нопить не рекомендуется, хотя по умолчанию аккумулятор тут равен единице, т.к. байт наличия ключа может быть обнулён в других процедурах. Если есть желание занопить надо использовать 3 раза команду NOP, так как указанная команда MOV занимает три байта.
Байт byte_8978AC может принимать значения от 0 до 3, значения больше 1 предметно не изучались.
После этих процессов программное обеспечение будет якобы наблюдать USB-ключ.
Однако и после этой процедуры, команды из строки меню не работают.
Для отпускания команд на значения по умолчанию необходимо произвести несколько манипуляций в структуре хранения флагов, а именно по следующим адресам установить единицы:
89789C dw 1
8978A0 db 1
8978A4 dw 1
8978A8 dw 1
8978AC db 1
8978AD db 1
8978AE db 1
где DB - байт, DW - слово
Занопить команды MOV по адресам 6BF98Dh, 6BF99Bh, 6BF9A1h, 6BFBDBh, 6BFCC2h, 6BFBEEh, 6BFCC8h, 6BFD16h. А по адресам 6BF992h, 6BF9A7h, 6BF9B5h, 6BFDB4h, 6C0117h, 6BFB2Bh, 6BFB32h, 6BFF8Ah вместо пересылки нулей в команде MOV заменить на пересылку единиц. Для общего контроля состояния флагов необходимо контролировать адреса, представленные на рисунке ниже, кроме адреса 6BFF8Ah, на этом адресе сидит .text:006BFF8A mov [ebp+var_2E], 0
Есть варианты замены AND eax,1 (83E001) на ADD eax,1 (83C001). А XOR eax,eax (33C0) заменить на OR al,1 (0C01).
И в завершение запретить сброс ключа, заменив по адресу 6BF9D5h операцию XOR EAX, EAX на MOV AL, 1 (B001h).
Однако при вызовах информации о лицензии, каждый раз будет разное значение продолжительности лицензии.
Таймер
В программе находится таймер, который постоянно уменьшает время лицензии. Поправить декремент таймера лицензии можно заблокировать вызов процедуры call [EBX] FF5338h по адресу 568B3Fh, например её можно занопить тремя нопами. Если таймер не останавливать, в принципе все будет работать, однако, будет надоедать такое сообщение:
Вуаля, можно пробовать изучать программу дальше без ограничений. Делитесь информацией и статистикой.
Особенность
Есть проблема с самим программным обеспечением в рамках контроля параметра DecimalSeparator. Дело в том, что программное обеспечение не контролирует языковые и региональные параметры. В Канаде, например, целая и дробная часть отделяются знаком "точка", у нас - "запятая". Из-за этой особенности если открыть демонстрационные файлы и зайти в меню Setup\Options..., то получим ошибку:
Исправить данное недоразумение можно заменой значения знака "запятая" на знак "точка":
Сетевая активность
Для идентификации по сети используется IP адрес 198.166.45.240 на порту 58145. Однако для версии 4.0.7.0 есть специальный патч GeoStrip License Hotfix.exe. Назначение этого патча - замена указанного IP адреса на адрес Verify.Grsi.ca
На момент написания статьи указанный домен пинговался как 208.92.228.241. Хозяин домена в диапазоне 208.92.228.0 ÷ 208.92.231.255
Сам по себе патч содержит два файла:
- Regfind.exe - Инструмент поиска и замены данных в реестре.
Для того чтобы запретить для программного обеспечения стучать в сеть, можно заблокировать его на уровне брандмауэра. Например, создать командный файл (например gs.bat) с содержанием:
netsh advfirewall firewall add rule name=_GeoStripBlock dir=in action=block remoteip=198.166.45.240,208.92.228.241
netsh advfirewall firewall add rule name=_GeoStripBlock dir=out action=block remoteip=198.166.45.240,208.92.228.241
Если запустить такой батник, то будет создано два блокирующих правила в брандмауэре с именем _GeoStripBlock на входящие и исходящие пакеты на указанные пару IP адресов. Удалить правило можно вручную или создать командный файл с содержанием:
netsh advfirewall firewall delete rule name=_GeoStripBlock dir=in
netsh advfirewall firewall delete rule name=_GeoStripBlock dir=out
После выполнения командного файла блокирующие правила удалятся.
Драйвера
В комплекте с инсталлятором идут драйвера донгла-USB Dongle Installer.exe.
Замечу, что устанавливать драйвера ключей НЕ НАДО. Можно, однако, не несёт в себе ни какой пользы и смысловой нагрузки, только занимает системные ресурсы и место.
Новости
В сети "ожил" сайт компании NOV.COM на котором можно скачать последнюю инсталяшку v.4.0.8.15 (уже не доступна). Однако механизм не изменился. Краткую информацию по аналитике можно посмотреть в этой публикации.