ぱっと見わからないUWSCスクリプト

UWSCスクリプトの難読化を考えたが、あれは大げさすぎる。
UWSC難読化スクリプト! - じゅんじゅんのきまぐれ
ま、ぱっと見わからないくらいにしたい場合を考えてみた。


RtlMoveMemoryの便利さに気づいただけとも言うけど、、、。

DIM data[] = $4247534D,573069391,$5092C88A,$EF93C882,$BB89C793,10530
DIM code = FORMAT(CHR(0), LENGTH(data) * 4 + 1)
DEF_DLL RtlMoveMemory(var string, DWORD[], DWORD): kernel32
RtlMoveMemory(code, data, LENGTH(data) * 4)
EVAL(code)


ぱっと見はわからないですね。
トルエンディアンというのも曲者です。
実態は、

MSGBOX("簡単な難読化")


ついでにエンコーダーも作ってみた。

DIM str = INPUT("eval string?")
DIM len = LENGTHB(str), num = INT(len / 4) + 1, dat[num], i, wk, res = ""
DEF_DLL RtlMoveMemory(var DWORD[], string, DWORD): kernel32
RtlMoveMemory(dat, str, len)
FOR i = 0 TO num - 1
	wk = "$" + TRIM(FORMAT(dat[i], 8, -1))
	IF LENGTH(wk) >= LENGTH(dat[i]) THEN wk = dat[i]
	res = res + "," + wk
NEXT
PRINT res

というか、こっちが先ですね。
data配列の中身を作成するスクリプト
エンコーダーの結果を、data配列に入れれば、その動作になりますです。
文字列<->バイト配列変換は、FOR文がいらないのですね、、、。