1. 首次遇到wasm
const fs = require('fs');
var window = {}
var Module = {}
function _emscripten_resize_heap(requestedSize) {
var oldSize = HEAPU8.length;
requestedSize = requestedSize >>> 0;
abortOnCannotGrowMemory(requestedSize)
}
var wasmTable;
var __ATPRERUN__ = [];
var __ATINIT__ = [];
var __ATPOSTRUN__ = [];
var runtimeInitialized = false;
var HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64;
function addOnPreRun(cb) {
__ATPRERUN__.unshift(cb)
}
function addOnInit(cb) {
__ATINIT__.unshift(cb)
}
function addOnPostRun(cb) {
__ATPOSTRUN__.unshift(cb)
}
var runDependencies = 0;
var runDependencyWatcher = null;
var dependenciesFulfilled = null;
function updateMemoryViews() {
var b = wasmMemory.buffer;
Module["HEAP8"] = HEAP8 = new Int8Array(b);
Module["HEAP16"] = HEAP16 = new Int16Array(b);
Module["HEAP32"] = HEAP32 = new Int32Array(b);
Module["HEAPU8"] = HEAPU8 = new Uint8Array(b);
Module["HEAPU16"] = HEAPU16 = new Uint16Array(b);
Module["HEAPU32"] = HEAPU32 = new Uint32Array(b);
Module["HEAPF32"] = HEAPF32 = new Float32Array(b);
Module["HEAPF64"] = HEAPF64 = new Float64Array(b)
}
function removeRunDependency(id) {
runDependencies--;
if (Module["monitorRunDependencies"]) {
Module["monitorRunDependencies"](runDependencies)
}
if (runDependencies == 0) {
if (runDependencyWatcher !== null) {
clearInterval(runDependencyWatcher);
runDependencyWatcher = null
}
if (dependenciesFulfilled) {
var callback = dependenciesFulfilled;
dependenciesFulfilled = null;
callback()
}
}
}
function stringToArrayBuffer(str) {
const encoder = new TextEncoder();
return encoder.encode(str);
}
function instantiateAsync(nntext,outputlogpath) {
if (true) {
const datafile = fs.readFileSync("./somelibs/encrypt.wasm");
var result1 = WebAssembly.instantiate(datafile, { a: { a: _emscripten_resize_heap } });
result1.then(function(results){
var exports = results.instance.exports;
wasmMemory = exports["b"];
updateMemoryViews();
wasmTable = exports["e"];
addOnInit(exports["c"]);
removeRunDependency("wasm-instantiate");
var data = stringToArrayBuffer(nntext)
let strBuffer = new Uint8Array(data);
let strPointer = exports["f"](strBuffer.length + 1);
Module.HEAPU8.set(strBuffer, strPointer);
Module.HEAPU8[strPointer + strBuffer.length] = 0;
exports["d"](strPointer, strBuffer.length);
let strBuffer1 = new Uint8Array(Module.HEAPU8.buffer, strPointer, strBuffer.le_mallocngth);
var content = new TextDecoder().decode(strBuffer1);
var content = content.trim().replace(/\0/g, "")+"\n";
filePath = "./somelibs/data.txt"
if (fs.existsSync(filePath)) {
fs.appendFile(filePath, content, (err) => {
if (err) {
console.error(err);
return;
}
console.log('String appended to file.');
});
} else {
fs.appendFileSync(filePath, content);
console.log('File created and string appended.');
}
return content
})
}
}
#text是一段加密的响应文本
def instantiateAsync_data(text):
with open("./somelibs/m2.js",'r',encoding='utf-8') as f:
cms = execjs.compile(f.read())
try:
return cms.call("instantiateAsync", text)
except Exception as e:
return print(f">>> 解析中---{e}")