Діти часто розбирають іграшки, щоб зрозуміти як вони побудовані. Андрій Курдюмов вирішив «розібрати» .NET, дістав звідти Garbage Collector і показав, як змусити цю складну деталь працювати як самостійний компонент у власному C++ застосунку.
У третій частині серії про створення власного .NET обфускатора Андрій Курдюмов розбирає генерацію математичного шумового виразу за допомогою бінарних дерев. Ви дізнаєтеся, як працює концепція fuel для завершення рекурсії, як автоматично обчислювати значення виразів та збивати декомпілятор ILSpy зі шляху.
Продовження циклу про створення власного .NET-обфускатора. Цього разу залишаємо прості заміни рядків і переходимо до трансформації потоку керування: вчимося працювати з IL-кодом, додавати фальшиві умови та модифікувати базові блоки.
Обфускація та деобфускація — це доволі слабо описаний напрямок інженерії, і він знаходиться на дотику компіляторів та інформаційної безпеки. Якщо вам цікаво як будуються ці інструменти — цей цикл статей для вас.