mirror of
https://github.com/curioustorvald/tsvm.git
synced 2026-03-16 07:56:06 +09:00
String-returning functions now explicitly returning java.lang.String
This commit is contained in:
@@ -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))
|
||||
Reference in New Issue
Block a user