天天看點

【雜七雜八】《我叫MT online》反編譯解析

      閑來無聊,折騰一下《我叫MT》這款手遊,我是從開服1區就開始玩的,後來分區時跑到6區了。卡牌遊戲,可玩性還算高,偶爾臉黑上微網誌給大師買買表很有樂趣

【雜七雜八】《我叫MT online》反編譯解析

。尋思着把它拆開來看看,有沒有什麼東西可以拿來借鑒一下,

【雜七雜八】《我叫MT online》反編譯解析

 源碼是不奢求了,資源什麼的就滿足了,結果發現是我想多了

【雜七雜八】《我叫MT online》反編譯解析

 ,今天寫一下大概的過程,因為這個反編譯用處很多,現在絕大部分都在用安卓系統,反編譯可以用來DIY一款你自己的軟體,而不用親自動手去coding,還是很省事很有個性的

【雜七雜八】《我叫MT online》反編譯解析

 。 

      好了,廢話少說,直接入題。我這次下的官方的版本。

      反編譯的工具打包好了,傳送門:http://pan.baidu.com/share/link?shareid=910541378&uk=637953331

1.利用apktool反編譯,得到smali碼。

C:\Windows\System32\Android_Tool\apktool>apktool d ..\iammt.apk
I: Baksmaling...
I: Loading resource table...
I: Loaded.
I: Decoding AndroidManifest.xml with resources...
I: Loading resource table from file: C:\Users\JackyFu\apktool\framework\1.apk
I: Loaded.
I: Regular manifest package...
I: Decoding file-resources...
I: Decoding values */* XMLs...
I: Done.
I: Copying assets and libs...

C:\Windows\System32\Android_Tool\apktool>
           

2.apk結構。

      在apktool目錄下可以看到iammt的檔案夾,看看裡面的東西吧:

       assets檔案夾。包含一些遊戲的圖檔,音樂,資料等比較大的東西(可以看到解壓出來占了52.9M,遊戲的大部分資料都在這裡),不過這裡除了音樂暴露出來以外,圖檔資源都被打包到data.dat中了,沒辦法拿到。。

      lib檔案夾。lib檔案夾包含了以.so字尾的檔案。安卓是基于Linux核心的,而.so就是Linux下相當于Windows下的dll檔案,動态連結庫檔案,裡面就是一個函數集,包含了所有遊戲的源碼、架構、算法等所有你要的你不要的,需要用的時候,你連結它來實作你的功能,用這玩意友善更新,子產品複用,同時也加快程式載入,但是有個毛病,就是看不到裡面的東西。坑爹呢!!!!

【雜七雜八】《我叫MT online》反編譯解析

 《我叫MT》是基于cocos2d-x寫的。可以在cygwin下交叉編譯得到lib。

       META-INF檔案夾。用于存儲包和擴充的配置資料,如安全性和版本資訊,簽名資訊。用來通知安卓系統怎麼來載入這個程式。

       res檔案夾。 包含一些小的圖檔(logo之類的),還有很重要的布局。

       AndroidManifest.xml。這是程式配置檔案,裡面寫了一些配置資訊,如軟體的安卓版本要求,軟體需要調用的子產品,權限聲明(打電話,看地圖,wifi,攝像頭之類的),還有很重要的Activity聲明(不知道要怎麼翻譯

【雜七雜八】《我叫MT online》反編譯解析

 ) 。

       事到如今也沒啥好繼續往下看的了。。。蛋疼,隻能挑一些能看的看吧。。。

       AndroidManifest.xml中有2個Activity,一個是主程式也就是cocos2d-x生成的LoadLibrary的Activity,另一個是一個包含webView的Activity,就是進入《我叫MT》時彈出的公告框,res中也有相關布局。

<activity android:theme="@*android:style/Theme.NoTitleBar.Fullscreen" android:label="@string/app_name" android:name="com.locojoy.immt_a_chs.IamMT" android:screenOrientation="portrait" android:configChanges="keyboardHidden|orientation">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:theme="@*android:style/Theme.NoTitleBar.Fullscreen" android:name="com.locojoy.WebviewActivity" android:screenOrientation="portrait" android:configChanges="orientation" />
           

       其實其他平台版本還附帶有各個平台的充值接口,這個官方版本木有。

3.利用dex2jar和jagui檢視源碼。

      smali碼不好看,我們直接解壓apk。運作:

C:\Windows\System32\Android_Tool\Android_Anti\dex2jar-0.0.7-SNAPSHOT>dex2jar classes.dex
lib\slf4j-api-1.5.8.jar;lib\logback-core-0.9.18.jar;lib\logback-classic-0.9.18.j
ar;lib\dex2jar-0.0.7-SNAPSHOT.jar;lib\commons-io-1.4.jar;lib\asm-debug-all-3.2.jar;
           

       用jdgui打開生成的classes.dex.dex2jar。com.locojoy包,大師僅有的節操盡現。。。

【雜七雜八】《我叫MT online》反編譯解析

       MyActivity extends Cocos2dxActivity,是cocos2d-x Android主程式的入口。

       吐槽一下,竟然木有進行代碼混淆。。。why?

4.重新打包和簽名。

       從第一步得到的檔案夾重新打包回去,并進行簽名。

C:\Windows\System32\Android_Tool\apktool>apktool b iammt iammt_new.apk
I: Checking whether sources has changed...
I: Smaling...
I: Checking whether resources has changed...
I: Building resources...
I: Copying libs...
I: Building apk file...
           

       利用jarsigner或者apksigner進行簽名。打包和簽名都是沒問題的,就是不知道有沒有像QQ那樣的簽名驗證。如果還是像原版那樣如果被篡改還是比較危險的。