Частина 16: Купа

Для повного змісту всіх уроків натисніть нижче, оскільки це надасть вам короткий зміст кожного уроку, а також теми, які будуть розглянуті. https://github.com/mytechnotalent/Reverse-Engineering-Tutorial

Наступний крок у розділі Основи Реверс-Інжинірингу шкідливого ПЗ фокусується на купі. Увага! Пам'ятайте, що стек зростає вниз, а купа зростає вгору. Важливо зрозуміти цей концепт, при вивчені нової інформації.

Регіон купи — це частина пам'яті вашого комп'ютера, яка не керується автоматично для користувача, і не керується так жорстко процесором. Це вільна ділянка пам'яті яка більша за розмір стека.

Для розподілу пам'яті на купі ви повинні використовувати malloc() або calloc(), які є вбудованими функціями мови C. Після розподілу пам'яті на купі ви повинні звільнити її, використовуючи free() звільнюючи цю пам'ять, коли вона стає непотрібною.

Якщо ви цього не зробите, ваша програма буде мати так званий "витік пам'яті". Інакше кажучи, пам'ять на купі все ще буде зайнята і не буде доступна для інших процесів, які її потребують.

Відмінністю від стеку є те, що стек не має обмежень щодо розміру змінної. Єдиним обмеженням стеку є фізичні обмеження вашого комп'ютера. Зчитування та запис з пам'яті купи відбувається дещо повільніше, оскільки для доступу до пам'яті купи потрібно використовувати покажчики. Ми продемонструємо це, коли перейдемо до серії навчальних матеріалів з мови C.

Відмінністю від стеку є те, що змінні, створені на купі, доступні будь-якій функції, будь-де в вашій програмі. Змінні стеку є майже глобальними за своїми властивостями.

Якщо вам треба розподіляти велику ділянку пам'яті для, наприклад, структури або великих масивів, і ви хочете зберігати цю змінну протягом тривалого періоду роботи програми, яка повинна бути доступна глобально, тоді ви повинні вибрати стопку для цієї задачі. Якщо ви потребуєте змінні для збереження масивів і структур, які можуть змінювати розмір динамічно, наприклад, масиви, які можуть зростати або зменшуватися відповідно до потреб, тоді ви, ймовірно, повинні розподіляти їх на купі і використовувати функції динамічного розподілу пам'яті, такі як realloc(), calloc() і free() для управління цією пам'яттю вручну.

Наступний крок — програмування C в середовищі Linux, де ми крок за кроком розіб'ємо кожну програму C, ви навчитеся програмуванню на C і Асемблері, щоб підвищити свої навички в аналізі і реверс-інжинірингу шкідливого ПЗ.

results matching ""

    No results matching ""