Разработка сайта для Вашего бизнеса. Веб дизайн. Дизайн логотипа, фирменного стиля, рекламная фотография . Комплексный рекламный креатив.

Ralex. We do the work.
На рынке с 1999го года. Средняя ценовая категория. Ориентация на эффективность решений.
Ознакомтесь с нашим портфолио
Узнайте больше о услугах
Свяжитесь с нами:
E-mail: [email protected]
Tel: (044) 587 - 84 - 78
Custom web design & дизайн и разработка сайта "под ключ"
Креативный, эффективный дизайн. Система управления сайтом (СУС).
Custom flexible разработка систем электронной коммерции
Система e-commerce разрабатывается под индивидуальные потребности. Гибкая функциональность.
Search Engine Optimzation & оптимизация под поисковые системы (SEO)
Постоянная оптимизация и мониторинг сайта в поисковых системах. Достигаем результата быстро и эффективно
Custom logo design & дизайн логотипа и фирменного стиля
Многолетний опыт. Огромное портфолио. Уникальное предложение и цена.
профессиональная рекламная фотография
креативно, смело, качественно
Custom logo design & рекламный креатив. дизайн рекламы
Многолетний опыт. Огромное портфолио. Уникальное предложение и цена.

Суперклей Хакера: новий спосіб склеїти два виконуваних файлу

  1. Зміст статті У хакерської практиці досить часто виникає потреба впровадити в готовий exe-файл свій...
  2. Підготовка до експериментів
  3. Впровадження X-DLL в таблицю імпорту «дрозофіли»
  4. Копіювання X-DLL в NTFS-stream
  5. Перехід від теорії до практики
  6. Замітати за собою сліди (для грамотних хлопців)
  7. Висновок

Зміст статті

Наша взаимовыгодная связь https://banwar.org/

У хакерської практиці досить часто виникає потреба
впровадити в готовий 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 <stdio.h> 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 <stdio.h> #include <windows.h> // створюємо фіктивну експортовану функцію, // яку потім буде імпортувати «дрозофіла» __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-режим по <ENTER>, тиснемо <F8> для відображення PE-заголовка, натискаємо <F10> (Dir) і серед інших елементів IMAGE_DATA_DIRECTORY вибираємо секцію імпорту (Import ), розташовану в нашому випадку по RVA-адресою, рівному 5484h і розкинулася в ширину на цілих 28h байт (дивись малюнок 1).

Кнопка <ENTER> переносить нас до структури 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), тиснемо <Gray - *> ( «зірочку» на цифровій клавіатурі) і, переміщаючись курсорними клавішами, виділяємо бордовим кольором 28h байт (розмір Import Directory Table). Після цього тиснемо <Gray - *> ще раз і, натиснувши <F2>, зберігаємо блок в файл, для визначеності назвавши його idt-org.

Після цього тиснемо <Gray - *> ще раз і, натиснувши <F2>, зберігаємо блок в файл, для визначеності назвавши його idt-org

Тепер, прокручуючи файл, клацають <PageDown> до тих пір, поки не вийдемо на оперативний простір вільного місця, окупованого довгою вервечкою нулів. У нашому випадку це місце розташовується за адресою 405810h, безпосередньо за кінцем таблиці імпорту.

У нашому випадку це місце розташовується за адресою 405810h, безпосередньо за кінцем таблиці імпорту

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

Оскільки, як неважко підрахувати, розмір структури IMAGE_IMPORT_DESCRIPTOR становить 14h байт, а незайнята область починається з адреси 405810h, ми повинні пересунути курсор за адресою 405824h, натиснути <Gray - *>, виділити 28h байт (розмір оригінальної Import Directory Table) і натиснути <Gray - *> ще раз, а потім обов'язково перемістити курсор в початок виділеного блоку. Далі тиснемо <Ctrl-F2> (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), натискаємо <F3> для дозволу редагування, міняємо адресу на 24 58, зберігаємо зміни по <F9> і виходимо ... за пивом. Пиво для хакерів - це святе!

Перевіряємо працездатність файлу - а раптом вона постраждала ?! Запускаємо 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 XP .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'е, звичним рухом переходимо до таблиці імпорту: <ENTER>, <F8>, <F10>, <стрілка «вниз»>, <ENTER>. Міняємо ім'я динамічної бібліотеки injected_dll.dll на inject.exe: x.dll, де inject.exe - ім'я піддослідного файлу, в який ми збираємося запровадити X-DLL, а x.dll - ім'я самої впроваджуваної динамічної бібліотеки.
Тепер необхідно скопіювати injected_dll.dll в inject.exe: x.dll, що легко здійснити за допомогою FAR'а. Підігнавши курсор до динамічної бібліотеці injected_dll.dll, натискаємо <Shift-F5> і пишемо «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.

Відправляючи exe-файл із запровадженою в нього X-DLL поштою, записуючи його на лазерний диск або будь-який інший не-NTFS-носій, ми втрачаємо все іменовані потоки, і програма тут же відмовляє в роботі, лаючись на те, що не може знайти dll

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

Також при бажанні можна створити 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-код слід писати самостійно. До тих пір поки він існує в єдиному екземплярі, у захисних систем не залишається жодного шансу запобігти атаці!

Повну версію статті   читай в   травневому номері   Хакера
Повну версію статті
читай в травневому номері
Хакера! Крім того, в відеоінструкції на диску ми наочно показуємо, як
треба склеювати файли. Рекомендую подивитися відео відразу після прочитання статті, щоб вирішити всі виниклі питання.
І звичайно: на диску тебе чекають всі згадані інструменти, приклади, компілятор Сі для збірки наведеного коду, а також добірка
готових Джойнер.

Як це зробити?
А що?
У тебе може виникнути питання: чому 5824h, а не 405824h ?
Перевіряємо працездатність файлу - а раптом вона постраждала ?
Відчуваєш, куди я хилю?
Розклад ясний?
Що робити?
Перетворювати його в DLL ?
Категории
  • Биология
  • Математика
  • Краеведению
  • Лечебная
  • Наука
  • Физике
  • Природоведение
  • Информатика
  • Новости

  • Новости
    https://banwar.org/
    Наша взаимовыгодная связь https://banwar.org/. Запустив новый сайт, "Пари Матч" обещает своим клиентам незабываемый опыт и возможность выиграть крупные суммы.


    Наши клиенты
    Клиенты

    Быстрая связь

    Тел.: (044) 587-84-78
    E-mail: [email protected]

    Имя:
    E-mail:
    Телефон:
    Вопрос\Комментарий: