https://alpacahack.com/daily/challenges/renda
(難読化されているため省略)
<aside> 💡
以降 JavaScript を整形できるエディタがあると非常に役に立ちます
</aside>
とりあえず index.html で DevTools を開くと click イベントハンドラがついていることがわかる

index.html:6 をクリックすると、イベントハンドラは 6 行目の以下で定義されていることがわかる
document['addE' + 'vent' + UN(-'0x236', -'0x227') + Uy(0x87, '0x7f')]('clic' + 'k', function() {
clic + k という名前になっていて不穏であるが、続きを読む
index.html を Format file する
Ctrl + K Ctrl + FCtrl + Shift + P から Format Document を選択Ctrl + Shift + [ を押すv みたいな矢印を押すと長いコードを折りたたむことができるvar X = -0x7 + 0x25f + -0xa * 0x3c;
document["addE" + "vent" + UN(-"0x236", -"0x227") + Uy(0x87, "0x7f")](
"clic" + "k",
function () {
const hV = { /* ... */ }
function Ul(I, V) {
return u(I - -hn.I, V);
}
const V = {};
((V[Up(-hV.I, -hV.V) + "E"] = "(((." + "+)+)" + "+)+$"),
(V["uajP" + "d"] = Ul(-hV.N, hV.y)),
(V[Up(-hV.p, -hV.l) + "B"] = function (p, l) {
return p >= l;
}),
(V[Ul(-hV.C, hV.e) + "s"] = function (p, l) {
return p !== l;
}),
(V[Ul(-hV.f, hV.L) + "d"] = "EuyX" + "L"));
function Up(I, V) {
return UN(I, V - hu.I);
}
((V["EqGu" + "m"] = Up(-hV.v, -hV.A) + "c"),
(V[Ul(-hV.x, hV.q) + "Z"] = UC(hV.Y, hV.W)));
const N = V;
X++;
function UC(I, V) {
return Uy(I - hI.I, V);
}
document["getE" + UC(hV.a, hV.o) + "ntBy" + "Id"](N["uajP" + "d"])[
すると偶然 X++ という怪しいインクリメントが見つかるので、これの使用箇所を一覧する
Ctrl + 左クリック(LMB) で X の使用箇所を一覧できる以下がヒットする
<aside> 💡
注: 私の環境では ' が " に置換される設定になっています。
そのまま検索しても見当たらないので、リテラル "vent" やインクリメント X++ を検索キーワードにすると探索しやすいです
</aside>
index.html:6:16276
return n(); } var X = -0x7 + 0x25f + -0xa * 0x3c; document["addE" + "vent" + UN(-"0x236", -"0x227") + Uy(0x87, "0x7f")]( "clic" + "k",
index.html:6:17189
(V[Ul(-hV.x, hV.q) + "Z"] = UC(hV.Y, hV.W))); const N = V; X++; function UC(I, V) { return Uy(I - hI.I, V);
index.html:6:17245
document["getE" + UC(hV.a, hV.o) + "ntBy" + "Id"](N["uajP" + "d"])[ Ul(-hV.D, hV.S) + Up(-hV.b, -hV.w) + "ent" ] = Ul(-hV.J, hV.Q) + Up(-hV.d, -hV.k) + X; if (N[Ul(-hV.z, hV.q) + "B"](X, 0x1 * 0xf75d + 0x4bef + 0x4354)) { if (N["buAy" + "s"](N[Up(-hV.E, -hV.O) + "d"], N["EqGu" + "m"])) { const p = [
X と比較している怪しい演算が2つあるので、これを DevTools の console または node いずれか好きな方から実行する
-0x7 + 0x25f + -0xa * 0x3c = 0