ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > Программирование > С/С++, C#, Delphi, .NET, Asm
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

GDI - Блокирование экрана
  #1  
Старый 28.02.2010, 19:03
slesh
Reservists Of Antichat - Level 6
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме:
3288241

Репутация: 3349


Отправить сообщение для slesh с помощью ICQ
По умолчанию GDI - Блокирование экрана

Облазел пол инета, так и не нашел инфы по этому поводу, но точно уверен что она есть )

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

Пару месяцев назад мельком видел подобный код, но както не обратил внимание как это сделано было, но код был ооочень коротки.

И вот главное:
0) толко юзермодный код, без каких либо дров.
1) без DirectX/OpenGL
2) код чисто на WinAPI с использованием GDI
3) при этом создание полноэкранного окна которое поверх всех окон - не предлагать.

Суть метода который видел:
Какимто образом всё рисовалось поверх всего, и даже перемещение формы над этим местом ни затирало данные. т.е. по аналогии с рисованием на GetDC(0) тока какбы уровнем выше где обычные проги не смогут стереть. Код был коротки и без всякого извращения.
 
Ответить с цитированием

  #2  
Старый 28.02.2010, 20:27
flacs
Познающий
Регистрация: 28.01.2009
Сообщений: 90
Провел на форуме:
432613

Репутация: 80
По умолчанию

Предлагаю копать в сторону DrawEscape/Escape
Цитата:
Функции (Escape и DrawEscape, соответственно) дают возможность программе выполнять действия, не реализованные средствами GDI. Естественно, наличие таких функций отчасти противоречит идеологии аппаратной независимости, но тем не менее они есть

Объявления
Код:
function DrawEscape(DC: HDC; p2, p3: Integer; p4: LPCSTR): BOOL; stdcall; external 'gdi32.dll' name 'DrawEscape';
function Escape(DC: HDC; p2, p3: Integer; p4: LPCSTR; p5: Pointer): Integer; stdcall; external 'gdi32.dll' name 'Escape';
_http://www.realcoding.net/article/view/1985 - тут подробная информация о структурах

Последний раз редактировалось flacs; 28.02.2010 в 20:29..
 
Ответить с цитированием

  #3  
Старый 28.02.2010, 23:43
slesh
Reservists Of Antichat - Level 6
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме:
3288241

Репутация: 3349


Отправить сообщение для slesh с помощью ICQ
По умолчанию

Если не знаешь наверняка, то лучше не пиши.

Данные функции созданы совершенно для других целей.
Они являются частью системы работы с метафайлами и если метафайл должен вызвать какойто код, то это он делает через эскейп, т.е. вызывается адрес указанный в ней. Мего известная бага WMF, как раз и была основана на вызове шеллкода через функцию эскейп.
 
Ответить с цитированием

  #4  
Старый 01.03.2010, 00:16
ex3me
Участник форума
Регистрация: 07.01.2009
Сообщений: 186
Провел на форуме:
1247273

Репутация: 166
Отправить сообщение для ex3me с помощью ICQ
По умолчанию

Ой блин slesh. Я не мего кодер, но чувак предложил просто вариант... Не у всех голова варит в таком диапазоне, как у тебя =\
 
Ответить с цитированием

  #5  
Старый 01.03.2010, 00:36
slesh
Reservists Of Antichat - Level 6
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме:
3288241

Репутация: 3349


Отправить сообщение для slesh с помощью ICQ
По умолчанию

2 ex3me я ничего не имею против предложений которые реально по теме, даже пусть самые бредовые но по теме. Или же когда есть реальный вариант копать материал в нужном направлении, а тут дело совершенной в другом, темболее что MSDN есть у многих, а у кого нет то есть инет. И там описано что за функция и что она делает.

А если по теме, то перерыл все функции GDI работы с устройства или контекстом устройств и там нет ни единой зацепки по этому поводу :'(
 
Ответить с цитированием

  #6  
Старый 01.03.2010, 01:19
geezer.code
Reservists Of Antichat - Level 6
Регистрация: 22.01.2007
Сообщений: 616
Провел на форуме:
7452489

Репутация: 1359


По умолчанию

хоть ты и просил не писать если не уверен, но может
нужно создать новый контекст, и уже на нем рисовать.
что-то вроде:
HDC hDC = CreateDC("DISPLAY", NULL, NULL, NULL);

сорри если не в тему.
 
Ответить с цитированием

  #7  
Старый 01.03.2010, 01:45
BrainDeaD
Постоянный
Регистрация: 09.06.2005
Сообщений: 531
Провел на форуме:
3516666

Репутация: 439


По умолчанию

сабж тоже интересует. слеш, если найдёш снова тот код, скинь ссылку плиз.
 
Ответить с цитированием

  #8  
Старый 01.03.2010, 01:49
Kaimi
Reservists Of Antichat - Level 6
Регистрация: 23.08.2007
Сообщений: 1,237
Провел на форуме:
18127311

Репутация: 1676


Отправить сообщение для Kaimi с помощью ICQ
По умолчанию

Цитата:
Необходимо временно заблокировать перерисовку экрана и вывод на экран.
Вариант?
Код:
SendMessage(GetDesktopWindow (), WM_SETREDRAW, false, 0);
 
Ответить с цитированием

  #9  
Старый 01.03.2010, 10:41
slesh
Reservists Of Antichat - Level 6
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме:
3288241

Репутация: 3349


Отправить сообщение для slesh с помощью ICQ
По умолчанию

хм. почти оно. т.е. экран заблокирован. Но теперь возникает другая проблема:
Чтобы что-то вывести, необходимо сначала нарисовать это а тока потом заблокировать экран, чтобы перерисовать то что нарисовал, то нужно снова разблокировать экран.
Тут как я понимаю нужно теперь каким-то образом определить адрес экранного буфера для данного контекста и выводить информацию напрямую в буфер.
Так что остаётся последняя задача )
 
Ответить с цитированием

  #10  
Старый 01.03.2010, 15:31
transserg
Участник форума
Регистрация: 02.07.2008
Сообщений: 132
Провел на форуме:
1035284

Репутация: 52
Отправить сообщение для transserg с помощью ICQ
По умолчанию

Цитата:
Сообщение от Kaimi  
Вариант?
Код:
SendMessage(GetDesktopWindow (), WM_SETREDRAW, false, 0);
на 7ке если вызвать диспетчер (Cntrl+Alt+Del) то все перестает работать... на висте думаю будет так же... и на тех компах на которых для входа требуется нажать CAD...
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Скрытая вредоносная вставка в deb-пакете с хранителем экрана waterfall lukmus Мировые новости 2 16.12.2009 10:49
Перчатки - не помеха для мультисенсорного экрана V100 Tablet PC aim Новости мира "железа" 0 09.10.2009 17:43
В Skype для Windows появилась поддержка совместного использования экрана winner13 Мировые новости 2 01.07.2009 22:34
Непонятное блокирование 80 порта Margin Безопасность 3 21.04.2009 00:42
VB.NEN Вопрос: Обработка изображения скринов с экрана TikTik С/С++, C#, Delphi, .NET, Asm 6 13.03.2009 11:35



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ