
Разблокировка сканирования банкнот на сканере EPSON Perfection V10/V100

Разблокировка сканирования банкнот на сканере EPSON Perfection V10/V100
На днях решил пополнить коллекцию картинок отсканированными изображениями банкнот разных стран. Сканер EPSON Perfection V10/V100 без проблем проглотил отечественные рубли, американские доллары, египетские фунты с пиастрами, китайские юани, иорданские и тунисские динары. А вот при сканировании банкнот евро вместо ожидаемого результата я внезапно получил сообщение о том, что я не имею права сканировать эти банкноты и обрабатывать их изображения. Я уже не один год спокойно пользовался штатным софтом, который идет в комплекте со сканером, поэтому такой закидон оказался для меня неожиданностью.

Сообщение об ограничении сканирования
Это просто немыслимо и не лезет вообще ни в какие ворота. Как может кусок пластика и кучка каких-то безымянных деятелей, запрограммировавших его, решать за меня, что мне можно сканировать, а что нельзя?! Я заплатил за сканер деньги, и волен засовывать в него что угодно, хоть книжки с картинками, хоть евро, да хоть жопу, если мне вдруг понадобится ее скан.
Теперь поищем, откуда это сообщение появляется. Контекстным поиском по всем файлам в папке сканерного софта была обнаружена динамическая библиотека esimgdet.dll, в которой это сообщение находится. Отправляем ее в дизассемблер, параллельно посмотрим, где и как эта строка используется. В ресурсах она одна единственная, да еще и с индексом 1.

Единственная строка в ресурсах
Искать одинокую единичку в коде - это заведомо провальное занятие. Надо попробовать какой-нибудь другой путь. При нажатии в диалоговом окне кнопки Information, открывается говносайт с подробной информацией об этих самых ограничениях. А раз открывается ссылка, значит она тоже где-то должна быть. Далеко ходить не пришлось, вот она:

Строка ссылки в файле
В дизассемблере начинаем раскручивать цепочку вызовов. Функция открытия ссылки:
Code (Assembler) : Убрать нумерацию
- ; Открыть ссылку в браузере по умолчанию
- .text:10001E40 sub_10001E40 proc near
- .text:10001E40 push 1 ; nShowCmd
- .text:10001E42 push 0 ; lpDirectory
- .text:10001E44 push offset Parameters ; "explore.exe"
- .text:10001E49 push offset File
- ; "http://www.rulesforuse.org"
- .text:10001E4E push 0 ; lpOperation
- .text:10001E50 push 0 ; hwnd
- .text:10001E52 call ds:ShellExecuteA
- .text:10001E58 retn
- .text:10001E58 sub_10001E40 endp
Code (Assembler) : Убрать нумерацию
- .text:10001E60 sub_10001E60 proc near
- .text:10001E60 &n