String-returning functions now explicitly returning java.lang.String

This commit is contained in:
minjaesong
2025-04-07 20:10:28 +09:00
parent 759c720322
commit f30022bf66
3 changed files with 66 additions and 62 deletions

View File

@@ -10,58 +10,4 @@ const magic = sys.peek(ptr)
if (magic != 0xA5) return 1
//////////////////////////////////
function seq(s) {
let out = ""
let cnt = 0
let oldchar = s[0]
for (let char of s) {
if (char === oldchar) {
cnt += 1
}
else {
out += ('' + cnt) + oldchar
cnt = 1
}
oldchar = char
}
return out + cnt + oldchar
}
let key = "00"
let keyBytes = [0x00]
let keyCursor = 0
function getNewKeySeq() {
key = seq(key)
keyBytes = []
keyCursor = 0
for (let i = 0; i < key.length; i += 2) {
keyBytes.push(parseInt(key.substring(i, i+2), 16))
}
}
//////////////////////////////////
const payloadSize = (sys.peek(ptr+1) << 16) | (sys.peek(ptr+2) << 8) | sys.peek(ptr+3)
let encrypted = new Int8Array(payloadSize)
// read and decrypt
for (let outcnt = 0; outcnt < payloadSize; outcnt++) {
encrypted[outcnt] = sys.peek(ptr+4+outcnt) ^ keyBytes[keyCursor++]
if (keyCursor >= keyBytes.length) {
getNewKeySeq()
}
}
let image = gzip.decomp(encrypted)
// convert java ByteArray into JS string
var simg = ""
for (let b of image) {
simg += String.fromCharCode(b & 255)
}
eval(simg)
eval(sys.toObjectCode(ptr))