• Android के लिए SSH client JuiceSSH दिसंबर 2025 के बाद मौजूदा खरीदारों के भुगतानों को पहचान नहीं पा रहा है
  • 2019 में खरीदने वाले उपयोगकर्ताओं का license अमान्य हो गया, कीमत 20 डॉलर बढ़ गई, और कुछ उपयोगकर्ताओं को दोबारा खरीदने के बाद भी activation न होने की समस्या हुई
  • support team के जवाब न देने की वजह से उपयोगकर्ता इसे लगभग ‘exit scam’ की तरह देख रहे हैं
  • लेख में ApkTool, jadx, jarsigner आदि का उपयोग करके app को decompile कर smali code में बदलाव करके Pro फीचर्स बहाल करने का तरीका चरण-दर-चरण बताया गया है
  • cloud sync और plugins अब काम नहीं करते, लेकिन इसे Pro फीचर्स फिर से इस्तेमाल करने के तरीके के रूप में पेश किया गया है

JuiceSSH की समस्या की स्थिति

  • JuiceSSH Android पर उपलब्ध एक SSH client है, और लेखक ने 2025 के दिसंबर तक इसे सबसे बेहतरीन app माना
  • 2019 में खरीदा गया Pro version license अब पहचाना नहीं जा रहा, और कीमत 20 डॉलर बढ़ गई
  • कुछ उपयोगकर्ताओं ने review में लिखा कि दोबारा खरीदने के बाद भी app activate नहीं होता
  • Google Play पर app को list से हटा दिया गया है, और support team जवाब नहीं दे रही
  • लेखक ने इस स्थिति को exit scam कहा है

app बहाली की तैयारी

  • app को फिर से चलाने के लिए jadx, ApkTool, jarsigner (OpenJDK सहित) जैसे tools की जरूरत है
    • Windows में इसे choco install openjdk से install किया जा सकता है
  • JuiceSSH APK को PureAPK से download किया जा सकता है, या adb का उपयोग करके सीधे extract किया जा सकता है
  • download करते समय SHA256 hash verification जरूरी है
    • आखिरी version (3.2.2) का hash d1ee811bcd82f25aea0bdc568896d82017ee174d9c4631c123a9d9173c748232 है

decompile चरण

  • ApkTool का उपयोग करके APK के DEX code को decompile करें
    & "C:\Program Files\OpenJDK\jdk-25\bin\java.exe" -jar ./apktool_2.12.1.jar d juicessh.apk
    

smali code में बदलाव

  • तीन smali files में बदलाव करना होगा

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

  • public boolean H() function purchase और signature verification करता है
  • मूल verification logic हटाकर इसे हमेशा true return करने के लिए बदलें
    public boolean H() {
        return true;
    }
    

2. smali/com/sonelli/oi0.smali

  • public static boolean d(Object obj) function ऊपर वाले H() को call करके purchase validity जांचता है
  • इसे हमेशा true return करने के लिए बदलें
    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) function Pro फीचर authentication का मुख्य हिस्सा है
  • मूल रूप से यह user session को verify करता है और expiry होने पर re-authentication करता है
  • बदले हुए version में एक नकली user object बनाया जाता है, session expiry को 1 साल आगे सेट किया जाता है, और हमेशा success callback call किया जाता है
    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);
    }
    

recompile और signing

  • बदलाव के बाद APK को फिर से build करें
    & "C:\Program Files\OpenJDK\jdk-25\bin\java.exe" -jar .\apktool_2.12.1.jar b juicessh
    
  • बनी हुई file juicessh\dist\juicessh.apk में होगी
  • खुद के signing keystore का निर्माण और APK signing
    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
    

परिणाम और सीमाएं

  • signed APK install करने पर security warning को नज़रअंदाज़ करके Pro फीचर्स फिर से इस्तेमाल किए जा सकते हैं
  • cloud sync फीचर काम नहीं करेगा, और plugins भी अब समर्थित नहीं हैं
  • लेखक ने इस स्थिति को developer पर भरोसा टूटने के रूप में बताया और इसे “मज़ाक जैसी बात” कहा

अभी कोई टिप्पणी नहीं है.

अभी कोई टिप्पणी नहीं है.