2 คะแนน โดย GN⁺ 2026-01-28 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • ไคลเอนต์ SSH สำหรับ Android อย่าง JuiceSSH ไม่สามารถรับรู้การชำระเงินของผู้ซื้อเดิมได้อีกต่อไปหลังเดือนธันวาคม 2025
  • ไลเซนส์ของผู้ใช้ที่ซื้อในปี 2019 ถูกทำให้ใช้งานไม่ได้ ราคาเพิ่มขึ้น 20 ดอลลาร์ และผู้ใช้บางรายพบว่าซื้อใหม่แล้วก็ยังไม่ถูกเปิดใช้งาน
  • เนื่องจากทีมซัพพอร์ตไม่ตอบกลับ ผู้ใช้จึงมองว่านี่แทบจะเป็น “exit scam”
  • บทความนี้อธิบายวิธี decompile แอปและแก้ไขโค้ด smali โดยใช้ ApkTool, jadx, jarsigner ฯลฯ เพื่อกู้คืนฟีเจอร์โปรแบบเป็นขั้นตอน
  • แม้การซิงก์ผ่านคลาวด์และปลั๊กอินจะใช้งานไม่ได้อีกต่อไป แต่ก็ถูกนำเสนอว่าเป็น วิธีนำฟีเจอร์โปรกลับมาใช้อีกครั้ง

ปัญหาที่เกิดขึ้นกับ JuiceSSH

  • JuiceSSH เป็น ไคลเอนต์ SSH ที่ใช้งานได้บน Android และผู้เขียนประเมินว่ามันเป็นแอปที่ดีที่สุดจนถึงเดือนธันวาคม 2025
  • ไลเซนส์เวอร์ชัน Pro ที่ซื้อไว้ในปี 2019 ไม่ถูกรับรู้อีกต่อไป และราคาก็เพิ่มขึ้น 20 ดอลลาร์
  • ผู้ใช้บางรายเขียนรีวิวว่า แม้จะซื้อใหม่แล้ว แอปก็ยังไม่ถูกเปิดใช้งาน
  • แอปถูก ถอดออกจากรายการบน Google Play และทีมซัพพอร์ตก็ ไม่ตอบกลับ
  • ผู้เขียนเรียกสถานการณ์นี้ว่า exit scam

การเตรียมตัวเพื่อกู้คืนแอป

  • หากต้องการทำให้แอปกลับมาใช้งานได้อีกครั้ง จำเป็นต้องมีเครื่องมืออย่าง jadx, ApkTool, jarsigner (รวมอยู่ใน OpenJDK) เป็นต้น
    • บน Windows สามารถติดตั้งได้ด้วย choco install openjdk
  • สามารถดาวน์โหลด APK ของ JuiceSSH ได้จาก PureAPK หรือดึงออกมาโดยตรงด้วย adb
  • ตอนดาวน์โหลดจำเป็นต้อง ตรวจสอบแฮช SHA256
    • แฮชของเวอร์ชันสุดท้าย (3.2.2) คือ d1ee811bcd82f25aea0bdc568896d82017ee174d9c4631c123a9d9173c748232

ขั้นตอนการ decompile

  • ใช้ ApkTool เพื่อ decompile โค้ด DEX ของ APK
    & "C:\Program Files\OpenJDK\jdk-25\bin\java.exe" -jar ./apktool_2.12.1.jar d juicessh.apk
    

การแก้ไขโค้ด smali

  • ต้องแก้ไขไฟล์ smali ทั้งหมด 3 ไฟล์

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) เป็น ส่วนสำคัญของการยืนยันฟีเจอร์โปร
  • เดิมทีจะตรวจสอบเซสชันของผู้ใช้และทำการยืนยันใหม่เมื่อหมดอายุ
  • เวอร์ชันที่แก้ไขจะ สร้างอ็อบเจ็กต์ผู้ใช้ปลอม ตั้งเวลาเซสชันหมดอายุไว้ 1 ปีข้างหน้า แล้ว เรียก success callback เสมอ
    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);
    }
    

การ compile ใหม่และการเซ็นลายเซ็น

  • หลังแก้ไขแล้วให้ build 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 ที่เซ็นแล้ว ก็สามารถ เพิกเฉยต่อคำเตือนด้านความปลอดภัยและกลับมาใช้ฟีเจอร์โปรได้อีกครั้ง
  • ฟังก์ชันซิงก์ผ่านคลาวด์จะไม่ทำงาน และ ปลั๊กอินก็ไม่รองรับอีกต่อไป
  • ผู้เขียนอธิบายสถานการณ์นี้ว่าเป็น การสูญเสียความเชื่อมั่นต่อผู้พัฒนา และมองว่าเป็น “เรื่องที่เหมือนตลกร้าย”

1 ความคิดเห็น

 
GN⁺ 2026-01-28
ความคิดเห็นบน Hacker News
  • ทีมซัพพอร์ตเงียบสนิท จนดูแทบไม่ต่างจาก exit scam
    ผู้ใช้จำนวนมากเสียเงินไปแล้ว และเพิ่งเริ่มมีคนสนใจประเด็นนี้ตอนนี้เอง
    ตอนนี้นักพัฒนาสองคนต่างก็เป็นผู้จัดการอยู่ที่ Microsoft และ AWS และกำลังเพิกเฉยต่ออีเมล
    JuiceSSH ถูกปล่อยทิ้งไว้แบบนั้น จบลงโดยไม่มีทั้งการคืนเงิน การเปิดซอร์ส หรือแม้แต่อัปเดตครั้งสุดท้าย
    ได้ติดต่อทีมซัพพอร์ตของ Google Play แล้ว แต่ได้รับคำตอบเพียงว่าหลังชำระเงินเกิน 120 วันจะไม่สามารถขอคืนเงินได้
    ลิงก์ที่เกี่ยวข้อง: แนะนำ JuiceSSH, แนะนำ Sonelli, Paul Maddox, Tom Maddox

    • ลิงก์บางอันด้านบนขึ้น CloudFront error แต่ sonelli.com ยังเข้าได้อยู่
      ไม่กี่เดือนก่อนยังรีแอ็กติเวตไลเซนส์ผ่านฟีเจอร์ในแอปได้อยู่ แต่จำไม่ได้ว่าเมื่อไรแน่
  • ใช้แอปนี้มาหลายปี แต่ไม่นานมานี้พอจะใช้ฟีเจอร์ forwarding (ฟีเจอร์โปร) ก็ขึ้นข้อความให้จ่ายเงินใหม่
    ทั้งที่ซื้อไปแล้วตั้งแต่ปี 2014 ในราคา 5 ยูโร รอบนี้เลยจ่ายเพิ่มอีก 30 ยูโร แล้วแอปทั้งตัวก็ล็อกทันที
    ส่งอีเมลไปหลายครั้งแล้วก็ไม่มีคำตอบ

    • ถ้ายังทัน แนะนำให้ลองขอคืนเงินกับ Google
      ตาม นโยบายคืนเงินของ Google Play ทำได้ภายใน 48 ชั่วโมงเท่านั้น แต่กรณี “สินค้าที่ซื้อใช้งานไม่ได้เลย” อาจเป็นข้อยกเว้น
    • ไม่เข้าใจว่าทำไมต้องจ่ายเงินเพื่อฟีเจอร์แบบนั้น
      Termux คือ Linux ตัวเล็กในกระเป๋า ดังนั้นฟีเจอร์เกี่ยวกับ SSH มีครบอยู่แล้ว
  • จะบอกว่า “JuiceSSH ดีที่สุดบน Android” ก็คงไม่เห็นด้วย แต่ฉันใช้แค่ Termux + Unexpected Keyboard มาตลอด
    นึกไม่ออกเลยว่าจะมีแอปอื่นมาทำประสบการณ์นี้ให้ดีขึ้นได้ยังไง
    เลยสงสัยว่าอะไรทำให้ JuiceSSH ดีขนาดนั้น

    • ประเด็นที่กำลังคุยกันตอนนี้คือ JuiceSSH ใช้งานไม่ได้แล้วและไม่มีซัพพอร์ต นั่นน่าจะเป็นคำตอบได้เอง
    • เมื่อก่อนเคยใช้ JuiceSSH Pro ฟรีอยู่พักหนึ่ง แต่ตอนนี้รู้สึกว่า Termux ดีกว่ามาก
      ตั้งค่า SSH key, alias และการเชื่อมต่อแบบ multi-hop ได้หมด และการรองรับคีย์ลัดของ AnySoftKeyboard ก็ดี ทำให้ใช้งานมีประสิทธิภาพ
      ติดตั้งทั้งหมดได้จาก F-Droid
    • ไม่เคยใช้ทั้ง JuiceSSH และ Termux แต่ใช้ ConnectBot กับ SSH และ port forwarding ได้ดีมาตลอด
      ใช้เชื่อมต่อ VNC session ก็ไม่มีปัญหา
    • แปลกใจที่ไม่มีใครพูดถึง ServerBox
      ServerBox (F-Droid) ก็เป็นทางเลือกที่ดีเหมือนกัน
    • ซื้อ JuiceSSH Pro มานานแล้ว และยังใช้ทุกวันจนถึงตอนนี้
      เชื่อมต่อเซิร์ฟเวอร์หลายตัวได้แบบคลิกเดียว และ การซิงก์ ระหว่างอุปกรณ์ก็สะดวก
      ช่วงหลังลองใช้ Termux แล้วก็ดูเหมือนจะใช้แทนได้ แต่เรื่องคัดลอก-วางหรือการคงการเชื่อมต่อไว้ตอนสลับแอป JuiceSSH ยังดีกว่า
  • ไม่ได้ใช้เวอร์ชัน Pro มานานแล้ว แต่ถ้าเป็นตอนนี้คงใช้ แอป Terminal ที่มีให้ตั้งแต่ Android 15
    มันเป็นสภาพแวดล้อม Debian VM แบบเต็มรูปแบบ

    • แต่ชิป Snapdragon ไม่รองรับฟีเจอร์ที่จำเป็น เลยใช้ได้เฉพาะ Pixel หรืออุปกรณ์ MediaTek
    • Termux ไม่ได้ใช้ VM เลยเบากว่าในการใช้งาน
    • หรือว่าหมายถึง Termux? หาแอป Terminal อื่นที่ชื่อคล้ายกันไม่เจอเลย
  • เหตุการณ์ครั้งนี้อาจเป็นจังหวะดีในการแนะนำเครื่องมืออัตโนมัติสำหรับแพตช์อย่าง Morphie หรือ ReVanced

    • รู้จัก ReVanced ดีอยู่แล้ว แต่เพิ่งเคยได้ยิน Morphie เป็นครั้งแรก
      ลองค้นดูก็เจอที่ morphe.software
      ตอนนี้ดูเหมือนเป็นโปรเจกต์สายแยกของ ReVanced ที่รองรับแค่ YouTube
      ส่วน เว็บไซต์ทางการของ ReVanced เดิมเริ่มจากแอป YouTube แบบไม่มีโฆษณา (Vanced) และตอนนี้พัฒนาเป็นเครื่องมือที่แพตช์แอปได้หลายตัวแล้ว
  • เพิ่งพบว่าปลั๊กอินฟีเจอร์โปรทั้งหมดถูก ลบออกจาก Play Store แล้ว
    เมื่อก่อนเคยคิดว่านี่คือ SSH client ที่ดีที่สุดบน Android น่าเสียดายจริง ๆ

  • เรื่องนี้ทำให้ตระหนักถึง ความเสี่ยงของการเก็บคีย์ไว้บนคลาวด์ อีกครั้ง
    ฉันวางแผนจะลบคีย์ .ssh ทั้งหมดแล้วตั้งใหม่ด้วย ed25519

    • ฉันเองก็คิดว่าเคยแบ็กอัป SSH key ไว้ใน JuiceSSH แต่พอมาดูตอนนี้ก็อาจเสี่ยงเหมือนกัน
      ถ้าไม่รีบเปลี่ยนคีย์ให้เร็ว อาจกลายเป็นฝันร้ายด้านความปลอดภัยได้
  • เข้าใจว่าทำไมถึงมีโพสต์แบบนี้ออกมา แต่ก็คิดว่าอาจเป็นการ สรุปเร็วเกินไป
    นักพัฒนาหรือทีมซัพพอร์ตอาจงานล้นจนตอบช้า หรือแอปอาจพังเพราะบั๊กก็ได้
    การส่ง bug report, ขอคืนเงิน หรือเปลี่ยนไปใช้แอปทางเลือกน่าจะเป็นการรับมือที่ดีกว่า
    และยิ่งน่ากังวลหากเรื่องนี้ลุกลามไปสู่ภาพลบต่อการ sideloading

    • แต่แอปนี้แทบไม่มีการเปลี่ยนแปลงมาหลายปีและใช้งานได้ดีมาตลอด ก่อนจะขึ้นราคาแบบกะทันหันและฟีเจอร์โปรก็หยุดทำงาน
      การเก็บเงินต่อทั้งที่เงียบสนิทแบบนี้ยากจะยอมรับได้
      อย่างน้อยก็ควรบอกสักคำว่า “เข้าถึงซอร์สโค้ดไม่ได้แล้ว”
  • เมื่อ 2 ปีก่อนเปลี่ยนจาก JuiceSSH ไปใช้ ConnectBot แบบสมบูรณ์แล้ว
    ฟรีและใช้งานได้ดีไม่มีปัญหา
    ลิงก์ Play Store

    • มีทั้ง เวอร์ชัน F-Droid และ คลัง GitHub
    • ไม่เคยใช้ JuiceSSH หรือ Termux แต่ ConnectBot เป็น SSH client ที่เสถียรและเชื่อถือได้