@wlastas

Как защитить offsets от RE?

Есть динамическая библиотека DLL котора защищается, в которой есть метод Fill_Data
Fill_Data заполняет переданую структуру данными, которые берутся из базы по определенным офсетам, заданным через FieldOffset.
Как защитить эти офсеты от RA.
Бибилотека может быть написана на С++, тут же для примера код на C# который копилируется в нативный через Native AOT

using System.Runtime.InteropServices;

internal class TestDll {
    [UnmanagedCallersOnly(EntryPoint = "Fill_Data")]
    public static int Fill_Data(Data data) {
        data.A = 5; data.B = 9786;  data.C = 5f;
        return 0;
    }
    [StructLayout(LayoutKind.Explicit, Pack = 1)]
    public struct Data {
        [FieldOffset(0x1D9)] public byte A;
        [FieldOffset(0x0EC)] public int B;
        [FieldOffset(0x118)] public float C;
    }
}
  • Вопрос задан
  • 46 просмотров
Пригласить эксперта
Ответы на вопрос 1
@rPman
Наилучшая (но само собой ничего не гарантирующая) защита от реверс инженеринга - это обфускация кода, причем не (как вариант не только) на уровне исходных кодов программы но ниже - на уровне компиляции.

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

И повторюсь - взломать можно все, вопрос только в цене процесса и целесообразности. Обычно стоимость защиты сравнима со стоимостью взлома и чаще всего взлом (специалистом) будет немного проще. Как минимум не пользоваться типовыми решениями.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
19 апр. 2024, в 03:52
1000 руб./за проект
19 апр. 2024, в 03:01
1000 руб./за проект
18 апр. 2024, в 21:56
2000 руб./за проект