漫画村「星のロミ」の難読化されたJavaScriptファイルを解読してみる

※ただ好奇心で調べてみようって思っただけなので、なんか凄いモノが発見できたとかそういうのではないよ!

前回、復活した漫画村のWebSocket通信を覗き見るという内容の記事を書きました。

JavaScript関連も興味があったのでちょっと覗いてみることにしました。

一度にすべて解読するのは難しいので、この記事は随時書き加えていこうと思っています。

さっそくビュワーページのソースをみてJavaScriptファイルを探す・・・。

たぶんメインのファイルはcombined.jsというやつ。他はjQueryなど、多くのサイトで利用されている普通のライブラリだと思います。

さっそくこのファイルをオープンしてみる。

難読化されている!

予想はしていたけど、JSファイルが難読化されていました。一見、何かいてあるか全然わからないし、見る気失せますよね。その名のとおりとても読みづらい形にされてしまってます。

ただ、私は普段からけっこうJavaScriptをみたり、解析したりしてるのでこれがなんのツールを使っているかすぐわかりました。

「星のロミ」のJavaScriptファイルの難読化に使用されているツールは

JavaScript Obfuscator Tool

これです。けっこう有名です。サイトに難読化したいJavaScriptコードを貼り付けるだけで難読化したコードを生成してくれるものです。

みたかんじデコードが難しそうですが、案外簡単に難読化された部分が読めたりします。以前このツールに関する記事を書いたので興味がある方は読んでみてください。

だけど漫画村のコード、思ったよりややこしいw

解読してもランダムで作成されたような文字列がでてくる・・・。

_0x6eeb64っていうオブジェクトのキー名をランダムにつけてそこに値をいれてるっぽい。

ちょっとわかりづらい・・・。なんかやる気がなくなって・・・きそう。

ページによって動作が変化?

トップページやビュワーページ、履歴ページなどほとんどのページで同じJSファイル(combined.js)が使用されている。

combined.js

location[romi_0x1961(‘0xef’)][romi_0x1961(‘0x97’)](‘/’)[‘slice’](-0x2)[0x0] はサイトのURLの一部を指していることがわかる。
この部分を調べてifで条件分岐させ、動作を変えてるっぽい・・・?
romi_0x1961(‘0xf1’)は解読すると”viewer”となったので上の画像のif文はビュワーページだったら処理を行い、違うページなら処理を行わないということになる。
いくつか条件分岐がみつかったのでページごとに処理が変わるっぽいですね。

console.logが書き換えられている

任意の値をコンソールに表示させるだけの関数console.logですが、解析やデバッグで使わない人はいないと思う。Obfuscatorにconsole.logを書き換える機能があったか覚えてない・・・スクリプト書いた人がconsole.logを使えないように書き換えた可能性あり。

コンソール使いたい場合は書き換えられる前に別変数に代入して避難するなどして、これを回避しないといけない。

WebSocket部分発見

なぜかみつけるのに時間かかってしまった。時間かかった割になんの成果も得られなかったw

広告タグ

こちらは難読化はされていませんでした。新たに読み込むJSが追加されていた。

ExoClickっていうところの広告なのかな。PC版Chromeでは広告が表示されなかったけど、iPhoneのSafariで開いてみるとエロサイトのタブが勝手に開かれてた。

追記:PC版Chromeでもビューワーページに移動したときに勝手に変なサイトに飛ぶ。

このExoClickは悪質な広告を表示することがあるので気を付けたほうがいい。というかほぼ全部よくない広告という印象。

iPhoneだとAdGuard入れて有効にしておけば自動的にブロックされた。

アドブロック対策さえたため、アドブロッカーを有効にした状態でビューワーを開くと「広告ブロッカーを無効にしてください」と表示されて漫画をみることができない。

広告ブロック対策

以前まではアドブロッカーを有効にしておけばアダルト広告などは表示されなかったが、無効にしないと漫画をみることができないようにアップデートされた。

ビューワーページにこのようなコードが追加されている。eval(function(p,a,c,k,e,r)…から始まっているコード。これがアドブロッカーを検知している。

実はこれも難読化されたコード。これはさきほど出てきたJavaScript Obfuscatorではなく別の難読化ツールが使用されている。

これに使用されているのは

/packer/

という名の難読化ツールである。ここで生成されたコードはeval(function(p,a,c,k,e,r)…で始まるのが特徴的。

もし興味があれば→dean.edwards.name/packer/

これ何が書いてあるか全然わからないかんじがするけど、evalの部分をconsole.logに変えて実行するだけで解読できてしまう。

広告ブロック対策を回避できる?

アドブロッカーを有効にしたままにしておきたい。変なサイトに飛ばされたくない。

結論からいうとPCなら自分で回避するためのスクリプト書けるんですけど、スマホだとどうやったらいいのかイマイチわかりません。利用者は圧倒的にスマホの人が多いでしょうし、スマホでも使えそうな方法をみつけたいですね。

解読中・・・

一度にすべて解読するのはとても疲れるので、少しずつ追記していこうと思います。

飽きて更新しなくなったらごめんなさい!!

たぶんもう飽きますw

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

コメント

  1. 太郎 より:

    面白い記事ですね🤣
    開発者は個人のレベルではないような気がします…
    これからの記事も楽しみにしています😃

    • tia より:

      ありがとうございます!
      この記事はさすがにマニアックすぎたかなと思っていたのですが、面白いと感じてくれる人がいてよかったです笑

  2. ナナシ より:

    画像ファイルが置いてあるサーバを特定できたらと思い
    色々と調べてたらこの記事に辿りつきました。
    流石にそう簡単にはいかなそうですね・・・

    。。

    • tia より:

      画像サーバーもおそらくCDNを経由しているので、元のサーバーがどこかを特定するのは難しいと思います。