Как объединить два диска в один: варианты слияния. Суперклей Хакера: новый способ склеить два исполняемых файла Соединить две фотографии

Доброго времени суток, уважаемые читатели моего блога. Знаете, что отличает профессионала от новичка? Первого не пугает никакая трудность, с чем бы он не столкнулся. Успешные люди действуют невзирая ни на что. А тем, кому достичь высот не суждено, находят всяческие отговорки, чтобы оправдать собственный страх или лень.

Сегодня мы поговорим о том, как соединить видео в одно. Я расскажу о нескольких способах это сделать. Какой выбрать – решать вам. Для начала мне хотелось бы сказать несколько слов о самих методах, ведь на самом деле от первых решений ваша судьба зависит намного больше, чем вы думаете.

Эта информация позволит вам не ошибиться и сэкономить время.

Как не ошибиться новичку, делая выбор

Существует три разновидности способов, благодаря которым вы можете объединить 2 ролика в один.

  • Онлайн редакторы

Например, www.youtube.com/editor , www.moviemasher.com , www.cellsea.com/free-online-video-editor .

  • Простенькие программки

ВидеоМОНТАЖ , Windows Movie Maker или Киностудия Windows, Pinnacle VideoSpin, Movavi Video Editor.

  • Premiere Pro

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

Онлайн сервисы

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

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

Программы

Второй способ более продвинут. Казалось бы. Однако, в «Видеомонтаж» и Pinnacle невероятно мало функций. Movie maker вы не скачаете, если у вас взломанный Windows, а такой, я думаю, у большинства. Movavi стоит денег.

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

Я прочитал уйму статей с миллионом уверений в том, что program free и все просто замечательно, но по факту практически всегда вылезает уйма недостатков. В итоге я намучался и плюнул на все. Мовави порадовал больше остальных, и мне вроде бы не жалко денег, но за что я буду платить? Я хочу получить качественное оборудование, которое пригодится мне и в дальнейшем.

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

Во-первых, не стоит забывать о престиже, а, во-вторых, простая программа не справится с серьезной задачей. Вам не удастся прыгнуть выше головы, даже если вы будете к этому готовы. Придется постоянно ходить вокруг да около уже проверенных средств. Чтобы развиться придется качать Premiere Pro.

Premiere Pro

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

Кстати, почему-то именно название чаще всего и пугает новичков: «Ну я тут ничего не пойму, поэтому не буду даже пытаться». Пользуясь онлайн сервисами и простыми редакторами вы обрезаете себе крылья. Вы не даете себе ни единого шанса развиваться дальше, становиться профессионалом и на своем хобби.

Сейчас вам нужно решить очень простую задачу, а именно превратить два видео в одно. Уже этим решением вы можете загубить все свое будущее. Быть может пришло время преодолеть эту преграду и наконец-то скачать то, о чем все давно говорят и опробовать свои силы?

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

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

Как в течение нескольких секунд склеить ролик

Итак, теперь покажу как действовать. Открываете программу и сразу, чтобы было удобно находите в верхней части меню «Окно» — «Рабочие среды» — «Редактирование».

Теперь открываете папку с вашими роликами. Просто при помощи «Мой компьютер» или открываете папку на рабочем столе. В самой проге ничего делать и нажимать не нужно. Перетаскиваете в нижнюю область сначала первое видео, ждете когда оно загрузится, а затем второе.

В принципе готово. Но, как вы видите, у меня получилось небольшое расстояние между роликами. Выбираю инструмент «Стрелка».

Зажимаю левую кнопку мыши и двигаю второй ролик поближе к первому.

Все. Готово. Однако, есть небольшой нюанс. Если вы захотите сохранить ролик, то в Premiere Pro не получится пользоваться стандартным способом «Файл» — «Сохранить как…». Иначе видео можно будет открыть только при помощи того же Премьера.

В этом же самом разделе «Файл» выберите «Экспортировать, а затем найдите «Медиаконтент».

Все. Вы создали ваш первый проект в программе Premiere Pro. Готово.

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

Если ждать не хочется и вас действительно интересует видео и Премьер Про, советую обзавестись очень полезным курсом. Тем более, что в интернете он один такой. Полный и на русском языке видеокурс «Супер Premiere Pro» .

Ну вот и все. Теперь вы знает все что необходимо и я могу попрощаться. Подписывайтесь на мою группу Вконтакте . До новых встреч.

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

Существует целое семейство утилит, предназначенных для склейки нескольких программ в один файл, с общим названием «джойнеры» (от английского «joiner» - «соединитель»):
Joiner by Blade , SuperGlue , MicroJoiner , Juntador и множество других. Их подробный обзор можно отрыть в статье « ». Однако качество склейки оставляет желать лучшего. Большинство джойнеров просто помещают внедряемый файл в оверлей основного exe-файла и при запуске копируют его на диск во временную папку или, еще чаще, в системный каталог Windows, прав записи в который у простого пользователя, не сидящего под администратором, разумеется, нет, и операция накрывается медным тазом. В любом случае копирование занимает какое-то время, замедляя загрузку программ, что рождает в голове пользователе смутные подозрения.

Более совершенные джойнеры работают по принципу
упаковщиков исполняемых файлов и проецируют внедренный exe непосредственно в оперативную
память, что не только ускоряет загрузку, но и, с точки зрения PE-формата, выглядит намного более
политкорректно («честный» PE-файл с оверлеем - это редкость).
Однако все джойнеры без исключения рано или поздно попадают в антивирусные базы, поскольку представляют собой готовые утилиты, в которых легко выделить постоянную сигнатуру (даже если они выполнены на полиморфной основе).

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

Как мы будем действовать

Всякий exe-файл импортирует одну или несколько динамических библиотек (Dynamic Link Library, или сокращенно DLL), прописанных в таблице импорта. При запуске exe-файла системный загрузчик анализирует таблицу импорта, загружает все перечисленные в ней динамические библиотеки, вызывая функцию DllMain для инициализации каждой DLL, и только после этого передает управление на оригинальную точку входа (Original Entry Point, или сокращенно OEP) запускаемого exe-файла.

Таким образом, если мы добавим в таблицу импорта подопытного exe-файла свою DLL, проблема внедрения X-кода будет успешно решена. Самое замечательное, что DLL может быть написана на любом языке (хоть на ассемблере, хоть на DELPHI) и совершенно неподвластна антивирусам, поскольку они органически неспособны распознавать неизвестную заразу. Ах да… Эвристические анализаторы. Но эти штуки очень легко обойти (чему посвящено множество статей, в том числе и моих, которые можно найти на
http://nezumi.org.ru).

Подготовка к экспериментам

Прежде чем вторгаться в базовые структуры PE-файла, неплохо бы получить общее представление о его устройстве. В MSDN входит спецификация на PE-формат («Microsoft Portable Executable and Common Object File Format Specification»), написанная на враждебном для нас английском языке и ориентированная преимущественно на честных программистов. Мыщъх исправил этот недостаток, переведя спецификацию на русский язык и переориентировав ее на хакеров. Электронная копия доступна для бесплатной скачки по адресу
http://nezumi.org.ru/souriz/PE-desc-n-inject.zip
и на диске к журналом.

Ок, теперь подготовим «дрозофилу», предназначенную для внедрения X-кода. Ее пример, написанный на языке Си, приведен ниже:

#include main() { printf("I"m nezumi\n"); // выводим что-нибудь на экран }

Компилируем ее любым подходящим компилятором (например, в случае Microsoft Visual C++ командная строка будет выглядеть так: «$cl.exe inject.c»). После этого на диске образуется файл inject.exe, при запуске выдающий на экран следующее приветствие (обращаем внимание, что это консольная программа, которая должна запускаться из-под FAR"а или штатного командного интерпретатора cmd.exe; при запуске из проводника окно консоли автоматически закроется сразу же после завершения программы, и мы ни хвоста не увидим):

$inject.exe
I"m nezumi

Разобравшись с «дрозофилой», займемся подготовкой динамической библиотеки, то есть того самого X-кода, который мы будем внедрять внутрь inject.exe. В простейшем случае исходный код будет выглядеть так:

#include #include // создаем фиктивную экспортируемую функцию, // которую потом будет импортировать «дрозофила» __declspec(dllexport) int dummy(){ return 0;} /* точка входа в dll, получающая управление при различных обстоятельствах */ BOOL WINAPI DllMain(HINSTANCE hinstDLL,DWORD fdwReason,LPVOID lpvReserved) { // приветствие, выводимое до запуска «дрозофилы» if (fdwReason==DLL_PROCESS_ATTACH) printf("hello,world!\n"); // приветствие, выводимое перед завершением работы «дрозофилы» if (fdwReason==DLL_PROCESS_DETACH) printf("good-bye,world!\n"); }

Обрати внимание, что DllMain, в отличие от EntryPoint, вызывается многократно: а) при подключении к процессу; б) при завершении процесса или выгрузки динамической библиотеки API-функцией FreeLibrary; в) при создании процессом нового потока; г) при завершении одного из существующих потоков процесса. Другими словами, DllMain позволяет отслеживать определенные системные события и адекватно реагировать на них. В данном случае мы выводим «hello, world!» перед запуском «дрозофилы» и «good-bye, world!» перед завершением ее работы.

Компиляция динамической библиотеки осуществляется следующим образом: «$cl.exe injected_dll.c /LD», где ключ ‘/LD’ сообщает компилятору, что необходимо сгенерировать именно DLL, а не EXE (как это происходит по умолчанию).

Внедрение X-DLL в таблицу импорта «дрозофилы»

Берем в свои загребущие лапы hiew, открываем файл inject.exe, переходим в hex-режим по , давим для отображения PE-заголовка, нажимаем (Dir) и среди прочих элементов IMAGE_DATA_DIRECTORY выбираем секцию импорта (Import), расположенную в нашем случае по RVA-адресу, равному 5484h и раскинувшуюся в ширину на целых 28h байт (смотри рисунок 1).

Клавиша переносит нас к структуре Import Directory Table, о которой мы поговорим чуть позже. А пока обсудим, как найти указатель на Import Directory Table при отсутствии hiew"а.

Двойное слово, лежащее по смещению 80h от начала PE-заголовка (легко опознаваемого визуально по сигнатуре PE), и есть RVA-адрес, указывающий на Import Directory Table, а следующее двойное слово хранит ее размер. Так что для поиска таблицы
импорта hiew совсем необязателен.

Таблица импорта представляет собой достаточно сложное сооружение иерархического типа. Вершину иерархии занимает структура Import Directory Table, фактически являющаяся массивом подчиненных структур типа IMAGE_IMPORT_DESCRIPTOR, каждая из которых содержит RVA-указатель на имя загружаемой динамической библиотеки, ссылки на OriginalFirstThunk и FirstThunk с именами/ординалами импортируемых функций (причем поле OriginalFirstThunk не является обязательным и может быть равно нулю). Два других поля - TimeDateStamp (временная отметка) и ForwarderChain (форвардинг) - также необязательны, и потому для подключения своей собственной DLL нам необходимо заполнить всего лишь два поля структуры IMAGE_IMPORT_DESCRIPTOR: Name и FirstThunk, а также создать таблицу Import Address Table (сокращено IAT), импортирующую по меньшей мере одно имя (в данном случае
dummy).

typedef struct _IMAGE_IMPORT_DESCRIPTOR { union { DWORD Characteristics; // 0 for terminating null import descriptor DWORD OriginalFirstThunk; // RVA to original unbound IAT }; DWORD TimeDateStamp; // TimeDateStamp DWORD ForwarderChain; // -1 if no forwarders DWORD Name; // name of the dll DWORD FirstThunk; // RVA to IAT } IMAGE_IMPORT_DESCRIPTOR;

Если вместо стройной иерархии структур в нашей голове образовалась каша, не стоит волноваться - это нормально! Постепенно она утрясется и все структуры встанут на свои места, так что оставим их дозревать, а сами сосредоточимся на текущих проблемах. Чтобы внедрить X-DLL в Import Directory Table, необходимо добавить еще один экземпляр структуры IMAGE_IMPORT_DESCRIPTOR. Но просто так сделать это не получится, поскольку сразу же за концом Import Directory Table начинается IAT первой динамической библиотеки, и нам просто некуда втиснуться, если, конечно, не перенести Import Directory Table в какое-нибудь другое место! А что?! И перенесем!

Повторяем описанную последовательность действий с hiew"ом еще раз, идя в начало таблицы импорта (а точнее, как мы уже знаем, на первый элемент Import Directory Table), давим («звездочку» на цифровой клавиатуре) и, перемещаясь курсорными клавишами, выделяем бордовым цветом 28h байт (размер Import Directory Table). После этого давим еще раз и, нажав , сохраняем блок в файл, для определенности назвав его idt-org.

Теперь, прокручивая файл, клацаем До тех пор, пока не выйдем на оперативный простор свободного места, оккупированного длинной вереницей нулей. В нашем случае это место располагается по адресу 405810h, непосредственно за концом таблицы импорта.

Далее нам необходимо скопировать оригинальную Import Directory Table на новое место, не забыв при этом зарезервировать место для одного элемента структуры типа IMAGE_IMPORT_DESCRIPTOR, в который мы чуть позже поместим нашу динамическую библиотеку. Она будет проинициализирована самой первой, что очень полезно для борьбы с антивирусами, иммунизирующими exe-файлы путем прививки им специальной dll-вакцины, выполняющей проверку целостности содержимого образа исполняемого файла.

Поскольку, как нетрудно подсчитать, размер структуры IMAGE_IMPORT_DESCRIPTOR составляет 14h байт, а незанятая область начинается с адреса 405810h, мы должны передвинуть курсор по адресу 405824h, нажать , выделить 28h байт (размер оригинальной Import Directory Table) и нажать еще раз, а потом обязательно переместить курсор в начало выделенного блока. Далее жмем (Get Block), вводим имя файла, в который мы только что сохранили блок, - idt-org и считываем его с диска.

Теперь возвращаемся в начало файла и корректируем RVA-адрес таблицы импорта, который в данном случае составит 5824h. У тебя может возникнуть вопрос: почему 5824h, а не 405824h?! Да потому что RVA-адреса получаются путем вычитания базового адреса (прописанного в заголовке PE-файла и в нашем случае равного 400000h) из виртуального адреса (равного 405824h). Причем, с учетом порядка старшинства байт, принятого на процессорах x86 (младшие биты располагаются по меньшим адресам), мы должны записать 24 58, а не 58 24, как делают многие начинающие хакеры, удивляясь потом, почему оно не работает.

Значит, открываем файл inject.exe в hiew"e, находим PE-сигнатуру, опускаем курсор вниз на 80h байт, видим там 84 54 (смотри рисунок 1), нажимаем для разрешения редактирования, меняем адрес на 24 58, сохраняем изменения по и выходим… за пивом. Пиво для хакеров - это святое!

Проверяем работоспособность файла - а вдруг она пострадала?! Запускаем inject.exe и (если все операции были проделаны правильно) на экране появится триумфальное приветствие. В противном же случае система откажется загружать файл или выбросит исключение.

Смочив пересохшее горло, приступаем к самой сложной и самой ответственной части - заполнению структуры IMAGE_IMPORT_DESCRIPTOR. Начнем с того, что переместим курсор в конец Import Directory Table, подогнав его к адресу 405850h, и запишем имя функции-пустышки (dummy), оканчивающееся нулем и предваренное двумя нулями, а следом за ним – имя внедряемой динамической библиотеки injected_dll.dll. Впрочем, порядок их расположения может быть и другим, системному загрузчику на такие мелочи уже давно положить.

Сделав это, перемещаемся на первый байт, ранее зарезервированный нами для структуры IMAGE_IMPORT_DESCRIPTOR, и начинаем колдовать. Первое двойное слово оставляем равным нулю. За ним идут 4 байта, отведенные для TimeDataStamp, и мы, желая слегка поизвращаться, занесем сюда IAT, то есть двойное слово, содержащее RVA-адрес импортируемой функции. В нашем случае эта функция зовется dummy, а ее имя (предваренное двумя нулями!) начинается с RVA-адреса 5850h. Учитывая обратный порядок байт на x86, пишем: 50 58. Пропустив следующее двойное слово (Forwarder Chain), в поле Name записываем RVA-адрес имени внедряемой динамической библиотеки injected_dll.dll, в нашем случае равный 5858h. Остается заполнить последнее поле - Import Address Table, содержащее RVA-адрес таблицы IAT, размещенной нами поверх поля TimeDateStamp с RVA-адресом, равным 5814h.

Вот, собственно говоря, и все… После добавления новой структуры IMAGE_IMPORT_DESCRIPTOR в массив Import Directory Table, последний будет выглядеть так:

00405810:00 00 00 00-50 58 00 00-00 00 00 00-58 58 00 00 PX XX .00405820:14 58 00 00-AC 54 00 00-00 00 00 00-00 00 00 00 ¶X мT .00405830:00 58 00 00-00 50 00 00-00 00 00 00-00 00 00 00 X P .00405840:00 00 00 00-00 00 00 00-00 00 00 00-00 00 00 00 .00405850:00 00 64 75-6D 6D 79 00-69 6E 6A 65-63 74 65 64 dummy injected .00405860:5F 64 6C 6C-2E 64 6C 6C-00 00 00 00-00 00 00 00 _dll.dll

Остается сущая мелочь. Надо вернуться в начало файла, отсчитать от PE-заголовка 80h байт, исправив указатель на таблицу импорта с 5824h на 5810h и увеличив ее размер до 3Сh. Сохраняем проделанные изменения и, набрав побольше воздуха в грудь, запускаем файл
inject.exe:

$inject.exe
hello,world!
I"m nezumi
good-bye,world!

Это работает! Причем не просто работает, а очень даже хорошо работает. Внедренная динамическая библиотека послушно выводит «hello, world!» еще до запуска файла-«дрозофилы» и «good-bye, world!» непосредственно перед ее завершением! Красота! Вот только… посторонняя DLL нам очень сильно мешает, вызывая естественное желание задвинуть ее куда-нибудь подальше. И тут мы плавно переходим ко второй части нашего рассказа.

Копирование X-DLL в NTFS-stream

Файловая система NTFS выгодно отличается от FAT"а тем, что поддерживает потоки (streams). Их еще называют атрибутами (attributes), но чтобы не путать их с атрибутами типа «только на чтение», мы будем придерживаться первого термина. Каждый файл имеет минимум один безымянный поток, хранящий актуальные данные файла. Именно его размер высвечивает проводник Windows и продвинутые файловые менеджеры типа FAR"а. Однако мы можем создавать и дополнительные потоки, отделяя их имя от имени файла знаком двоеточия («:»), например: my_file:my_stream1, my_file:my_stream2. Штатные средства Windows не поддерживают работу с именованными потоками, и потому добраться до их содержимого не так-то просто. Не существует никакой (стандартной) возможности определить, имеет ли данный файл именованные потоки или нет.

Чувствуешь, куда я клоню? Давай спрячем X-DLL внутрь inject.exe, поместив ее в именованный поток. Внимание! Это совсем не то же самое, что тупо склеить два файла, как поступает большинство джойнеров. При копировании X-DLL в NTFS-поток видимый размер «дрозофилы» не увеличивается, и при открытии файла inject.exe функцией fopen("inject.exe", "rb"), никаких следов присутствия X-DLL в ней не окажется! Более того, при передаче файла через http для проверки антивирусной службой в online, передается только безымянный поток (содержащий полезную программу без X-DLL), и, естественно, антивирусы в ней ничего не обнаружат. Кстати говоря, большинство антивирусов сканирует только безымянный поток! Так что X-DLL может чувствовать себя в относительной безопасности, тепле, сухости и комфорте.

Расклад ясен? Тогда действуем. Открываем inject.exe в hiew"е, привычным движением переходим к таблице импорта: , , , <стрелка «вниз»>, . Меняем имя динамической библиотеки injected_dll.dll на inject.exe:x.dll, где inject.exe - имя подопытного файла, в который мы собираемся внедрить X-DLL, а x.dll – имя самой внедряемой динамической библиотеки.
Теперь необходимо скопировать injected_dll.dll в inject.exe:x.dll, что легко осуществить с помощью FAR"а. Подогнав курсор к динамической библиотеке injected_dll.dll, нажимаем и пишем «inject.exe:x.dll». Все! По завершении копирования исходную динамическую библиотеку injected_dll.dll можно удалить. Больше она нам не понадобится. Кстати говоря, размер файла inject.exe после создания нового именованного потока не увеличился ни на байт! Дисковые ревизоры (вместе с прочими системами контроля) тут просто отдыхают.

Теперь запускаем файл inject.exe и убеждаемся, что его работоспособность в результате последних манипуляций ничуть не пострадала.

Переход от теории к практике

Внедрение своей собственной динамической библиотеки - это, конечно, очень хорошо, но на практике гораздо чаще приходится сталкиваться с тем, что требуется
внедрить чужой исполняемый файл . Что делать?! Преобразовывать его в DLL?! Конечно же нет! Достаточно просто слегка доработать нашу X-DLL, научив ее запускать exe-файлы посредством API-функции CreateFile, при этом сами исполняемые файлы можно (и нужно) поместить в именованные NTFS-потоки, число которых фактически неограниченно. Причем, если внедряемый exe тащит за собой динамические библиотеки или другие компоненты, они также могут быть внедрены в NTFS-потоки (естественно, в текущем каталоге их уже не окажется, и потому исполняемый файл придется подвергнуть правке на предмет изменения всех путей). Если же этот файл упакован (а большинство боевых утилит типа систем удаленного администрирования редко поставляются в открытом виде), наша X-DLL может перехватить API-функции CreateFile/LoadLibrary, автоматически отслеживая обращения к отсутствующим файлам и подсовывая вместо них соответствующие им именованные NTFS-потоки.

Другой немаловажный момент. Отправляя exe-файл с внедренной в него X-DLL по почте, записывая его на лазерный диск или любой другой не-NTFS-носитель, мы теряем все именованные потоки, и программа тут же отказывает в работе, ругаясь на то, что не может найти dll.

Ситуация кажется критической, можно даже сказать, драматической, но на помощь приходит благородный архиватор RAR, обладающий уникальной способностью сохранять все имеющиеся в файле NTFS-потоки. Запускаем RAR, выбираем inject.exe, нажимаем кнопку «Добавить» (или давим ), после чего в свойствах архива взводим галочку «Сохранять файловые потоки» (вкладка «Дополнительно»). Также при желании можно создать SFX-архив на тот случай, если у получателя не окажется RAR"а, но это уже технические детали.

Повторяем процедуру пересылки файла по электронной почте еще раз, распаковываем полученный архив, запускаем inject.exe, и… о чудо! Он работает!

Заметай за собой следы (для грамотных парней)

Некоторые файлы (особенно упакованные протекторами ) скрупулезно следят за своей целостностью и на попытку внедрения реагируют, прямо скажем, не совсем адекватно. Однако поскольку X-DLL получает управление вперед остальных, она может восстановить таблицу импорта в памяти, как будто все так и было, словно к ней никто и не прикасался. Для этого достаточно вызывать API-функцию
VirtualProtect, присвоив соответствующим регионами памяти атрибут
PAGE_READWRITE, восстановить таблицу импорта (оригинал которой легко сохранить в
X-DLL), а затем заново установить атрибут PAGE_READONLY с помощью все той же
VirtualProtect. Более того, X-DLL может выделить блок памяти из кучи с помощью API-функции VirtualAlloc и скопировать туда свое тело, которое, естественно, должно быть полностью перемещаемо, то есть сохранять работоспособность независимо от базового адреса загрузки. Далее остается только выгрузить ставшую ненужной X-DLL вызовом FreeLibrary (на тот случай, если какой-то хитрый механизм проверки целостности решит перечислить список загруженных модулей).
Маленький технический нюанс: на процессорах с поддержкой битов
NX/XD, запрещающий исполнение кода в страницах памяти, не имеющих соответствующих атрибутов, выделяемому блоку памяти следует присвоить атрибут
PAGE_EXECUTE_READWRITE. В противном случае, если у пользователя задействован аппаратный DEP для всех приложений (а не только для системных компонентов, как это происходит по умолчанию), вместо выполнения машинного кода система выбросит исключение, и выполнение троянизированной программы завершится в аварийном режиме.

В заголовке PE-файла имеется специальное поле, содержащее контрольную сумму. В подавляющем большинстве случаев оно равно нулю, но если это не так, то после вмешательства в таблицу импорта контрольную сумму необходимо пересчитать. Этим занимается утилита
EDITBIT.EXE, запущенная с ключом ‘/RELEASE’. Она входит как в штатную поставку компилятора Microsoft Visual
Studio, так и в Platform SDK, так что проблем с ее поиском возникнуть не должно.

Заключение

Технологии внедрения в исполняемые файлы не стоят на месте и развиваются вместе с защитными механизмами и операционными системами. Извечная проблема меча и щита - кто усовершенствуется первым. Использование готовых утилит, работающих в полностью автоматическом режиме, во-первых, непрестижно, а во-вторых, слишком ненадежно. Разработчики антивирусов даром свой хлеб не едят! Чтобы не погореть на мелочах, весь X-код следует писать самостоятельно. До тех пор пока он существует в единственном экземпляре, у защитных систем не остается никакого шанса предотвратить атаку!

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

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

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

Затем надо увеличить размер холста рабочего документа по высоте на значение, равное высоте второму изображению (или на большее, если Вы хотите, чтобы между фото был интервал). Сделать это можно, пройдя по вкладке Изображение --> Размер холста, как показано на рисунке:

В результате открывается такое окно:

В моём случае высота второго фото равна 420 пикселям, это значение я и прибавляю к высоте документа 450 пикселей, и получившийся результат 970 пикселей ввожу в строку "Высота".

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

Но я присоединяю фотку снизу, поэтому якорь у меня будет сверху.
Итак, ввожу значение 970 в строку "Высота", жму кнопку "Да". Для удобства просмотра можно уменьшить масштаб отображения документа вращением колёсика мыши. Документ принял следующий вид:

Теперь надо загрузить второе изображение на свободный участок внизу. Для этого проходим по вкладке Слой --> Открыть изображение как слой, как показано на рисунке:

Откроется новое окно, в котором Вам надо выбрать нужное изображение на своём компьютере, жмём ОК. Изображение открылось в документе в новом слое по середине:

Теперь остаётся только переместить фотографию точно вниз документа, используя инструмент "Перемещение".

Ну и сохраняем получившийся документ на свой компьютер, кликнув по вкладке Файл --> Сохранить изображение, в открывшемся новом окне клик на кнопку "Да"

Смотрите видеоурок , демонстрирующий данные действия.

Создавайте красочные коллажи из фотоснимков - это быстро и удобно! Нужно склеить фотографии друг с другом? С помощью программы «Домашняя Фотостудия» эта процедура займет не более двух минут. Посмотрите видеоурок и узнайте сами, как объединить два и более снимка в одно изображение в программе «Домашняя Фотостудия».

Способ №1: быстрое соединение нескольких фотографий в одну

«Домашняя Фотостудия» поможет плавно соединить две, три или четыре 4 фотографии и эффектно замаскировать линию соединения буквально за пару щелчков мыши. Аналогично можно создать из нескольких фото необычный коллаж! Фотографии могут быть разными по размеру или одинаковыми. Вы можете оформлять коллажи по своему усмотрению, например, добавить яркую заливку, эффектно завершающую композицию фото. Готовое изображение можно сохранить на компьютере или сразу распечатать!

Способ №2: простой фотомонтаж

Чтобы объединить две фотографии, можно воспользоваться инструментом «Фотомонтаж», в котором реализована самая простая работа со слоями и масками. Благодаря тонкой подстройке параметров можно создать на фоновом слое эффект старой бумаги, красиво обрезать края или придать объектам мистическое свечение. Наш обладает удобным поиском функций, и инструмент для объединения фото легко найти по запросу «Соединить» или «Фотомонтаж». Из краткой инструкции вы узнаете, как соединить два фото в одно с помощью нашей программы.

Шаг 1. Устанавливаем программу

Для этого потребуется её загрузить. Установочный файл . После установки потребуется пара фото, которые вы хотите обработать и немного времени. Рекомендуем сделать копии этих изображений на случай, если что-то пойдёт не так и случайно сохранится неудачный вариант корректировки.

Шаг 2. Выбираем способ добавления фото

Нажимаем кнопку «Открыть фотографию», чтобы выбрать нужное изображение. В качестве альтернативы можно ввести в строку поиска внизу списка «Соединить» или «Фотомонтаж» (без кавычек). Можно также использовать одну из картинок, которые недавно редактировались – они будут отображаться над поисковой строкой.

Шаг 3. Добавляем фото в программу

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


Шаг 4. Переходим в режим «Фотомонтаж»

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


Шаг 5. Работа со слоями

Чтобы выбрать второе фото, которое ляжет поверх фонового, нажмите кнопку «Добавить слой» и выберите один из вариантов в выпадающем меню. В каталогах украшений, фонов и текстур находятся базовые изображения, поставляемые вместе с программой. Для того, чтобы воспользоваться другой картинкой, нажмите на «Фотографию».


Шаг 6. Выбираем и редактируем накладываемый кадр

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


Шаг 7. Сохранение результата

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


Склеивание двух или более фотографий в единое изображение – довольно востребованная функция, которая используется в фоторедакторах при обработке картинок. Соединить изображения можно в Фотошопе , однако данная программа довольно сложна для понимания, кроме того, она требовательна к ресурсам компьютера.

Если соединить фотографии нужно на слабом компьютере или вовсе на мобильном устройстве, на помощь придут многочисленные онлайн-редакторы.

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

Способ 1: IMGonline

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

Если необходимо объединить несколько фото, то первоначально склеиваем две картинки, потом к результату присоединяем третье фото и так далее.


На сайте много дополнительных инструментов, которые помогут получить в свое распоряжение желаемое изображение без необходимости устанавливать и разбираться в функционале Фотошопа. Главное достоинство ресурса – вся обработка происходит в автоматическом режиме без вмешательства пользователя, даже с настройками «По умолчанию» получается достойный результат.

Способ 2: Croper

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

Сайт требует стабильного доступа в сеть, особенно если ведется работа с фото в высоком качестве.


Способ 3: Сreate Сollage

В отличие от предыдущих ресурсов, на сайте можно склеивать до 6 фотографий одновременно. Работает Сreate Сollage быстро и предлагает пользователям много интересных шаблонов для склеивания.

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


Соединение фото занимает несколько секунд, время варьируется в зависимости от размера картинок, с которыми ведется работа.

Мы рассказали о наиболее удобных сайтах для соединения изображений. С каким ресурсом работать – зависит лишь от ваших пожеланий и предпочтений. Если необходимо просто соединить две и более картинки без последующей обработки, отличным выбором станет сайт Сreate Сollage.