先介紹上架 Google Play 的申請步驟,然後告訴你,要上架收費,就要面對被人破解的可能。

接著就乾脆教你怎麼破解(反組譯)了,在下載 app 以後,這些 apk 可以在裝置上的 /data/app 下找到,要看這些 apk 並複製,只要下載 Android SDK,用 adb 就可以辦到。adb pull 拿到 apk 以後,就可以用 unzip/winzip 打開,apk 其實就只是個 zip 檔。解開以後,會看到 .dex 檔案,你可以用 smali/baksmali、dexdump(Android SDK 內建)、dedexerdex2jar搭配Java Decompiler 等工具來看人家寫的程式,修改以後再編譯放回去。

Android License Verification Library (現在看到的名字叫做 Google play Licensing library)是 Google 提供的 library ,可以讓開發者使用來保護自己的心血。使用這個 library 需要搭配 Google API,下載以後,會在 Google SDK 目錄下,使用前先把整個目錄 (<Android SDK>\extras\google\market_licensing\library) 複製出來。建立 Library Project ,Package Name 要命名為 com.android.vending.licensing,好了以後,要去 project properties 裡勾選 "Is Library",然後匯入剛剛複製出來的目錄,這樣就好了。

然後在 app 專案裡,去 project properties 找,選加入 Library Project,這個就是選剛剛建立的 Library。程式裡,最主要就是要去寫一個類別繼承 LicenseCheckerCallback ,然後用 LicenseChecker.checkAccess 帶 callback 類別去做檢查。

// 大致的程式碼
// Create an Obfuscator and a Policy
AESObfuscator obf = new AESObfuscator(SALT, getPackageName(), identity);
ServerManagedPolicy policy = new ServerManagedPolicy(ctx, obf);
// Create the LicenseChecker
LicenseChecker lCheck = new LicenseChecker(ctx, policy, PUB_KEY);
// Do the license check
lcb = new LicCallBack();
lCheck.checkAccess(lcb);

AndroidManifest.xml 要加上 <uses-permission android:name = "com.android.vending.CHECK_LICENSE">
程式上架以後,把 PUB_KEY 填到 https://market.android.com/publish/Home 網站上。

這樣做了以後還是有可能被破解,作者建議可以修改 LVL 的 source code ,這也是作者剛剛建議要複製出來的緣故。

最後是介紹 proguard,在 proguard.cfg 填寫要混淆哪些類別就可以,Android SDK 會負責整個過程。

最後的最後,作者整理該注意的事情以及步驟。

More about Android Apps Security



arrow
arrow

    elleryq 發表在 痞客邦 留言(0) 人氣()