2 ポイント 投稿者 GN⁺ 2026-01-28 | 1件のコメント | WhatsAppで共有
  • Android向け SSHクライアント JuiceSSH が、2025年12月以降、既存購入者の支払いを認識できなくなった
  • 2019年に購入したユーザーの ライセンスが無効化 され、価格は20ドル値上げされ、一部のユーザーは再購入後も有効化されない問題を経験
  • サポートチームが応答しない ため、ユーザーはこれを事実上の 「exit scam」 と受け止めている
  • 記事では、ApkTool、jadx、jarsigner などを使って アプリをデコンパイルし、smaliコードを修正 してPro機能を復元する方法を段階的に示している
  • クラウド同期とプラグインはもはや動作しないが、Pro機能を再び使えるようにする方法 として紹介されている

JuiceSSHの問題状況

  • JuiceSSHはAndroidで利用できる SSHクライアント で、筆者は2025年12月まではこれを最高のアプリと評価していた
  • 2019年に購入した Pro版ライセンスがもはや認識されず、価格は20ドル上昇
  • 一部のユーザーは、再購入後もアプリが有効化されない とレビューに書いている
  • Google Playでアプリが リストから削除され、サポートチームは 応答しない
  • 筆者はこの状況を exit scam と表現している

アプリ復旧の準備

  • アプリを再び動作させるために、jadxApkTooljarsigner(OpenJDKを含む) などのツールが必要
    • Windowsでは choco install openjdk でインストール可能
  • JuiceSSH APKは PureAPK からダウンロードするか、adb を使って直接抽出できる
  • ダウンロード時には SHA256ハッシュの検証 が必要
    • 最終バージョン(3.2.2)のハッシュは d1ee811bcd82f25aea0bdc568896d82017ee174d9c4631c123a9d9173c748232

デコンパイル段階

  • ApkToolを使ってAPKの DEXコードをデコンパイル する
    & "C:\Program Files\OpenJDK\jdk-25\bin\java.exe" -jar ./apktool_2.12.1.jar d juicessh.apk
    

smaliコードの修正

  • 3つのsmaliファイルを修正する必要がある

1. smali/com/sonelli/juicessh/models/User.smali

  • public boolean H() 関数は 購入と署名の検証 を行う
  • 元の検証ロジックを削除し、常に true を返す ように変更
    public boolean H() {
        return true;
    }
    

2. smali/com/sonelli/oi0.smali

  • public static boolean d(Object obj) 関数は上記の H() を呼び出して購入の有効性を確認する
  • これを 常に true を返す ように修正
    public static boolean d(Object obj) {
        return obj.getClass().getName().equals(User.class.getName());
    }
    

3. smali/com/sonelli/pi0.smali

  • public static void j(Context context, p pVar) 関数は Pro機能認証の中核部分
  • 元々はユーザーセッションを検証し、期限切れ時には再認証を実行する
  • 修正版では 偽のユーザーオブジェクトを作成 し、セッション期限を1年後に設定したうえで 常に成功コールバックを呼び出す
    public static void j(Context context, p pVar) {
        User user = new User();
        user.email = "myemail@google.com";
        user.name = "hello";
        user.given_name = "hello";
        user.sessionExpires = System.currentTimeMillis() + (86400000 * 365);
        user.sessionIdentifier = "";
        b = user;
        pVar.b(user);
    }
    

再コンパイルと署名

  • 修正後にAPKを再ビルドする
    & "C:\Program Files\OpenJDK\jdk-25\bin\java.exe" -jar .\apktool_2.12.1.jar b juicessh
    
  • 生成されたファイルは juicessh\dist\juicessh.apk にある
  • 自己署名用 keystore の作成と APK への署名
    keytool -genkey -v -keystore k.keystore -alias a -keyalg RSA -keysize 2048 -validity 50000
    jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore k.keystore ./juicessh/dist/juicessh.apk a
    

結果と限界

  • 署名済みAPKをインストールすると、セキュリティ警告を無視してPro機能を再び使える
  • クラウド同期機能は動作せずプラグインももはやサポートされない
  • 筆者はこの状況を 開発者への信頼喪失 と表現し、これを「冗談のような出来事」だと評価している

1件のコメント

 
GN⁺ 2026-01-28
Hacker Newsの意見
  • サポートチームが完全に沈黙しており、事実上 exit scam のように見える
    多くのユーザーが金銭的被害を受けた状態で、ようやくこの問題が注目され始めた
    開発者2人は現在それぞれ Microsoft と AWS の管理職に就いており、メールを無視している
    JuiceSSH は放置されたまま、返金もソース公開も最後のアップデートすらないまま終わってしまった
    Google Play サポートにも問い合わせたが、決済から120日を過ぎると返金は不可能だという返答しか得られなかった
    関連リンク: JuiceSSH 紹介, Sonelli 紹介, Paul Maddox, Tom Maddox

    • 上記リンクの一部は CloudFront エラーになるが、sonelli.com にはまだアクセスできる
      数か月前にアプリ内機能でライセンスを再有効化したが、正確にいつだったかは覚えていない
  • このアプリを何年も使ってきたが、最近フォワーディング機能(Pro 機能)を使おうとしたところ、再度支払いを求めるメッセージが出た
    すでに2014年に5ユーロで購入していたのに、今回はさらに30ユーロを支払い、その直後にアプリ全体がロックされてしまった
    メールを何通も送ったが、まったく返事がない

    • まだ間に合うなら Google に返金を申請してみることを勧める
      Google Play 返金ポリシー によると48時間以内のみ可能だが、「購入したものがまったく動作しない」場合は例外になり得る
    • なぜそんな機能にお金を払うのか分からない
      Termux はポケットの中の小さな Linux なので、SSH 関連機能は一通り揃っている
  • 「JuiceSSH が Android で最高」という意見には同意しないが、私は Termux + Unexpected Keyboard の組み合わせしか使ってこなかった
    他のアプリがこの体験を改善できるとは想像しにくい
    JuiceSSH がそこまで良い理由が気になる

    • 今回の議論は、JuiceSSH が もはや動作せずサポートも途絶えている 状況についてのものだ。それが答えだと思う
    • 以前 JuiceSSH Pro をしばらく無料で使ったことはあるが、今では Termux のほうがずっと良いと感じる
      SSH キーや alias の設定、マルチホップ接続も可能で、AnySoftKeyboard のショートカット対応が優秀なので効率的だ
      すべて F-Droid からインストールできる
    • JuiceSSH も Termux も使ったことはないが、ConnectBot で SSH とポートフォワーディングを問題なく使ってきた
      VNC セッションへの接続にも支障はなかった
    • ServerBox に誰も触れていないのが意外だ
      ServerBox (F-Droid) も悪くない代替候補だ
    • JuiceSSH Pro をかなり昔に購入し、今でも毎日使っている
      いくつかのサーバーにワンクリックで接続でき、デバイス間の 同期 も便利だった
      最近 Termux を試したところ代替できそうではあるが、コピー・ペーストやアプリ切り替え時の接続維持は JuiceSSH のほうが優れている
  • Pro 版は長らく使っていないが、今なら Android 15 から提供される Terminal アプリ を使うと思う
    完全な Debian VM 環境だ

    • ただし Snapdragon チップは必要な機能をサポートしていないため、Pixel または MediaTek 搭載端末 でしか使えない
    • Termux は VM を使わないので、より軽快に使える
    • もしかして Termux のことを言っているのだろうか? 似た名前の別の Terminal アプリは見つからない
  • 今回の件は、MorphieReVanced のようなパッチ自動化ツールを紹介する良いきっかけかもしれない

    • ReVanced はよく知っているが、Morphie は初耳だ
      調べたところ morphe.software で確認できた
      現時点では YouTube のみをサポートする ReVanced の派生プロジェクトのようだ
      ちなみに ReVanced 公式サイト は、もともと広告なし YouTube アプリ(Vanced)から始まり、今では複数アプリをパッチできるツールへと発展している
  • Pro 機能プラグインがすべて Play Store から削除 されていることに今気づいた
    以前は Android で最高の SSH クライアントだと思っていたので本当に残念だ

  • 今回の件で、クラウドへの鍵保存の危険性 を改めて思い知らされた
    .ssh の鍵を全部削除し、ed25519 ベースで新しく構成し直すつもりだ

    • 私も JuiceSSH に SSH 鍵をバックアップしていたと思っていたが、今見ると危険かもしれない
      早急に鍵を交換しないと、セキュリティ上の悪夢になりかねない
  • こうした投稿が出てくる理由は理解できるが、少し 早計な結論 かもしれないとも思う
    開発者やサポートチームが過負荷で対応できていないだけかもしれないし、アプリがバグで壊れた可能性もある
    むしろバグ報告、返金申請、代替アプリの利用のほうが適切な対応に思える
    それがサイドローディング全般への否定的な印象に広がることのほうが懸念される

    • ただ、アプリは何年もほとんど変更なしで正常に動いていたのに、突然値上げされ、Pro 機能が停止した
      完全な沈黙の中で金だけ取るのは納得しがたい
      最低でも「ソースコードへのアクセスを失った」とひと言くらい残すべきだった
  • 2年前に JuiceSSH を ConnectBot に完全に置き換えた
    無料で、問題なくしっかり動作する
    Play Store リンク

    • F-Droid 版GitHub リポジトリ もある
    • JuiceSSH や Termux は使ったことがないが、ConnectBot は 安定していて信頼できる SSH クライアント