Сейчас на форуме: Magister Yoda, vasilevradislav, tyns777, zombi-vadim (+3 невидимых) |
eXeL@B —› Программирование —› Прочитать изображение из чужого приложения |
Посл.ответ | Сообщение |
|
Создано: 04 марта 2008 16:43 · Личное сообщение · #1 Доброе время суток всем! Есть приложение, написано на Delphi7. В этом приложении открываются некие изображения GIF, которые хранятся на винте в зашифрованном виде. Искать алгоритм расшифровки мне уже надоело, очень мусорный код. Поэтому вопрос - можно ли средствами API или еще как-то из чужого запущенного приложения считать картинку хоть в каком-то виде? Идея заключается в том, чтобы программно управлять этой прогой - заставить его окрывать нужные мне картинки, ну а я их просто буду слизывать из него. Простой PrintScreen не подходит, т.к. поверх картинки выводится некоторое количество меток и кнопок, да и изображение масштабированное, а мне-бы в исходном размере... Картинка открывается, по всей видимости, в TImage32. Т.е. добраться до этого контрола как-то можно, а в нем должна быть где-то ссылка на bitmap в памяти, вот его-то и надо слизать немасштабированный. |
|
Создано: 04 марта 2008 17:51 · Поправил: Isaev · Личное сообщение · #2 |
|
Создано: 04 марта 2008 18:10 · Личное сообщение · #3 Когда картинка на экране, то уже расшифрована. Можно сделать так: сохраняешь память процесса чем то типа artmoney либо DetectiveStory. Далее в дампе руками либо r-studio находишь картинки. Если это битмап без заголовка, то поможет imgrab 1.7 (смотри ссылку в новостях на сайте). Но метод этот гиморный, лучше реверси прогу. |
|
Создано: 06 марта 2008 12:23 · Личное сообщение · #4 Руками не подходит, т.к. надо получить не одну-две картинки, а несколько тысяч. С реверсом повозился, там был ASProtect+конверт Guardant+куча вызовов API Guardant во время работы приложения. И вроде бы модуль, где открывается картинка, получил в более-менее удобоваримом виде после того, как несколько раз прогнал в DeDe (там много нестандартных компонент, постепенно добавлял сигнатуры для них...). Короче вроде б увидел алгоритм распаковки картинки, написал прогграммку с этим алгоритмом. И что инетерсно - большая часть картинок не расшифровывается, НО парочка расшифровались в нормальные человечские gifы, а еще несколько получились странными - открываются, но не полностью, а где-то на 2/3 сверху, а внизу 1/3 безобразие в духе белого шума на телеке... |
|
Создано: 18 марта 2008 21:18 · Личное сообщение · #5 Справку по WinAPI в Дельфи почитай (Help - Windows SDK), а еще DelphiWorld delphiworld.narod.ru/dw.html Function WindowToBMP(WD: HWND ): TBitmap;
WinDC:=GetWindowDC(Wd); ShowWindow(Wd, SW_SHOW); BringWindowToTop(WD); try BitBlt( Canvas.Handle, 0, 0, Width, Height, WinDC, 0, 0, SRCCOPY); finally end; end; end; |
|
Создано: 19 марта 2008 10:37 · Личное сообщение · #6 |
|
Создано: 19 июня 2008 11:35 · Личное сообщение · #7 |
eXeL@B —› Программирование —› Прочитать изображение из чужого приложения |