ぱっと見わからない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文がいらないのですね、、、。