熱門遊戲的“加殼”詭計!!

好久沒搞遊戲了,前幾天看了又重新看了看<開心消消樂>的1.29最新版..於是故事開始了:

1.反編譯分析

首先使用Androidkiller進行反編譯,得到兩個Smali代碼文件夾:mali和smali_classes2。到這覺得挺奇怪的,因爲一個遊戲客戶端,基本都是引擎編寫的,如主流的Cocos2dx、Unity3D等,主要代碼是C/C++/C#或者一些腳本、圖片。無論apk本身有多大,Java邏輯都不會很多,極少編譯出現2個dex,就像一些大型的應用客戶端2個dex纔是普遍的現象。


其次,清單文件AndroidManifest.xml中的多個Activity都能在smali_classes2文件定位到.smali文件,真正是由於方法過多正常分離出2個dex的apk,Application和主Activity的Smali文件會在第一個dex中。


所以可能是僞裝成“加殼”的詭計!!

2.驗證測試

既然全部的源碼都在smali_classes2中,那我們就把smali_classes2->smali,將原來貌似殼文件的smali刪除,然後搜索“.super Landroid/app/Application;”,修復下application入口,回編安裝,遊戲並不奔潰,而是彈出了簽名驗證的正常提示,說明程序沒問題。確實爲“加殼”詭計!!


3.移花接木·化爲己用

Android最大的特點就是可偷。既然它把技術誠心誠意的放出來了,我們就移花接木到自己的APP上啊。。

通過修改、測試,只需三步就可以將任意大小的apk改造成含有2個dex的僞裝加殼的apk:

第一步:將需要修改的apk反編譯,重命名smali->smali_classes2,將我提供的smali複製到反編譯根文件夾;

第二步:修改清單文件AndroidManifest.xml的application入口修改爲:android:name="com.happyelements.security.shellguard.ShellApplication"

第三步:回編配置的最後一行“DexMaps: {}”修改爲:

DexMaps:
  classes2.dex: smali_classes2
如下圖,將一個大小爲72K的apk改造成兩個dex:


相關下載

鏈接: http://download.csdn.net/detail/zihao2012/9375835  可以對比..





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章