-Музыка

Прикладные нужды для самых маленьких.

Суббота, 12 Января 2013 г. 16:56 + в цитатник

Не спрашивайте, зачем мне понадобилась эта программка, это частный заказ, я наткнулся на неё тупо вбив в поисковик. На сайте сказано, что человек хочет за полную версию тысячу рублей. Однако, это как раз тот случай, когда бесполезно искать лекарство к самописному софту, и проще покопаться, чем платить. На всё про всё ушло полчаса.




Демо софтины имеет полный функционал (который нужен), омрачаемый надписями ОБРАЗЕЦ как ватермарками на картинке. На принтер, вероятно, выводится то же самое (WYSIWYG). Я сделал вывод, что печатается не картинка (ибо фон важной бумажки пропадает на печати), а форма - то есть поля в текстовом виде передаются рендеру принтера, который отвечает за масштабирование и антиальязинг текста (таким образом выведенное на дисплей векторным, допустим, Arial, с отключенным ClearType, будет на принтер выводиться как надо гладким).


Артефакты демоверсии


Посмотрим что за зверь программка. Из предыдущей картинки сразу закралось подозрение - обратите внимание на до боли знакомый вид кнопок a-la Windows 98, что чаще всего указывало на то, что прога написана на MS Visual Basic 6, и контролы там выводились через свою библиотеку. И верно, PE Explorer показал, что это чистейший VB6 за счёт использования только MSVBVM60.DLL, библиотеки выполняющей роль виртуальной машины для P-кода, генерируемого компилятором. Ещё один аспект, почему программку нужно изучать внимательнее - есть паранойя, что она может стучать через сеть кому нужно о вводимых полях, и вскоре к вам в дверь постучат. Но нет, судя по используемым библиотекам, онлайном и не пахнет.


Изучаем зависимости (паранойя) и видим MSVBVM60


Однако дизассемблирование не принесёт нужных результатов в случае P-кода, посему запускаем декомпилятор VB Decompiler, что нам на руку, поскольку P-код (как и яву) зачастую гораздо удобнее разбирать в том виде, который «почти родной», очень близком к исходнику. Код не был обфусцирован, посему всё открылось как будто ты стоишь за спиной у автора. И здесь мы подтверждаем свою догадку - ватермарка ОБРАЗЕЦ является не более, чем текстовым полем Label на форме вывода. Всё слишком просто, ведь в этот массив Label'ов можно было забивать свойство Caption "ОБРАЗЕЦ" через Form.Load например так: CHR$ (412/2) & CHR$ (416/13) &..., если не хуже.


Через декомпилятор VB смотрим код и  встречающиеся значения


Мне было лень перекомпилировать чужие сырцы и плодить лишние баги, посему я просто решил поковырять бинарник через HEX-редактор в поисках нужной строчки дабы заменить символы СЕ 20 C1 20 D0 20 C0 20 C7 20 C5 20 D6 на сплошные пробелы (20). Нашёл как раз тот кусок поля, где описаны ресурсы.


Чтобы не перекомпилировать, просто меняем строки и пересчитываем checksum


Сохранил, через тот же PE Explorer пересчитал контрольную сумму (checksum) чтобы винда корректно проглотила EXE (оставалось опасение, что MSVBVM60 ругнётся на то, что где-то лежащая внутренняя сумма P-кода тоже изменена), но нет, всё работает. Поля выглядят как пробелы, на печать тоже не выводятся. Результат - чистое от ватермарков окошко.


Всё работает



Сия история ещё раз подтверждает вывод, высказанный ещё очень давно в правдивом труде «История программирования в СССР. Часть II. Окончание: 014. Программисты-профессионалы и программирующие инженеры» (ссылка на главу):

Теперь представим, что задание написать программу расчета балки получил профессиональный программист. Первое, что он сделает... нет, не бросится к компьютеру программный код писать, он вооружится блокнотом и пойдет «пытать» инженера-расчетчика: итак, какие же у нас исходные данные? Геометрические размеры – пролет балки и ее сечение. Ну, допустим, простейший случай – брус, высота и ширина. OK. И что программа должна делать, если пролет нулевой? Выдать сообщение об ошибке и остановиться? Какое сообщение? [...] Затем документ читается и согласовывается пользователем (почти всегда при этом – уточняется, правится и переписывается). Наконец утверждается начальством и... всего лишь две-три недели спустя программист приступает собственно к программированию. Помните, что инженер уложился в десять строчек кода? Так вот, программисту со всеми этими проверками, диагностиками и пересчетами придется написать эдак строк двести-триста...

То бишь в программках внутреннего или личного пользования, нужных для одной задачи, хватит и такого средства разработки, как VB6, и если продукт предусматривает пользователя, который называет системный блок процессором, то можно и не париться насчёт вообще какой-либо защиты, разве что скромно написать «хочу тысячу рублей за полную версию».

Рубрики:  этот удивительный мир вокруг нас
Метки:  



 

Добавить комментарий:
Текст комментария: смайлики

Проверка орфографии: (найти ошибки)

Прикрепить картинку:

 Переводить URL в ссылку
 Подписаться на комментарии
 Подписать картинку