Я экспериментирую с webAssembly и пытаюсь выяснить способ проверки целостности JS-метода, используемого модулем webAssembly.
В целях обсуждения предположим, что двоичный модуль не взломан (я знаю, что это не так), но сторона JS есть.
Учитывая следующий код C:
#include <emscripten.h>
//js method to validate
void validateMe();
int validateMethods(){
// check validateMe integrity.
// return 1 if validation succeeded.
}
EMSCRIPTEN_KEEPALIVE
void doStuff(){
if (validateMethods()){
// do stuff
}
}
Я хотел бы вызвать doStuff()
со стороны JS, а doStuff()
будет работать, только если проверка целостности doStuff()
успешно. Я подумал о том, чтобы сделать какую-то проверку целостности, похожую на Subresource, проверяя представление toString метода. Однако, если я хочу получить текущий (в памяти) JS-метод toString, мне придется вызвать JS, который может быть взломан.
В: Могу ли я каким-то образом получить toString по-другому? Также будет оценен любой другой подход.
Обновление: после копания немного глубже, прочитав эту статью, кажется, что нет доступа к JS-памяти, кроме общего массива. Поэтому любая техническая проверка будет оценена по достоинству.
Обновление 2 (цель): Моя конечная цель - убедиться, что часть WASM будет работать только с конкретным JS или, по крайней мере, затруднит взаимодействие с управляемой JS.
Пример скрипта: Следующий скрипт - это наивная проверка функции, сравнивающая значение toString функции char по char. Если вы изменяете функцию validateMe, проверка не выполняется. Я пытаюсь "пуленепробивать" это.