Blog. Just Blog

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

Версия для печати Добавить в Избранное Отправить на E-Mail | Категория: Темная сторона Силы | Автор: ManHunter
Разблокировка сканирования банкнот на сканере EPSON Perfection V10/V100
Разблокировка сканирования банкнот на сканере EPSON Perfection V10/V100

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

Сообщение об ограничении сканирования
Сообщение об ограничении сканирования

Это просто немыслимо и не лезет вообще ни в какие ворота. Как может кусок пластика и кучка каких-то безымянных деятелей, запрограммировавших его, решать за меня, что мне можно сканировать, а что нельзя?! Я заплатил за сканер деньги, и волен засовывать в него что угодно, хоть книжки с картинками, хоть евро, да хоть жопу, если мне вдруг понадобится ее скан.

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

Единственная строка в ресурсах
Единственная строка в ресурсах

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

Строка ссылки в файле
Строка ссылки в файле

В дизассемблере начинаем раскручивать цепочку вызовов. Функция открытия ссылки:
  1. ; Открыть ссылку в браузере по умолчанию
  2. .text:10001E40 sub_10001E40    proc near
  3. .text:10001E40                 push    1               ; nShowCmd
  4. .text:10001E42                 push    0               ; lpDirectory
  5. .text:10001E44                 push    offset Parameters ; "explore.exe"
  6. .text:10001E49                 push    offset File     
  7. ; "http://www.rulesforuse.org"
  8. .text:10001E4E                 push    0               ; lpOperation
  9. .text:10001E50                 push    0               ; hwnd
  10. .text:10001E52                 call    ds:ShellExecuteA
  11. .text:10001E58                 retn
  12. .text:10001E58 sub_10001E40    endp
Функция обработчика диалогового окна, из которого открывается ссылка:
  1. .text:10001E60 sub_10001E60    proc near
  2. .text:10001E60               &n