最近のゲームでHCA鍵探し, HCA復号に手こずった話.

CUEのまとめ記事・・・的な物を書こうと思ってたんだけど, 思ってたより面倒臭いところが多かったり, バンドリ記事みたいなものを書いた後の人間の文章としてしょぼいなあと思うところが多かったので, こういうタイトルで今一度基本的なことをおさらい… でもしてお茶を濁そうと思う.

タイトルにもあるように手こずったところもあるのでそれも含めてお話しします.

人間書くことを辞めてはならない.

まずHCA鍵(復号鍵)って何?

多分このブログ読んでる人にとっては説明不要だと思うんだけど, Unity製ゲームの音源である.acbとか.awbの中に入ってるHCA音源をwavに変換するのに必要な奴. 厳密な解説とかが知りたい人はhozuki様のブログ行くかこことか見ていただければ…

要するにゲーム音源を抽出するのに必要な暗号みたいなものって認識でいいです.

で, 大体インターネットの海にこの手の情報は落っこちているのになんでこれの探し方を書くのかっていうと マイナーゲームは誰も探してくれないからです. 例えばCUEとかね(5僕の偽モンが沸いたch覗きに行ったら誰か質問しててわろける.自力でやれ )

探し方

結構手法は多いっぽいんだけど僕はこれしか知らないのと簡単だからこれだけ解説.

「.apkからlevelX(Xは数字)を探してそれをバイナリで開いて探す」

です. 僕はこの手法でシャドバとかCUEを発見しました. (厳密に言うとCUEは発見もくそもないけど)

とりあえずCUE!とシャドバの.apkを自前で調達してください. CUE!はなんでか知らんけど野良apkが拾えなかったのでエクスポートするなりして手元に用意してください.

適当なバイナリエディタにlevelXを読み込ませます. 僕はStirlingを使いました.

まあこんな感じで後ろに法を見てみると,10進数でそのまま 59751358413602って書いてありますよね. これを16進数にして左桁から0埋めして16文字にしたものがシャドウバースのHCA復号鍵「00003657F27E3B22」になります.

で, こちらはCUE!のleveXになるんですけど… これは書いてないのかそれともnullだから鍵はないって意味なのかそれとも… ちなみにCUE!の制作会社が作った別ゲーム「A3」ではちゃんと復号鍵があります. うーん…

まあ考えていても仕方がないのでacbDecrypterに適当なCUE!の.acbを投げつけてみると

音源が出ない.

あ~ これってシャドバと同じ新HCA手法なのかなあ… みたいなのが脳裏をよぎった. とりあえず情報を仕入れにhozuki様のブログへ行って適当に文章を読んだところ, とりあえずはHCAを取り出さないと始まらないかと思い, acbunzipでHCAとして開いてみることに. (awbとacbを同じディレクトリにおいてacbunzipへD&D)

acbunzipのダウンロードはこちらから

ん? HCAが二つ…???

えっそんなケースってあるの… 今まではacb/awbの中身ってHCA一個しかないと思ってたんだけど… これをhcatowavに渡して デフォルト鍵で復号したら普通にHCA取れました. めでたしめでたし.

※CUE!のファイルでHCAが二つ以上入ってないパターンでもこの現象起きたので多分そもそもCUE!のHCA自体がやや特殊かもしれない

まとめ

HCA鍵の自力での調達法とHCA新手法ってわけではないと思うんだけどこういうケースがあるらしい, という記事でした.

最近のゲームでHCA鍵探し, HCA復号に手こずった話.” に対して14件のコメントがあります。

  1. th より:

    こんばんは。
    CUE!のHCA鍵は自分も探していたのですが、よくわかんねぇし別にこのゲームやってるわけじゃないからもういいや!って諦めてそのままにしてました。(ちなみに某掲示板で質問してたのは自分ではないです。)
    hozuki氏の記事も目は通していたんですけどね…イマイチ理解できてませんでした。
    この記事を参考にまた時間のある時にでもいじってみようと思います。助かります。

  2. arle より:

    はじめまして。少し前にコメントを入力しましたが反映されてないようなので再度書き込みます
    重複してましたらすみません。

    アプリのBGMを抜き出したくてここに辿り着きました

    こちらはiOSのjailed民なので、データの抽出にはiMazingを使い
    .ipaファイルをunzipしたもの(500MB)と
    データバックアップで抜き出した.imazingappファイルをunzipしたもの(2GB)
    の2つを入手しました(以後軽い方・重い方で分けます)

    まず重い方にサイズの大きいBGM.awb or .acb があったためエディタでHCA鍵を探すも
    当記事のCUE!と同じ結果に…軽い方にシャドバ同様levelXのファイルを見つけましたが、
    .acbファイルでなくエディタで開いてもHCA鍵を見つからなかったため
    BGM.awbをacbDecrypterに投げてみましたが、ノイズのみのファイルでした

    Unity studioを使って他の.acbを抽出できるか確認しましたが出てこず
    他サイトでHCA鍵の探し方を検索してもうまくいきませんでした

    何かHCA鍵を探す他の方法はないでしょうか?
    長文失礼しました。よろしくお願いします。

    1. Maya Yamato より:

      >>アプリのBGMを抜き出したくてここに辿り着きました~~~
      抽出方法よりも何のアプリかを書いていただけると助かります.

      >>当記事のCUE!と同じ結果に…軽い方にシャドバ同様levelXのファイルを見つけましたが、.acbファイルでなくエディタで開いても>>HCA鍵を見つからなかったため BGM.awbをacbDecrypterに投げてみましたが、ノイズのみのファイルでした
      何べん読んでもこの文章の意味がよくわかりません.
      とりあえずわかることだけコメントをすると, それは恐らくCUE!みたいに音源すら出ないパターンと違うので復号鍵が合ってないだけな気がします. つまりはlevelXの記述から正しく鍵を見つけれていないのではないでしょうか?

      >>Unity studioを使って他の.acbを抽出できるか確認しましたが出てこず
      アプリ名がわからないことには何もわかりません. 例えばCUEの場合はそのまま.apkの中に入っていたりしますし

  3. arle より:

    すみません。追記します

    acbunzipを検索しzip形式でダウンロードしましたが、使い方がわかりませんでした
    ファイルが実行形式でないため、当記事のCUE!をどのようにして解決したか
    教えてもらえると助かります
    改めてよろしくお願いします

    1. Maya Yamato より:

      >>acbunzipを検索しzip形式でダウンロードしましたが、使い方がわかりませんでした
      acbunzipにD&Dって記事に書いてあるのですが試されましたでしょうか?? 一応勘違いの可能性も鑑みて当記事で扱っているacbunzipのダウンロード先のリンクを記事に追記しました.

  4. arle より:

    拙い説明で失礼しました
    あと、返信からコメントを入力したのですが何回更新してもなぜか投稿反映されないので
    もう一度書き込みします。すみません

    アプリ名はアークレゾナというやつです
    ちなみにこいつは今月末で終了するので落とせなくなるかもです…

    コメント頂いて再トライしたものの、うまくできませんでした
    簡潔に書こうと思いとりあえず用意したものとやったことをリストにしてみました

    用意したもの
    ・ArkResona.ipa
    ・ArkResona.imazingapp
    ・.ipaをzipにして解凍(軽い方)
    ・.imazingappをzipにして解凍(重い方)
    (これらデータやacbDecrypter等全てデスクトップに置く)

    やったこと
    軽い方にlevel0 があったのでエディタで開く→ PublicKeyToken=null

    重い方にBGM.acb/.awb があったので、それぞれacbDecrypterに投げる(デフォルト鍵)
    acb → 音源がでない(BGMフォルダが作成されファイルが何もない)
    awb → wavが出来上がるがノイズだらけ(質問したのはこのことで、このときacbは投げてませんでした)

    BGM.acb/.awb を同じフォルダに入れて
    ReleaseフォルダのacbUnzip.exeにフォルダをD&D → ”ハンドルされていない例外 ~(フォルダのパス)へのアクセスが拒否されました” となり空フォルダが出力される

    Unity Studio で用意したものすべて開いてみる
    ipa・imazingapp・重い方 → 空
    軽い方 → データは大量に見つかるが.acbは無し

    以上で手詰まり状態となりました。
    あとは他の方法としてBlueStacksで落として入手できないかやってみようと思います

      1. arle より:

        できました!ありがとうございます!
        他のもがんばってやってみます!

  5. より:

    その鍵はどのようにして探されたのでしょうか?

    1. Maya Yamato より:

      日本語の勉強をこちらですると良いと思います.
      https://www.taishukan.co.jp/book/b197759.html

  6. いそべもち より:

    はじめまして。
    「ナナリズム」という音ゲーのBGMを抽出したく検索していたところここにたどり着きました。
    手順通りに試した結果、Level0~5のいずれのファイルにもStreamingAssetsの後ろにキーが書かれていない上、PublicKeyToken=nullの記載もなく手詰まりの状態です。

    hcaの抽出もためしてみました。AcbUnzipにおいて「ハンドルされていない例外」のエラーが出て抽出できませんでしたが、VGMToolにてawbからhcaを抽出することができました。hcaToWavでヘッダーを確認したところ「鍵あり暗号化」であることを確認したため、デフォルト鍵で復号してみたのですが、ファイルが出力されません。

    HCA鍵の解析/hcaの復号などで他に方法がありましたら、ご教授いただけると幸いです。

    1. Maya Yamato より:

      https://github.com/esterTion/CriWare-Key-Logger
      における Better method of extracting を試されては如何でしょう.(自分はこれ試したことが無いのと試す時間が取れないため,紹介だけになってしまいますが...)

      もしうまく行ったらご報告いただけると幸いでございます.

      1. いそべもち より:

        お返事ありがとうございます。
        返信したつもりが、別コメントになってしまいました。

        ナナリズムがil2cppであることに気づいたので、il2cppdumperでDummyDllを生成して再度この方法をやってみたところ、

        CriWareDecrypterConfig decrypterConfig
        String key = “”
        String authenticationFile = “title.dat”

        と表示されました。
        結局キーはわからずですが、少し進展したような気がします…
        引き続き、なにか方法があればご教授のほどよろしくおねがいします。

  7. いそべもち より:

    早速のご返信ありがとうございます。
    Resource.assetsがなかったため、assetフォルダ全体を読みこんでCriWareInitializerを検索してみましたが、該当する数字列はありませんでした。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください