close

咳咳...今天要來當一下 hacker

我們知道 Htc 把 Htc Sense Input 推上 Google Play 了

但是只有 Htc device 才能下載

如果你之前是 Htc 愛用者,對他們手機失望透頂了,唯獨對他們的鍵盤情有獨鍾

換到別家手機,發現打字不習慣怎辦?

沒關係,哥來教你

首先,把你的舊 Htc 中的 /system/etc/permissions/com.htc.software.market.xml 拉出來

push 到一支有 root 過的手機裡,一樣放在 /system/etc/permissions/ 下

重開機後就可以從下載了 XD

Htc sense input 分成成主程式和語言包

開心的話就把語言包都抓下來安裝

下載完後發現幹你娘不能開啟,會擋非 Htc Device

未命名3  

所以還要再來破解一下

先將主程式 APK 從 root 手機中拉出來 (這邊以 Android 5.0 為例)

adb pull /data/app/com.htc.sense.ime-1/base.apk HtcSeseInput.apk

然後準備一下以下工具

Dex2Jar: 把 dex 轉成 jar 擋
https://code.google.com/p/dex2jar/

JdGUI: 查看 jar 擋的 java code 怎麼寫
http://jd.benow.ca/

Sign Tool: 將 Apk 重新 sign key
http://developer.android.com/tools/publishing/app-signing.html

bakesmail.jar & smail.jar: 把 dex 轉成 smail code & 把 smali code 轉回 dex 的工具
https://code.google.com/p/smali/downloads/list

然後就可以開始我們的旅程了

首先,用解壓縮工具(我是用 7-Zip) 把 classes.dex 從 HtcSeseInput.apk 中拉出來

然後,把這個 dex 擋餵給 dex2jar

dex2jar.bat classes.dex

做完後會發現目錄下多了一個檔案叫 classes_dex2jar.jar

用 JdGUI 開啟這個 classes_dex2jar.jar,就會發現裡面的目錄結構如下

未命名  

找到兩個地方:

com.htc.sense.ime.settings.KeyboardSettings 和 com.htc.sense.ime.HTCIMEService 中有這段 code

未命名2  

所以改法就很簡單,讓 isHTCDevice() always 回傳 true 就好

作法如下:

利用 backsmali.jar 將 dex 檔反組譯成 smali 檔

java -jar baksmali-2.0.3.jar -x classes.dex

然後目錄下會多出一個 out 資料夾,結構與剛剛用 JdGUI 看到的一樣

找到兩個對應的 smali檔案,組語碼如下

.line 2609

:cond_2b
invoke-static {}, Lcom/htc/sense/ime/NonAndroidSDK$HtcAdded;->isHTCDevice()Z

move-result v0

if-nez v0, :cond_8e

為了讓 isHTCDevice() always 回傳 true,在 move-result v0 下面加上

const/4 v0, 0x1

兩個檔案都改好後,再將 smali 檔編回 dex

java -jar smali-2.0.3.jar -o classes.dex out

最後用 7-zip 將 Apk 中原本的 classes.dex 取代掉,再重新 sign key 就可以囉!

請享用~

未命名4  

arrow
arrow
    全站熱搜

    擒猿小舖 發表在 痞客邦 留言(7) 人氣()