Как пользоваться сканером epson v100

Обновлено: 27.04.2024

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

Не так давно в одной из своих статей я упоминал о покупке сканера для оцифровки моего домашнего старого фотоархива. Начал я со сканирования цветных слайдов начала 1970-х годов. О сканировании слайдов и приведении изображения в порядок и пойдёт речь ниже.

Замечу, что для сканирования плёнок есть и более дешёвые сканеры. У них характеристики хуже и по динамическому диапазону, и по разрешению, но ими тоже можно вполне качественно оцифровать плёнку. Можно и разницы не заметить. Единственное, что следует обратить особое внимание на то, чтобы в сканере присутствовала очень полезная технология устранения дефектов от пыли Digital Ice , о которой я упомяну ниже, или аналогичная (например, FARE).

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

Такие лентяи, как я, пропускают этот этап, и следующим шагом включают при сканировании режим © Digital Ice . Это программно-аппаратная технология удаления царапин и пыли с цветных фотоплёнок, которую поддерживают некоторые сканеры, в том числе и мой. К сожалению, технология не работает со старыми чёрно-белыми плёнками.

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

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

Разрешение при сканировании

Глубина цвета и формат файла

Сканер не выдаёт картинку в формате RAW, как зеркальный фотоаппарат. В RAW фотоаппарата доинтерполяционный размер файла может быть в 3, а то и в 6-7 раз (например, при сжатии без потерь в NEF) меньше, чем несжатый TIFF (при демозаике [дебайеризации] файл существенно разрастается). В сканере же, скорее всего, используется трёхлинейная матрица, и каждый пиксель честно считывается всеми тремя линиями (последовательно или одновременно — не знаю). Поэтому RAW в сканере не требует демозаики и уже содержит полную цветовую информацию о каждом пикселе. Видимо, поэтому, RAW в сканере, как таковой, не нужен, и изображение сразу сохраняется в TIFF.

Если кто поточнее владеет информацией по этому вопросу применительно к сканерам Epson V800/V850, отпишитесь пожалуйста, в комментариях. Интересует тип матрицы (трёхлинейная ли) и процесс считывания цветов пикселей (одновременно с разделением цветов или последовательно). И вся ли информация с матрицы сохраняется в TIFF.

Удаление крупных дефектов (Photoshop)

Бывает так, что © Digital Ice не справляется с крупными дефектами. Он пытается их заживить, но шрамы остаются. Поэтому следующим этапом будет открытие файлов в Фотошопе и использование инструмента «Точечная восстанавливающая кисть»:

Вы можете бесплатно скачать PDF-инструкции для Perfection V100 Photo Epson Сканеры.
У нас есть 1 бесплатных инструкций в PDF для Epson Perfection V100 Photo Сканеры.

Прочее Epson Сканеры

  • Сканеры Epson Perfection V370 Photo ScannerEpson Perfection V370 Photo Scanner Объявления
  • Сканеры Epson Perfection V600 Photo ScannerEpson Perfection V600 Photo Scanner Объявления
  • Сканеры Epson Perfection V850 Pro Photo ScannerEpson Perfection V850 Pro Photo Scanner Объявления и гарантия
  • Сканеры Epson Perfection V550 Photo Color ScannerEpson Perfection V550 Photo Color Scanner Объявления и гарантия
  • Сканеры Epson Perfection V330 Photo ScannerEpson Perfection V330 Photo Scanner Информационная брошюра о продукте
  • Сканеры Epson Perfection V39 ScannerEpson Perfection V39 Scanner Руководство по монтажу
  • Сканеры Epson Perfection 1260 ScannerEpson Perfection 1260 Scanner Объявления
  • Сканеры Epson Perfection 1200U Photo ScannerEpson Perfection 1200U Photo Scanner Основные принципы
  • Сканеры Epson GT-30000 Document ScannerEpson GT-30000 Document Scanner Внимание
  • Сканеры Epson GT-15000 ScannerEpson GT-15000 Scanner Внимание

Прочие продукты Epson

  • МФУ Epson WorkForce WF-2630 All-in-One PrinterEpson WorkForce WF-2630 All-in-One Printer Руководство по монтажу
  • Принтеры Epson WorkForce WF-2510WFEpson WorkForce WF-2510WF Главная инструкция
  • МФУ Epson WorkForce WF-3620 All-in-One PrinterEpson WorkForce WF-3620 All-in-One Printer Руководство для администратора
  • Многофункциональные принтеры Epson WorkForce Pro WF-5620 Network Multifunction Color PrinterEpson WorkForce Pro WF-5620 Network Multifunction Color Printer Руководство для администратора
  • Проекторы Epson BrightLink 450Wi Interactive ProjectorEpson BrightLink 450Wi Interactive Projector Размерные чертежи
  • Принтеры Epson XP-320Epson XP-320 Руководство по монтажу
  • Принтеры Epson XP-420Epson XP-420 Руководство по монтажу
  • Принтеры Epson WorkForce WF-2530Epson WorkForce WF-2530 Руководство по эксплуатации
  • МФУ Epson WorkForce WF-3640 All-in-One PrinterEpson WorkForce WF-3640 All-in-One Printer Руководство для администратора
  • Проекторы Epson BrightLink 480i Interactive XGA 3LCD Projector with MountEpson BrightLink 480i Interactive XGA 3LCD Projector with Mount Руководство по подключениям

Прочее Сканеры

  • Сканеры Datalogic Scanning 9504Datalogic Scanning 9504 Инструкция по эксплуатации
  • Сканеры Canon CanoScan LiDE220Canon CanoScan LiDE220 Руководство по началу работы
  • Сканеры Canon CanoScan LiDE120Canon CanoScan LiDE120 Руководство по началу работы
  • Сканеры Datalogic Scanning MAGELLAN 8500Datalogic Scanning MAGELLAN 8500 Инструкция по эксплуатации
  • Сканеры Datalogic Scanning 9500Datalogic Scanning 9500 Инструкция по эксплуатации
  • Сканеры Motorola LI4278Motorola LI4278 Краткое справочное руководство
  • Сканеры Fujitsu FI-6010NFujitsu FI-6010N Инструкция по эксплуатации
  • Сканеры Wasp Bar Code WPS100Wasp Bar Code WPS100 Инструкция по эксплуатации
  • Сканеры LXE MX7 MX7LXE MX7 MX7 Инструкция по эксплуатации
  • Сканеры Canon CanoScan FB 1200SCanon CanoScan FB 1200S Руководство по началу работы

612,592 мануалов 496,636 продуктов 5,202 брендов 1,872 категорий

_ ненужного дофига, в том числе программного обеспечения. Понапихали. как выяснилось, ничего не нужно ставить кроме самого драйвера принтера. Даже софтовое руководство (за неимением бумажного) - лишнее.

_ не поставляется бумажное руководство пользователя. только на диске в котором тоже толком ничего не объясняется.

_ инсталляция устройства странная. Меня удивило (хотя, возможно, что это впорядке теперешних вещей), что дивайс ни в коем случае нельззя коннектить с компьютером до инсталляции драйверов

_ Под win98 не встал (хотя заявлено, что должен вставать). Даже отчитался, что успешно проинсталлирован, но не встал

_ Крышка имеет сомнительную систему фиксации. Проскольку внятного описания нет, можно не догадаться - что это оно клинит и закрываться не хочет. Чуть не сломал нафиг - плстмасса тонкая, нежная, китайская. Оказывается, нужно весь поворотный блок вытянуть наружу, что бы ось вращения крышки вышла из фиксирующего паза (а то- кранты!)

_ Как правильно устанавливать слайд-адаптер "нарисовано". это крайне не подходящее слово (!) на внутренней стороне крышки за съемным "документ-матом". В том-то оно и дело, что во-первых надо догадаться снять "мат" и помотреть, что там между технических полостей слабенько-так выдавлено на серой ново-русско-офисного цвета пластмассе едва как нацарапано.
во-вторых, надо домыслить то, что ненарисовано и то, что нужно ли потом "мат" назад ставить? и если не нужно, то куда его девать-то, ведь его нужно тоже беречь как зеницу, поскольку пылиться ему нельзя, зарапаться - тоже, и на солнце - нежелательно.

_ Слайд-рамка такая хлипкая ( может это у них у всех так (?) ). Беру в руки как ребенка новорожденного. Вставлять у нее пленку неудобно, но привыкнуть можно, что уже, собственно, и стряслось.

_ нет кнопки "Выкл". Есть куча всяких ненужных типа "e-mail", "PDF", но поскольку он питается не по USB, а от своего БП, то неудобно каждый раз всовывать штекер питания, высовывать штекер питания. а оставлять "так", тоже не хочется - греется ощутимо, особенно тот угол, в котором эти ненужные кнопки.

Теперь о сканировании:

_ Нет возможности откадрировать каждый из слайдов (кадров) вручную сверх тех размеров, которые сканер определит сам при предварительном скане. Меньше - можно, а шире - нельзя. При этом он систематически обрезает края кадра, что не есть гуд. Как в мини-лабе - "наш фотоувеличитель срезает по 2мм с каждого края. претензии не принимаются"

_ при этом как-то случайным образом точные размеры каждого из автоматически определенных и засканированных кадров получаются всегда разными что создает проблемы при написании скрипта автоматической обработки кадров (например в Корел Фото-Пэйнте)

_ Нет возможности выставить тип пленки вручную или хотя бы проконтролировать - насколько Эпсон это "угадал". Я не уверен, что он знает канал маски для пленок типа Konica Centuria 1600

_ Нет возможности обозвать по-своему придуманный режим сканирования. Сохранить его можно, а вот назвать его например "режим сканирования для портретных съемок" - нельзя. Он называет это сам и присваивает настройке номер - хоть в тетрадку записывай какой номер для чего нужен.

_ из трех основных режимов сканирования (автоматический, простой и профессиональный) на что-то годится только "профессиональный", хотя это слово врядли тут уместно, так как сам прибор далеко не профессиональный.

_ Если говорить о заявленных параметрах, таких как максимальное оптическое разрешение и цветовая глубина, то это только цифры. Шум и невнятность изображения врядли даст возможность воспользоваться ими в пролной мере.

а вот то, что понравилось или, скажем так, возмущения не вызвало (впрочем, вышеперечисленное тоже не вызвало возмущения, но тем не менее, как положительное не рассматривается никак) и что оправдывает покупку сканера:

_ Когда привыкнешь, все в общем можно делать на автоматизме. Достаточно удобно и просто.

_ Превью-мод достаточно быстрый и информативный. Видно в целом - нужно сканировать этот кадр или вон - рядом есть получше

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

_ работает с основными графическими редакторами как сканер-утилита. То есть засканированный имидж сразу импортируется в среду ФотоШопа или Корел ФотоПэйнта. Промежуточного сохранения не требуется. Драйвер сканера вызывается из графического редактора

_ 6 заряженных кадров сохраняются раздельно автоматически

_ в конечном итоге результат вполне конкурирует с фотографией 10х15 или даже лучше. Если сравнивать с гоночным мини-лохо-лабом в сезон возвращения из отпусков, то результат будет на порядок лучше. Плюс - дешевле, так как за мутную фотографию не придется платить.

_ и последнее - тонкий он, компактный. Если временно не нужен, можно куда-нибудь спрятать подальше. и забыть.

Сканирование 6-кадрового блока при 3200 dpi/24bit (а больше - ни в коем случае не нужно) занимает 16 минут. Плюс перезарядка и превью-мод. Значит минут 20 на один блок уходит. В пленке таких блоков - 6. Итого: 1 пленка = 2 часа сканирования.

Благо, системные ресурсы не страдают и можно еще что-то делать не особо ресурсоемкое. Или просто делать что-то другое, а это - считай на "АвтоПилоте"

И вот первый результат этого учебного "полета". Сознаюсь, что немного, совсем чуть-чуть подправил в Corel Photo-Paint 11 яркость изображения. Цвет не корректировал. Да и сам еще помню - такая она и есть - Юлия Ломанова

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


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

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

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


В дизассемблере начинаем раскручивать цепочку вызовов. Функция открытия ссылки: Функция обработчика диалогового окна, из которого открывается ссылка:
  1. . text : 10001E60 sub_10001E60 procnear
  2. . text : 10001E60 movecx , [ esp + arg_4 ]
  3. . text : 10001E64 moveax , ecx
  4. . text : 10001E66 andeax , 0FFFFh
  5. . text : 10001E6B cmpeax , 110h
  6. . text : 10001E70 jgshort loc_10001EB7
  7. . text : 10001E72 jzshort loc_10001E9E
  8. . text : 10001E74 subeax , 2
  9. . text : 10001E77 jzshort loc_10001E83
  10. . text : 10001E79 subeax , 29h
  11. . text : 10001E7C jnzshort loc_10001E9B
  12. . text : 10001E7E jmp sub_10001D90
  13. . text : 10001E83 ; --------------------------------------
  14. . text : 10001E83 loc_10001E83 :
  15. . text : 10001E83 moveax , hWnd
  16. . text : 10001E88 push 1 ; nResult
  17. . text : 10001E8A pusheax ; hDlg
  18. . text : 10001E8B callds : EndDialog
  19. . text : 10001E91 mov hWnd , 0
  20. . text : 10001E9B loc_10001E9B :
  21. . text : 10001E9B xoral , al
  22. . text : 10001E9D retn
  23. . text : 10001E9E ; ---------------------------------------
  24. . text : 10001E9E loc_10001E9E :
  25. . text : 10001E9E movedx , [ esp + arg_C ]
  26. . text : 10001EA2 moveax , [ esp + arg_8 ]
  27. . text : 10001EA6 pushedx
  28. . text : 10001EA7 pusheax
  29. . text : 10001EA8 pushecx
  30. . text : 10001EA9 movecx , [ esp + 0Ch + arg_0 ]
  31. . text : 10001EAD pushecx
  32. . text : 10001EAE call sub_10001BB0
  33. . text : 10001EB3 addesp , 10h
  34. . text : 10001EB6 retn
  35. . text : 10001EB7 ; --------------------------------------------
  36. . text : 10001EB7 loc_10001EB7 :
  37. . text : 10001EB7 cmpeax , 111h
  38. . text : 10001EBC jnzshort loc_10001E9B
  39. . text : 10001EBE moveax , [ esp + arg_8 ]
  40. . text : 10001EC2 cmpax , 1
  41. . text : 10001EC6 jnzshort loc_10001ED0
  42. . text : 10001EC8 call sub_10001E40
  43. . text : 10001ECD moval , 1
  44. . text : 10001ECF retn
  45. . text : 10001ED0 ; --------------------------------------------
  46. . text : 10001ED0 loc_10001ED0 :
  47. . text : 10001ED0 cmpax , 2
  48. . text : 10001ED4 jnzshort loc_10001E9B
  49. . text : 10001ED6 call sub_10001B90
  50. . text : 10001EDB moval , 1
  51. . text : 10001EDD retn
  52. . text : 10001EDD sub_10001E60 endp
  1. . text : 10001920 DialogFunc procnear
  2. . text : 10001920 moveax , [ esp + arg_C ]
  3. . text : 10001924 movecx , [ esp + arg_8 ]
  4. . text : 10001928 movedx , [ esp + arg_4 ]
  5. . text : 1000192C pusheax
  6. . text : 1000192D moveax , [ esp + 4 + arg_0 ]
  7. . text : 10001931 pushecx
  8. . text : 10001932 pushedx
  9. . text : 10001933 pusheax
  10. . text : 10001934 call sub_10001E60
  11. . text : 10001939 addesp , 10h
  12. . text : 1000193C andeax , 0FFh
  13. . text : 10001941 retn 10h
  14. . text : 10001941 DialogFunc endp
  1. . text : 10001B20 sub_10001B20 procnear
  2. . text : 10001B20 TemplateName = byteptr - 14h
  3. . text : 10001B20 hWndParent = dwordptr 4
  4. . text : 10001B20 subesp , 14h
  5. . text : 10001B23 pushesi
  6. . text : 10001B24 pushedi
  7. . text : 10001B25 callds : GetUserDefaultLCID
  8. . text : 10001B2B andeax , 0FFh
  9. . text : 10001B30 cmpeax , 9
  10. . text : 10001B33 jzshort loc_10001B38
  11. . text : 10001B35 cmpeax , 11h
  12. . text : 10001B38 loc_10001B38 :
  13. . text : 10001B38 movedi , offset aImgdetaction_a
  14. ; "ImgDetACTION_A"
  15. . text : 10001B3D orecx , 0FFFFFFFFh
  16. . text : 10001B40 xoreax , eax
  17. . text : 10001B42 leaedx , [ esp + 1Ch + TemplateName ]
  18. . text : 10001B46 repnescasb
  19. . text : 10001B48 notecx
  20. . text : 10001B4A subedi , ecx
  21. . text : 10001B4C push 0 ; dwInitParam
  22. . text : 10001B4E moveax , ecx
  23. . text : 10001B50 movesi , edi
  24. . text : 10001B52 movedi , edx
  25. . text : 10001B54 pushoffset DialogFunc ; lpDialogFunc
  26. . text : 10001B59 shrecx , 2
  27. . text : 10001B5C repmovsd
  28. . text : 10001B5E movecx , eax
  29. . text : 10001B60 leaedx , [ esp + 24h + TemplateName ]
  30. . text : 10001B64 andecx , 3
  31. . text : 10001B67 repmovsb
  32. . text : 10001B69 movecx , [ esp + 24h + hWndParent ]
  33. . text : 10001B6D pushecx ; hWndParent
  34. . text : 10001B6E pushedx ; lpTemplateName
  35. . text : 10001B6F pushoffset ModuleName ; "EsImgDet.dll"
  36. . text : 10001B74 callds : GetModuleHandleA
  37. . text : 10001B7A pusheax ; hInstance
  38. . text : 10001B7B callds : DialogBoxParamA
  39. . text : 10001B81 popedi
  40. . text : 10001B82 popesi
  41. . text : 10001B83 addesp , 14h
  42. . text : 10001B86 retn
  43. . text : 10001B86 sub_10001B20 endp
И финальный пункт наших копаний внутри этой матрешки - функция, из которой открывается диалоговое окно с текстом об ограничениях. Она даже именная и даже экспортируется наружу из этой библиотеки.
  1. . text : 10001A00 public EsImgDetSecureDetectImage
  2. . text : 10001A00 EsImgDetSecureDetectImage procnear
  3. . text : 10001A00
  4. . text : 10001A00 var_1C = byteptr - 1Ch
  5. . text : 10001A00 var_18 = dwordptr - 18h
  6. . text : 10001A00 arg_0 = dwordptr 4
  7. . text : 10001A00 hWndParent = dwordptr 8
  8. . text : 10001A00 arg_8 = dwordptr 0Ch
  9. . text : 10001A00 arg_C = dwordptr 10h
  10. . text : 10001A00
  11. . text : 10001A00 moveax , [ esp + arg_C ]
  12. . text : 10001A04 movecx , [ esp + arg_8 ]
  13. . text : 10001A08 movedx , dword_1000EA88
  14. . text : 10001A0E subesp , 1Ch
  15. . text : 10001A11 pushesi
  16. . text : 10001A12 pusheax
  17. . text : 10001A13 pushecx
  18. . text : 10001A14 movecx , dword_1000EA8C
  19. . text : 10001A1A pushedx
  20. . text : 10001A1B call sub_100018F0
  21. . text : 10001A20 testeax , eax
  22. . text : 10001A22 jzshort loc_10001A33
  23. . text : 10001A24 moveax , [ esp + 20h + arg_0 ]
  24. . text : 10001A28 popesi
  25. ; Код возврата = -1
  26. . text : 10001A29 movdwordptr [ eax ] , 0FFFFFFFFh
  27. . text : 10001A2F addesp , 1Ch
  28. . text : 10001A32 retn
  29. . text : 10001A33 ; ----------------------------------------
  30. . text : 10001A33 loc_10001A33 :
  31. . text : 10001A33 movedx , dword_1000EA88
  32. . text : 10001A39 leaecx , [ esp + 20h + arg_C ]
  33. . text : 10001A3D pushecx
  34. . text : 10001A3E movecx , dword_1000EA8C
  35. . text : 10001A44 pushedx
  36. . text : 10001A45 call sub_100013B0
  37. . text : 10001A4A testeax , eax
  38. . text : 10001A4C jzshort loc_10001A5D
  39. . text : 10001A4E loc_10001A4E :
  40. . text : 10001A4E moveax , [ esp + 20h + arg_0 ]
  41. . text : 10001A52 popesi
  42. ; Код возврата = -1
  43. . text : 10001A53 movdwordptr [ eax ] , 0FFFFFFFFh
  44. . text : 10001A59 addesp , 1Ch
  45. . text : 10001A5C retn
  46. . text : 10001A5D ; ---------------------------------------
  47. . text : 10001A5D loc_10001A5D :
  48. . text : 10001A5D moveax , [ esp + 20h + arg_C ]
  49. . text : 10001A61 xoresi , esi
  50. . text : 10001A63 testeax , eax
  51. . text : 10001A65 jbeshort loc_10001A93
  52. . text : 10001A67 loc_10001A67 :
  53. . text : 10001A67 movedx , dword_1000EA88
  54. . text : 10001A6D leaecx , [ esp + 20h + var_1C ]
  55. . text : 10001A71 pushecx
  56. . text : 10001A72 movecx , dword_1000EA8C
  57. . text : 10001A78 pushesi
  58. . text : 10001A79 pushedx
  59. . text : 10001A7A call sub_100013D0
  60. . text : 10001A7F testeax , eax
  61. . text : 10001A81 jnzshort loc_10001A4E
  62. . text : 10001A83 cmp [ esp + 20h + var_18 ] , 1
  63. . text : 10001A88 jzshort loc_10001AA2
  64. . text : 10001A8A moveax , [ esp + 20h + arg_C ]
  65. . text : 10001A8E incesi
  66. . text : 10001A8F cmpesi , eax
  67. . text : 10001A91 jbshort loc_10001A67
  68. . text : 10001A93 loc_10001A93 :
  69. . text : 10001A93 moveax , [ esp + 20h + arg_0 ]
  70. . text : 10001A97 popesi
  71. ; Код возврата = 0
  72. . text : 10001A98 movdwordptr [ eax ] , 0
  73. . text : 10001A9E addesp , 1Ch
  74. . text : 10001AA1 retn
  75. . text : 10001AA2 ; --------------------------------------
  76. . text : 10001AA2 loc_10001AA2 :
  77. ; Вот тут вызывается диалоговое окно
  78. . text : 10001AA2 movecx , [ esp + 20h + hWndParent ]
  79. . text : 10001AA6 pushecx ; hWndParent
  80. . text : 10001AA7 call sub_10001B20
  81. . text : 10001AAC movedx , [ esp + 24h + arg_0 ]
  82. . text : 10001AB0 addesp , 4
  83. ; Код возврата = 1
  84. . text : 10001AB3 movdwordptr [ edx ] , 1
  85. . text : 10001AB9 popesi
  86. . text : 10001ABA addesp , 1Ch
  87. . text : 10001ABD retn
  88. . text : 10001ABD EsImgDetSecureDetectImage endp

Обратите внимание, что функция имеет несколько точек выхода, а именно четыре. Две из них возвращают код -1 (он же 0FFFFFFFFh), одна возвращает код 0 и одна, в которой открывается окно с запретом, возвращает код 1. Нетрудно догадаться, что "правильных" кодов возврата всего два - это 0 и -1. Чтобы не утруждать себя лишним кодокопанием, я просто заNOPлю условный переход по адресу 10001A22, чтобы код возврата всегда был -1. Сохраняем изменения, пытаемся сканировать.

Не тут-то было. Значит код возврата -1 соответствует ошибке. Остается второй вариант с нулевым кодом возврата. Заменяем аргумент функции MOV по адресу 10001A29 с -1 на 0. Сохраняем изменения, пробуем.

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

Читайте также: