Я экспериментирую с 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()
будет работать только в случае успешной проверки целостности.
Я думал о некоторой проверке целостности, подобной Subresource , проверяющей представление метода toString. Однако, если я хочу получить текущий (в памяти) метод JS toString, мне придется вызвать JS, который может быть скомпрометирован.
Q: Можно ли как-то получить toString другим способом? Любой другой подход также приветствуется.
Обновление: после того, как вырыли немного глубже, прочитав эту статью , кажется, что нет никакого доступа к памяти JS, кроме общего массива. Так что любая техника проверки будет оценена.
Обновление 2 (цель): Моя конечная цель - убедиться, что часть WASM будет работать только с определенным JS, или, по крайней мере, затруднить взаимодействие с манипулируемым JS.
Fiddle Пример: , следующий за скрипкой , является простой проверкой функции, сравнивающей toString функции char по char. Если вы измените функцию validateMe, проверка завершится неудачно. Я пытаюсь "пуленепробиваемый" это.