Преобразовать дамп в nsd

Здравствуйте!

Существует ли возможность преобразовать вручную подготовленную прошивку через API (по сути дамп) в маску для редактирования в утилите grdutil.exe?

И еще вопрос, как рассчитывается контрольная сумма в nsd файле, защищающая его от редактирования в сторонних программах. Например необходимо в nsd файле поменять пару байт и залить маску в ключ командой "grdutil -write -infile(mask.nsd)"

Re: Преобразовать дамп в nsd

eugene_sm пишет:

Здравствуйте!

Существует ли возможность преобразовать вручную подготовленную прошивку через API (по сути дамп) в маску для редактирования в утилите grdutil.exe?

И еще вопрос, как рассчитывается контрольная сумма в nsd файле, защищающая его от редактирования в сторонних программах. Например необходимо в nsd файле поменять пару байт и залить маску в ключ командой "grdutil -write -infile(mask.nsd)"


Уточните, пожалуйста, для каких именно целей необходимо данное преобразование?

(2016-06-29 13:33:26 отредактировано eugene_sm)

Re: Преобразовать дамп в nsd

Андрей Мальгинов пишет:
eugene_sm пишет:

Здравствуйте!

Существует ли возможность преобразовать вручную подготовленную прошивку через API (по сути дамп) в маску для редактирования в утилите grdutil.exe?

И еще вопрос, как рассчитывается контрольная сумма в nsd файле, защищающая его от редактирования в сторонних программах. Например необходимо в nsd файле поменять пару байт и залить маску в ключ командой "grdutil -write -infile(mask.nsd)"


Уточните, пожалуйста, для каких именно целей необходимо данное преобразование?

Собственно задача следующая.
Автоматизирую процесс: создание маски -> прошивка в ключ -> защита приложения -> отправка дампа маски в архив для последующего использования (например защита новой версии приложения).

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

В принципе, почти все устраивает, однако, иногда хочется "глазами" увидеть, что было записано в определенный ключ, и, для этих целей прекрасно подошла бы утилита grdutil.

Re: Преобразовать дамп в nsd

eugene_sm пишет:
Андрей Мальгинов пишет:
eugene_sm пишет:

Здравствуйте!

Существует ли возможность преобразовать вручную подготовленную прошивку через API (по сути дамп) в маску для редактирования в утилите grdutil.exe?

И еще вопрос, как рассчитывается контрольная сумма в nsd файле, защищающая его от редактирования в сторонних программах. Например необходимо в nsd файле поменять пару байт и залить маску в ключ командой "grdutil -write -infile(mask.nsd)"


Уточните, пожалуйста, для каких именно целей необходимо данное преобразование?

Собственно задача следующая.
Автоматизирую процесс: создание маски -> прошивка в ключ -> защита приложения -> отправка дампа маски в архив для последующего использования (например защита новой версии приложения).

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

В принципе, почти все устраивает, однако, иногда хочется "глазами" увидеть, что было записано в определенный ключ, и, для этих целей прекрасно подошла бы утилита grdutil.

На данный момент решения для подобных задач нет. Возможно оно будет введено в будущем.

Re: Преобразовать дамп в nsd

Очень исчерпывающий ответ :)

Ну а как насчет формата nsd файла? Можете пояснить как рассчитывается контрольная сумма?

Re: Преобразовать дамп в nsd

Здравствуйте

eugene_sm пишет:

Очень исчерпывающий ответ :)

Ну а как насчет формата nsd файла? Можете пояснить как рассчитывается контрольная сумма?

Формат *.nsd-файла закрытый и не декларируется. Тут проще может оказаться сделать свою утилиту для просмотра данных из дампов.

(2016-07-01 12:36:16 отредактировано eugene_sm)

Re: Преобразовать дамп в nsd

Антон Тихиенко пишет:

Здравствуйте

eugene_sm пишет:

Очень исчерпывающий ответ :)

Ну а как насчет формата nsd файла? Можете пояснить как рассчитывается контрольная сумма?

Формат *.nsd-файла закрытый и не декларируется. Тут проще может оказаться сделать свою утилиту для просмотра данных из дампов.

Здравствуйте Антон!

Я тут на форуме нашел Ваш ответ, датированный 2014-05-22 14:45:03:
https://forum.guardant.ru/topic/433/

Антон Тихиенко пишет:

Здравствуйте, Serggi.

Извлечение информации о записанных образах из Grdutil.mdb пишет:

Возникла потребность извлечения информации о записанных образах из Grdutil.mdb. Как я понимаю, это поле "DumpData" из таблицы "Masks". Мне нужно извлечь значение одного строкового пользовательского поля в образе. Проблема в том, что анализируя дамп, не нахожу соответствия структуре образа тому, как поля представлены как в редакторе ключей. Возможно поле зашифровано? Да и смущает размер - в редакторе размер значимых полей - 98 байт, а в дампе поля после 47 байта идут нули.

Прошу прощения за задержку с ответом.

Для решения указанной задачи можно попробовать использовать COM компонент grdmask.dll, распространяемый в составе SDK Guardant.

Данный COM-сервер предоставляет интерфейс IGuardantMaskEngine и метод CreateFromMaskDump, принимающий на вход данные из поля "DumpData" БД. Дальнейшие манипуляции с полем (получение полей с помощью метода GetField) предоставляются интерфейсами IGuardantMem*.

Хочу отметить что это решение не является типичным и нигде не документировано, однако разобраться самостоятельно разработчику не должно составить особых проблем.

Напишите если возникнут трудности с реализацией и подробно опишите их, а также уточните данные о типе разрабатываемого приложения (Native, .Net, другое) и среде разработки.

С тех пор что-то поменялось?

Re: Преобразовать дамп в nsd

eugene_sm пишет:

С тех пор что-то поменялось?

Нет.

Re: Преобразовать дамп в nsd

Антон Тихиенко пишет:
eugene_sm пишет:

С тех пор что-то поменялось?

Нет.

А можно попросить от Вас небольшой пример использования?
Сколько не пытался заставить работать, но метод CreateFromMaskDump постоянно вываливается в ошибку.

Re: Преобразовать дамп в nsd

eugene_sm пишет:

А можно попросить от Вас небольшой пример использования?

Да, но подготовить сможем не раньше чем к середине следующей недели.

Re: Преобразовать дамп в nsd

Антон Тихиенко пишет:
eugene_sm пишет:

А можно попросить от Вас небольшой пример использования?

Да, но подготовить сможем не раньше чем к середине следующей недели.

Замечательно, буду ждать!

Re: Преобразовать дамп в nsd

eugene_sm пишет:

Замечательно, буду ждать!

Сроки подготовки примера вынуждены сместить на следующую неделю, отдел разработки сильно загружен.

Re: Преобразовать дамп в nsd

Антон Тихиенко пишет:

Сроки подготовки примера вынуждены сместить на следующую неделю, отдел разработки сильно загружен.

Хорошо, можно и подождать.

Re: Преобразовать дамп в nsd

Здравствуйте!
Сталкивался с похожей задачей.
В COM-компоненте grdmask.dll нашел функцию CalculateDumpCRC.
Например, на C# обновление контрольной суммы у дампа может быть выполнено следующим образом:

public static void WriteCrc(byte[] dump)
{
    IGuardantMaskDump2 gmd = new GuardantMaskEngine() as IGuardantMaskDump2;
    Array a = dump as Array;
    gmd.CalculateDumpCRC(ref a);
    Array.Copy(a, dump, dump.Length);
}

Может быть что-то не совсем корректно, поскольку получено экспериментальным путем, но на SDK 6.31 вроде работает. Возможно окажется полезным.