Отримати навички основ реверс-інженірингу "на практиці"
Використовуючи бібліотеку зовнішнього вендора, виконати наступні дії:
- Визначити мову програмування, на якої була написана бібліотека (
C/C++
,C#
,Deplhi
,Java
). Визначення мови програмування дозволить найбільш ефективно використовувати "декомпілятор". При цьому, рекомендуються наступні декомпілятори:- для
Java
- jdgui, або нативний декомпілятор від Intellij IDEA - для
C#
- dotPeek - для
Delphi
- DeDe - для
C/C++
- Ghidra, IDA Pro
- для
- Визначити функції та їх прототипи, з яких складається динамічна бібліотека.
- Створити додаток, що підключає дану бібліотеку та визначити, що роблять функції
getIV
,getK
. - Декомпілювати функцію
CRC_16_IBM
. Судячи з її назви Вам буде не важко це зробити (бо її алгоритм завідомо відомий), але треба бути підібрати кректні коефіцієнти. Необхідно довести коректність реалізованого алгоритму через порівняння результатів з результатами роботи функції динамічної бібліотеки. - Декомпілювати та переписати функції
dec
таenc
. Який алгоритм вони використовують? Підсказка - це скорочення від encode, decode. Більшість алгоритмів шифрування використовують табличні дані, на базі яких використовується кодування. Знавши це - найбільш швидкий для вас варіант - визначити таблицю, що використовується, та знайти алгоритм, що її використовує. Реалізувати алгоритм на мові високого рівня, та довести коректність реалізованого алгоритму через порівняння результатів з результатами роботи функції динамічної бібліотеки.