To build a better world !

          微信5.0 Android版飛機(jī)大戰(zhàn)破解無(wú)敵模式手記




          微信5.0 Android版飛機(jī)大戰(zhàn)破解無(wú)敵模式手記


          最近微信出了5.0,新增了游戲中心,并內(nèi)置了一個(gè)經(jīng)典游戲《飛機(jī)大戰(zhàn)》。游戲其實(shí)很簡(jiǎn)單,但由于可以和好友一起競(jìng)爭(zhēng)排名,一時(shí)間受到大家的追捧,小伙伴們進(jìn)入“全民打飛機(jī)”時(shí)代。
           
          ios 版出來(lái)不久就被破解出了無(wú)敵模式。Android版出后好像一直風(fēng)平浪靜。周末無(wú)事,加之看雪zmworm版主邀請(qǐng),于是花了一天的工夫研究了下。也出了個(gè)Android版的無(wú)敵模式增強(qiáng)版。具體來(lái)說(shuō)就是無(wú)敵、雙排子彈加無(wú)限炸彈。當(dāng)然,這個(gè)不是重點(diǎn),我們的重點(diǎn)當(dāng)然是技術(shù)細(xì)節(jié)啦!
           
          微信的游戲繼承了Android版手機(jī)QQ游戲中心的思想,也采用插件動(dòng)態(tài)加載方式。具體來(lái)說(shuō),就是插件及游戲以jar包形式存在,jar包中有classes.dex及其他資源文件,在運(yùn)行時(shí)動(dòng)態(tài)加載資源及classes.dex代碼。這樣的好處是靈活管理,易于擴(kuò)展。以后更多的游戲只要上架到微信的服務(wù)器,用戶就能在微信應(yīng)用內(nèi)部下載、安裝、運(yùn)行。具體原理可以參考我2011年的一篇文章《Android類動(dòng)態(tài)加載技術(shù)》
           
          當(dāng)然,那篇文章講的只是基本原理,而微信在代碼動(dòng)態(tài)加載方面則走得更遠(yuǎn)。針對(duì)插件的管理及安全,它有一套完整的框架,并自稱為sandbox。由于代碼有做混淆,加之代碼量挺大,所以我僅算管中窺豹,看到的也只是冰山一角。與實(shí)際情況有所出入,還請(qǐng)見(jiàn)諒!
           
          一、微信游戲插件的安全校驗(yàn)
           
          其實(shí)說(shuō)實(shí)話,微信在游戲插件的安全架構(gòu)方面花了不少功夫。我能破解并不是利用微信在安全方面的漏洞,而是Android系統(tǒng)本身的安全漏洞。這個(gè)漏洞也就是我前段時(shí)間發(fā)的以為是bluebox上報(bào)google的漏洞,后來(lái)被證實(shí)不是。詳情請(qǐng)看《Bluebox Security最新提報(bào)Android漏洞的初步探討》
           
          那微信是如何對(duì)游戲插件進(jìn)行加載及安全校驗(yàn)的呢?
           
          飛機(jī)大戰(zhàn)的游戲插件以jar包的形式,放在微信apk的assets/preload文件夾下:

             
          jar包中包括classex.dex、so本地庫(kù)及drawable圖片資源或者還有xml資源。微信處理插件加載的代碼在com.tencent.mm.compatible.loader包中。加載插件資源的類叫做PluginResourceLoader,它是android.content.res.Resources的子類。
           
          而最核心的加載類應(yīng)該是PluginClassLoader。上面說(shuō)的PluginResourceLoader也是它的成員變量。它似乎負(fù)責(zé)整個(gè)插件加載的各個(gè)環(huán)節(jié)調(diào)度。
           
          Android動(dòng)態(tài)加載類有一個(gè)弊端,就是dex文件必須釋放為本地文件。這是dalvik虛擬機(jī)機(jī)制決定的。一直以為google或者dalvik會(huì)改,不過(guò)似乎到現(xiàn)在還沒(méi)見(jiàn)改進(jìn)。釋放到本地緩存的dex是很容易受到攻擊的,不過(guò)微信在這些細(xì)節(jié)上處理得還挺好,沒(méi)有明顯漏洞。這個(gè)后面再說(shuō)。
           
          PluginClassLoader會(huì)在微信安裝后第一次啟動(dòng)時(shí),掃描插件的情況,并將插件拷貝到自己應(yīng)用data下面的app_dex文件夾下。接下來(lái)會(huì)對(duì)插件進(jìn)行處理。將so庫(kù)釋放到app_lib文件夾下,將jar包中的classes.dex重命名釋放到app_cache文件夾下。
           
          在拷貝插件jar包的過(guò)程中,會(huì)對(duì)插件進(jìn)行第一次校驗(yàn)——簽名校驗(yàn)。關(guān)于簽名校驗(yàn)的原理,可以參看我2011年的另一篇文章《Android APK 簽名比對(duì)》 。微信的簽名校驗(yàn)就是微信APK的簽名需要和插件jar包的簽名一致。這里我考慮過(guò)用bluebox上報(bào)的ANDROID-8219321漏洞繞過(guò)插件jar包的簽名檢測(cè)。經(jīng)過(guò)一段時(shí)間的研究發(fā)現(xiàn)了它還有第二次校驗(yàn)。。。
           
          由于是在拷貝之前進(jìn)行簽名校驗(yàn),所以我考慮過(guò)拷貝完成后,直接替換app_dex和app_lib下的文件的方法。發(fā)現(xiàn)均不可行。繼續(xù)分析發(fā)現(xiàn)了第二次校驗(yàn)——MD5校驗(yàn)。一開(kāi)始看到j(luò)ar包命名就很疑惑,文件名后面一串?dāng)?shù)字是干嘛的。想過(guò)是MD5碼,沒(méi)做驗(yàn)證。直到碰壁之后,才發(fā)現(xiàn)了這里的奧秘。后面這一串?dāng)?shù)字就是jar包的MD5值。插件加載的時(shí)候會(huì)去解析這個(gè)MD5值,并存起來(lái)。在加載運(yùn)行的時(shí)候會(huì)對(duì)這個(gè)MD5值進(jìn)行校驗(yàn),如果緩存中的文件MD5值不同,會(huì)用重新釋放apk中的插件覆蓋。緩存中的dex應(yīng)該也有類似的機(jī)制。這部分代碼分析得不是很透徹,大概原理如此,有感興趣的朋友可以繼續(xù)深入。
           
          MD5值作文件名+簽名校驗(yàn),以為著利用ANDROID-8219321漏洞的企圖落空了。因?yàn)锳NDROID-8219321漏洞的前提是apk中文件的文件名需要保持不變,這樣才能通過(guò)重名文件繞過(guò)簽名校驗(yàn)。然而只要我們改了插件jar包,MD5值就必須得變,從而導(dǎo)致文件名改變。因此此路不通了。(也許可以通過(guò)修改MD5校驗(yàn)和簽名校驗(yàn)的smali繞過(guò)校驗(yàn),無(wú)奈我暫時(shí)沒(méi)找到具體MD5校驗(yàn)的代碼,只能作罷)。
           
          MD5值作文件名+插件簽名校驗(yàn),再加上安裝APK本身的簽名校驗(yàn)。三重校驗(yàn)保證了微信游戲的安全性。
           
          因此我只能采用《Bluebox Security最新提報(bào)Android漏洞的初步探討》 一文中所述的安全漏洞。此漏洞針對(duì)system/app和vendor/app下的apk只會(huì)校驗(yàn)manifest.xml文件簽名。因此我可以任意修改插件jar包,在重新生成新包之后計(jì)算出新包的MD5值,并對(duì)新包進(jìn)行重命名。對(duì)于插件的簽名校驗(yàn),則直接通過(guò)修改smali代碼,屏蔽掉微信簽名校驗(yàn)的函數(shù)功能,直接返回true:


          這就是我們修改插件之后得以正常運(yùn)行的理論基礎(chǔ)及可行性保證。有了上面的理論,我們就可以開(kāi)始修改游戲了!
           
           
          二、飛機(jī)大戰(zhàn)游戲破解
           
          飛機(jī)大戰(zhàn)這個(gè)游戲據(jù)說(shuō)是騰訊一個(gè)程序員一周時(shí)間開(kāi)發(fā)完成的作品。其實(shí)考慮到這個(gè)游戲的規(guī)模,除GUI和交互設(shè)計(jì)外,程序員一周時(shí)間應(yīng)該也差不多了。沒(méi)有太大出入。
           
          此游戲采用的游戲引擎是libgdx。相信做過(guò)Android游戲的朋友對(duì)此款引擎不會(huì)陌生。如果在Android平臺(tái)開(kāi)源游戲引擎里,cocos2d當(dāng)仁不讓地排第一的話,那么libgdx也可以當(dāng)仁不讓地排第二了。cocos2d主要采用C++開(kāi)發(fā),而libgdx則主要采用java方式開(kāi)發(fā)。學(xué)習(xí)成本低,開(kāi)發(fā)周期短,是它的優(yōu)勢(shì)。當(dāng)然它也是跨多平臺(tái)的游戲引擎,運(yùn)行效率方面稍有欠缺但也不錯(cuò)。因此廣大的Android單機(jī)小游戲都是采用libgdx作為游戲引擎。
           
          微信飛機(jī)大戰(zhàn)的代碼量不大,有興趣的朋友可以研究下,移植成為一款獨(dú)立的單機(jī)游戲應(yīng)該也不難。下面我詳細(xì)介紹下飛機(jī)大戰(zhàn)游戲破解的技術(shù)細(xì)節(jié)。
           
          第一步就是將飛機(jī)大戰(zhàn)游戲的插件包從apk中釋放出來(lái)。我們可以采用反編譯APK的方式反編譯這個(gè)插件包。修改smali代碼之后,再打包回jar包文件。如果還有朋友對(duì)APK破解流程不熟悉的話,可以參考我以前的一篇文章《APK Crack》 。這里我們主要介紹游戲的架構(gòu)及破解思路。
           
          解壓之后,smali部分其實(shí)可以分為兩個(gè)包:com.badlogic.gdx和com.tencent.mm.plugin.shoot。前面一個(gè)是libgdx導(dǎo)入的jar包,這個(gè)不是我們關(guān)心的內(nèi)容。我們的重點(diǎn)就在com.tencent.mm.plugin.shoot這個(gè)包中。
           
          游戲主要有兩個(gè)Activity:ShootMainUI和ShootFlashUI。它們都繼承自com.badlogic.gdx.backends.android.AndroidApplication,這個(gè)類事實(shí)上繼承自Android系統(tǒng)的Activity。它們一個(gè)是主加載界面,一個(gè)是我們停留時(shí)間最長(zhǎng)的游戲界面。當(dāng)然需要了解,但都不是重點(diǎn),重點(diǎn)是我們游戲中的各種角色:
           

          這些角色構(gòu)成了整個(gè)游戲的演員,他們都繼承自同一個(gè)類:GameSprite。相當(dāng)于游戲引擎中精靈的概念。它們都有生命值、寬高、速度、類型、狀態(tài)等屬性。這些類的定義都在actor子包內(nèi)。在游戲過(guò)程中會(huì)對(duì)每個(gè)精靈做碰撞檢測(cè),當(dāng)你發(fā)現(xiàn)你的飛機(jī)爆炸時(shí),就是碰撞檢測(cè)在起作用。順便說(shuō)一下,libgdx引擎采用的物理引擎是C++版的box2d,性能非常不錯(cuò)。
           
          好了,我們具體的破解特性,我會(huì)以任務(wù)的形式一個(gè)一個(gè)娓娓道來(lái)。下面我們接到的第一個(gè)任務(wù)就是“永久雙子彈”!
           
          任務(wù)1、永久雙子彈!
           
          在玩飛機(jī)大戰(zhàn)時(shí),雙子彈意味著更大的威力。可以消滅更多的敵機(jī),化險(xiǎn)為夷。然而在實(shí)際游戲中我們只有吃到PROPS_DOUBLE之后才能擁有一段有限時(shí)間的雙子彈狀態(tài)。
           
          雙子彈屬性屬于HERO的,對(duì)應(yīng)的類是Player和PlayerActor。Player繼承自GameSprite,而PlayerActor則是libgdx中的actor類的概念。兩個(gè)前者注重狀態(tài)和屬性,后者注重邏輯和動(dòng)作。
           
          Player在構(gòu)造函數(shù)初始化時(shí)就會(huì)設(shè)置子彈類型:

           
          我們只需要把BulletType從NORMAL改為DOUBLE就可以了。
           
          PlayerActor會(huì)對(duì)子彈類型進(jìn)行定時(shí)地檢測(cè),檢測(cè)是會(huì)將雙子彈還原為單子彈。應(yīng)該是為了處理吃到PROPS_DOUBLE后,一段時(shí)間子彈還原的問(wèn)題。所以我們一并改掉:

           
          OK,雙子彈破解任務(wù)完成!
           
           
          任務(wù)2、炸彈無(wú)限!
           
          炸彈是個(gè)好東西,威力無(wú)窮。關(guān)鍵時(shí)候全靠它清屏,消滅所有敵機(jī)!而且它還是刷分利器。當(dāng)然,只有在它變?yōu)闊o(wú)限的時(shí)候,我們才能用它來(lái)刷分。
           
          這里我試圖修改Player的getBombNumber和setBombNumber方法,發(fā)現(xiàn)均不行。后來(lái)轉(zhuǎn)變思路,只要在使用炸彈后炸彈數(shù)量不減少,就能實(shí)現(xiàn)無(wú)限炸彈的功能。經(jīng)過(guò)代碼追蹤,最后定位到一處混淆代碼處。將-0x1改為了0x0。

           
          修改的結(jié)果,在吃到兩個(gè)炸彈后使用炸彈不會(huì)減少炸彈數(shù)量。吃一個(gè)炸彈時(shí),使用炸彈后炸彈按鈕消失,因此無(wú)法做到無(wú)限。請(qǐng)記住一定要存到兩個(gè)炸彈之后才能無(wú)限炸彈。無(wú)限炸彈破解任務(wù)完成!
           
           
          任務(wù)3、開(kāi)啟無(wú)敵模式!
           
          長(zhǎng)生不死一直是我們?nèi)祟惖慕K極夢(mèng)想,在游戲中也不例外。iphone版微信也是因?yàn)橛辛孙w機(jī)大戰(zhàn)無(wú)敵模式而被各大新聞?wù)军c(diǎn)競(jìng)相轉(zhuǎn)載。讓我們Android版也無(wú)敵一下吧~
           
          前面提到了GameSprite是所有角色的父類,在游戲用物理引擎做碰撞檢測(cè)后,會(huì)調(diào)用GameSprite類的hit方法。hit方法中將GameSprite的liftCount減一,如果減到0則將狀態(tài)設(shè)置為DEAD。
           
          GameSprite的狀態(tài)有如下一些:
           
          DEAD
          EXPLODING
          FLIGTHING
          HITING
          INVINCIBLE
           
          在飛機(jī)正常的死亡過(guò)程中,是先HITING,再EXPLODING,再DEAD。FLIGTHING我不清楚干嘛的,INVINCIBLE應(yīng)該是無(wú)敵模式。但是在我的破解里,并沒(méi)有使用這個(gè)模式,而是強(qiáng)制在碰撞檢測(cè)結(jié)果中,把它列在了生死薄之外。至于INVINCIBLE的方式,大家可以試試能不能很好的維護(hù)這個(gè)狀態(tài)。
           
          具體來(lái)說(shuō)就是hit方法不管GameSprite是hero也好,enemy也罷,均一視同仁,生命值減一,或者死掉。然而我們可以通過(guò)修改smali代碼,將hero列在生死薄之外:

           
          其中g(shù)oto_1標(biāo)簽跳轉(zhuǎn)到return-void。這樣我們的hero將永遠(yuǎn)不會(huì)被hit,因此也就無(wú)敵啦!
           
           
          任務(wù)4、獨(dú)孤求敗。。。
           
          本以為完成任務(wù)3就大功告成了,誰(shuí)知我們?nèi)庇龅搅藷o(wú)敵的尷尬——死不了。。。死不了,意味著永遠(yuǎn)無(wú)法結(jié)束游戲,永遠(yuǎn)不會(huì)有機(jī)會(huì)上傳自己的得分進(jìn)入排行榜。哎,現(xiàn)在終于明白為什么獨(dú)孤求敗了。。。
           
          基于此,我們得想個(gè)辦法觸發(fā)飛機(jī)非自然死亡。想來(lái)想去,我還是覺(jué)得讓飛機(jī)自己決定自己的生死最合理。具體就是當(dāng)飛機(jī)飛到屏幕最上方時(shí)觸發(fā)死亡。因?yàn)橐话闱闆r,我們不會(huì)把飛機(jī)飛到屏幕最上方,所以誤操作概率極低。
           
          通過(guò)前面我們知道hero飛機(jī)的類就是Player。而Player中有一個(gè)函數(shù)更新飛機(jī)的坐標(biāo)位置:updatePosition。所以我們可以在這個(gè)函數(shù)中進(jìn)行我們想要的操作:

           
          其中0x64就是我指定的y坐標(biāo)下限100。當(dāng)飛機(jī)坐標(biāo)y在100以內(nèi)時(shí),我會(huì)把飛機(jī)的LiftCount設(shè)置為0,然后再將狀態(tài)設(shè)置為EXPLODING。飛機(jī)就會(huì)爆炸死亡了~
          OK,任務(wù)完成,打完收工!
           
           
          三、一些掃尾工作
           
           插件包修改完成后,我們通過(guò)apktool,將其打包回jar包。res資源包需要手動(dòng)添加會(huì)jar包中。然后按照第一節(jié)所說(shuō)的,生成jar報(bào)的MD5碼,重命名jar包。
           微信APK也需要按第一節(jié)的方法,將插件的簽名校驗(yàn)屏蔽掉。編譯出classes.dex,替換微信原始包中的classes.dex。
          再將APK包中的飛機(jī)大戰(zhàn)插件換為我們編譯出來(lái)重命名的這個(gè)jar包。
           
          OK,APK準(zhǔn)備好了。
           
          由于我利用的是《Bluebox Security最新提報(bào)Android漏洞的初步探討》 一文中所述的安全漏洞,所以安裝此APK的過(guò)程并不是菜鳥(niǎo)能玩的。。。簡(jiǎn)單來(lái)說(shuō),你需要root權(quán)限,并能將system分區(qū)mount為可寫(xiě)。
           
          然后卸載你原本的微信。將這個(gè)apk放到/system/app/文件夾下。稍等片刻,你就是打飛機(jī)的高手了!
           
          如需技術(shù)交流,請(qǐng)與我聯(lián)系。新浪微博: @囧虎張建偉

          轉(zhuǎn)載請(qǐng)注明出處: http://www.aygfsteel.com/zh-weir/archive/2013/08/14/402821.html
           
          附排行榜:



                
          注:游戲作弊有一定的封號(hào)風(fēng)險(xiǎn),請(qǐng)大家慎重使用。本帖只作技術(shù)交流,不用于其他任何商業(yè)目的。
           

          --------------------------------------------------------------

          補(bǔ)充說(shuō)明(2013.8.15):
               
          有朋友反饋,按照我文中的步驟一步步下來(lái),生成apk push到system/app下,程序無(wú)法正常運(yùn)行起來(lái)。強(qiáng)制退出。
          請(qǐng)查看log,是否有類似如下錯(cuò)誤:
             
          Caused by: java.lang.UnsatisfiedLinkError: Couldn't load CrashMonitorForJni: findLibrary returned null ..... 
          at com.tencent.mm.sdk.platformtools.CrashMonitorForJni.init(SourceFile:26) 
          at com.tencent.mm.sdk.platformtools.aq.<clinit>(SourceFile:62)
             
          導(dǎo)致這類錯(cuò)誤的原因是有些手機(jī)將apk push到system/app下后,安裝過(guò)程不會(huì)釋放拷貝so庫(kù)。
          你需要手動(dòng)將微信lib下對(duì)應(yīng)你手機(jī)平臺(tái)的so庫(kù)拷貝到/data/data/com.tencent.mm/lib對(duì)應(yīng)的文件夾下。
          由于我的手機(jī)沒(méi)這個(gè)問(wèn)題,所以之前沒(méi)有發(fā)現(xiàn)。特在此做補(bǔ)充說(shuō)明。

          ----------------------------------------------------------------

          補(bǔ)充說(shuō)明2暨可安裝版APK發(fā)布(2013.8.18):

          本文發(fā)出后,得到廣大網(wǎng)友的熱烈響應(yīng)。一些網(wǎng)友因本文對(duì)軟件安全產(chǎn)生了極大興趣。

          許多朋友按照文中的方法破解成功,而也有不少朋友還有一些關(guān)鍵點(diǎn)沒(méi)有突破。很高興看到大家在論壇、微博、博客和郵件中與我交流,我也盡量答復(fù)大家技術(shù)相關(guān)的問(wèn)題。但仍有不少朋友的問(wèn)題沒(méi)來(lái)得及答復(fù),在此向你們表示歉意!

          在大家的提問(wèn)中,很多朋友希望我能直接提供APK,以供深入研究。之前由于安裝步驟過(guò)于繁瑣,所以一直沒(méi)有發(fā)布APK。

          好消息是在網(wǎng)友的不斷提問(wèn)和更多的信息提供之后,我發(fā)現(xiàn)最新的微信版本似乎將我文中提及的安全校驗(yàn)機(jī)制關(guān)閉掉了。因此,我們可以采用重簽名的方法得到可以直接安裝的APK。值得注意的是:1、插件jar包和APK包都需要簽名,且簽名一致;2、MD5校驗(yàn)似乎也失效,不用重命名插件包。

          (我確信這在我之前破解的版本是不行的,嚴(yán)重懷疑微信是不是把內(nèi)部debug的版本給放出來(lái)了。。。)


          APK下載地址:點(diǎn)擊下載 
              
          再次聲明:本破解版游戲僅用作技術(shù)交流,嚴(yán)禁用于任何商業(yè)目的!違者后果自負(fù)!
               
             

          posted on 2013-08-14 23:10 zh.weir 閱讀(42981) 評(píng)論(65)  編輯  收藏 所屬分類: Android軟件安全Java的深入理解

          評(píng)論

          # re: 微信5.0 Android版飛機(jī)大戰(zhàn)破解無(wú)敵模式手記 2013-08-15 00:11 tarochen

          真心牛逼  回復(fù)  更多評(píng)論   

          # re: 微信5.0 Android版飛機(jī)大戰(zhàn)破解無(wú)敵模式手記[未登錄](méi) 2013-08-15 07:20 天一

          厲害,學(xué)習(xí)!!!!  回復(fù)  更多評(píng)論   

          # re: 微信5.0 Android版飛機(jī)大戰(zhàn)破解無(wú)敵模式手記 2013-08-15 10:09 仙人掌

          遇到高手了,太厲害了!!!!!!  回復(fù)  更多評(píng)論   

          # re: 微信5.0 Android版飛機(jī)大戰(zhàn)破解無(wú)敵模式手記 2013-08-15 10:25 黃先生

          能不能提供一個(gè)改好的apk?  回復(fù)  更多評(píng)論   

          # re: 微信5.0 Android版飛機(jī)大戰(zhàn)破解無(wú)敵模式手記 2013-08-15 10:25 黃先生

          能不能提供一個(gè)改好的apk? 411641192@qq.com  回復(fù)  更多評(píng)論   

          # re: 微信5.0 Android版飛機(jī)大戰(zhàn)破解無(wú)敵模式手記 2013-08-15 10:35 wx

          你要是搞個(gè)包就完美了,畢竟不是誰(shuí)都懂的開(kāi)發(fā)。。  回復(fù)  更多評(píng)論   

          # re: 微信5.0 Android版飛機(jī)大戰(zhàn)破解無(wú)敵模式手記 2013-08-15 13:16 ,。

          求APK。。。。。。。。。。。。。  回復(fù)  更多評(píng)論   

          # re: 微信5.0 Android版飛機(jī)大戰(zhàn)破解無(wú)敵模式手記[未登錄](méi) 2013-08-15 13:44 藍(lán)

          同求APK  回復(fù)  更多評(píng)論   

          # re: 微信5.0 Android版飛機(jī)大戰(zhàn)破解無(wú)敵模式手記[未登錄](méi) 2013-08-15 15:37 aaaaa

          979777644@qq.com 求APK
            回復(fù)  更多評(píng)論   

          # re: 微信5.0 Android版飛機(jī)大戰(zhàn)破解無(wú)敵模式手記 2013-08-15 15:46 熱熱特

          yimmy08@126.com
          求APK 解壓了 不知道怎么改
            回復(fù)  更多評(píng)論   

          # re: 微信5.0 Android版飛機(jī)大戰(zhàn)破解無(wú)敵模式手記[未登錄](méi) 2013-08-15 16:43 天一

          按大師的手稿,花了兩個(gè)小時(shí)重做了一系列步驟:
          插件部分很順利修改并編譯通過(guò);
          解開(kāi)/編譯主APK的時(shí)候,資源(好像多為圖片)提示有問(wèn)題;
          按步驟打包好的程序,放到SYSTEM/APP下,系統(tǒng)圖標(biāo)能出來(lái),但一運(yùn)行就報(bào)“微信 已停止”錯(cuò),求指導(dǎo)。

          問(wèn)題:
          是否跟系統(tǒng)有關(guān),我的是4.1.2?
          主程序無(wú)法編譯回apk,只能生成classes.dex的情況,是否正常?
          jar(res也手動(dòng)放了)及apk打包后,是否需要重新簽名(如用Auto-sign,目前不簽,單簽jar或jar+apk都簽,都一樣的錯(cuò))?

          我的郵箱:4483154@qq.com,求教!  回復(fù)  更多評(píng)論   

          # re: 微信5.0 Android版飛機(jī)大戰(zhàn)破解無(wú)敵模式手記 2013-08-15 17:03 zh.weir

          @天一

          具體是報(bào)什么錯(cuò)?

          微信反編譯后只需要classes.dex,資源不能打包不影響。
          classes.dex替換原來(lái)微信apk中的classes.dex。使用原來(lái)的簽名信息,不需要重新簽名。  回復(fù)  更多評(píng)論   

          # re: 微信5.0 Android版飛機(jī)大戰(zhàn)破解無(wú)敵模式手記 2013-08-15 17:39 Quanyi

          樓主好強(qiáng)大  回復(fù)  更多評(píng)論   

          # re: 微信5.0 Android版飛機(jī)大戰(zhàn)破解無(wú)敵模式手記[未登錄](méi) 2013-08-15 17:44 斷點(diǎn)

          可惜沒(méi)成果給大家用啊,破解個(gè)加強(qiáng)火力的(永久雙子彈)來(lái)玩就心滿意足了~  回復(fù)  更多評(píng)論   

          # re: 微信5.0 Android版飛機(jī)大戰(zhàn)破解無(wú)敵模式手記 2013-08-15 19:28 lgwinner

          您好,很佩服您的破解思路,我也做了些破解實(shí)驗(yàn)
          詳細(xì)信息已經(jīng)發(fā)到了您的gmail郵箱。
          希望可以進(jìn)行有深度交流!
          第一次的回復(fù)錯(cuò)發(fā)在了另一篇文章中,無(wú)視吧  回復(fù)  更多評(píng)論   

          # re: 微信5.0 Android版飛機(jī)大戰(zhàn)破解無(wú)敵模式手記[未登錄](méi) 2013-08-15 19:58 天一

          @zh.weir
          運(yùn)行是出錯(cuò),沒(méi)有任何界面的. 點(diǎn)一下圖標(biāo)-->黑屏-->過(guò)一會(huì)就顯示"小黑框ALTER,內(nèi)容是[微信 已停止]".  回復(fù)  更多評(píng)論   

          # re: 微信5.0 Android版飛機(jī)大戰(zhàn)破解無(wú)敵模式手記[未登錄](méi) 2013-08-15 21:52 天一

          @zh.weir

          又重新做了一下步驟,這次將操作縮短為,只改loader代碼,jar原封不動(dòng),還是有問(wèn)題.
          估計(jì)是主程序APK,build\apk\classes.dex這個(gè)文件生成就已經(jīng)有問(wèn)題了.我去模擬器下試試,求解!!!!!!  回復(fù)  更多評(píng)論   

          # re: 微信5.0 Android版飛機(jī)大戰(zhàn)破解無(wú)敵模式手記[未登錄](méi) 2013-08-15 22:39 天一

          好像是加載某個(gè)插件的線程中掛了!!!

          D dalvikvm: GC_CONCURRENT freed 178K, 9% free 11771K/12871K, paused 1ms+3ms, total 17ms

          I ActivityThread: Pub com.tencent.mm.sdk.plugin.provider: com.tencent.mm.plugin.base.stub.MMPluginProvider

          W dalvikvm: Exception Ljava/lang/UnsatisfiedLinkError; thrown while initializing Lcom/tencent/mm/sdk/platformtools/aq;
          08-15 21:59:11.655 10524 10524 D AndroidRuntime: Shutting down VM

          W dalvikvm: threadid=1: thread exiting with uncaught exception (group=0x420792a0)

          E AndroidRuntime: FATAL EXCEPTION: main

          E AndroidRuntime: java.lang.ExceptionInInitializerError

          E AndroidRuntime: at com.tencent.mm.app.MMApplication.onCreate(SourceFile:43)  回復(fù)  更多評(píng)論   

          # re: 微信5.0 Android版飛機(jī)大戰(zhàn)破解無(wú)敵模式手記[未登錄](méi) 2013-08-15 22:44 天一

          Caused by: java.lang.UnsatisfiedLinkError: Couldn't load CrashMonitorForJni: findLibrary returned null
          .....
          at com.tencent.mm.sdk.platformtools.CrashMonitorForJni.init(SourceFile:26)
          at com.tencent.mm.sdk.platformtools.aq.<clinit>(SourceFile:62)  回復(fù)  更多評(píng)論   

          # re: 微信5.0 Android版飛機(jī)大戰(zhàn)破解無(wú)敵模式手記 2013-08-15 23:27 zh.weir

          @天一

          對(duì)于Link so庫(kù)失敗的問(wèn)題,我已經(jīng)在文章末尾做了補(bǔ)充說(shuō)明。請(qǐng)參考。  回復(fù)  更多評(píng)論   

          # re: 微信5.0 Android版飛機(jī)大戰(zhàn)破解無(wú)敵模式手記[未登錄](méi) 2013-08-15 23:46 天一

          @zh.weir
          非常感謝,主程序修改已經(jīng)正常.接下來(lái)處理jar.  回復(fù)  更多評(píng)論   

          # re: 微信5.0 Android版飛機(jī)大戰(zhàn)破解無(wú)敵模式手記[未登錄](méi) 2013-08-16 06:10 zero

          fsd  回復(fù)  更多評(píng)論   

          # re: 微信5.0 Android版飛機(jī)大戰(zhàn)破解無(wú)敵模式手記 2013-08-16 18:04 王先生

          求個(gè)apk包495632219@qq.com 萬(wàn)分感謝啊  回復(fù)  更多評(píng)論   

          # re: 微信5.0 Android版飛機(jī)大戰(zhàn)破解無(wú)敵模式手記 2013-08-16 20:00 Nelile

          求個(gè)APK包謝謝啊`855480@QQ.com  回復(fù)  更多評(píng)論   

          # re: 微信5.0 Android版飛機(jī)大戰(zhàn)破解無(wú)敵模式手記 2013-08-16 21:11 dancer

          同樣的問(wèn)題,push完 運(yùn)行報(bào)錯(cuò) 小米的系統(tǒng)   回復(fù)  更多評(píng)論   

          # re: 微信5.0 Android版飛機(jī)大戰(zhàn)破解無(wú)敵模式手記[未登錄](méi) 2013-08-17 00:18 天一

          終于在模擬器下搞定,還是跟系統(tǒng)有關(guān),就如您補(bǔ)充說(shuō)的so不會(huì)自動(dòng)放,需要手工cp.其實(shí)不止so,com.tencent.mm下的幾個(gè)目錄內(nèi)容都有這個(gè)問(wèn)題,都需要手工處理.  回復(fù)  更多評(píng)論   

          # re: 微信5.0 Android版飛機(jī)大戰(zhàn)破解無(wú)敵模式手記[未登錄](méi) 2013-08-17 00:19 天一

          忘了,再次說(shuō)聲謝謝! 這幾天下來(lái),學(xué)了挺多東西. 看來(lái)是得補(bǔ)補(bǔ)JAVA及安卓基本知識(shí)了.  回復(fù)  更多評(píng)論   

          # re: 微信5.0 Android版飛機(jī)大戰(zhàn)破解無(wú)敵模式手記 2013-08-17 07:10 wuxianlin

          微信5.0破解版——讓你打飛機(jī)世界第一!!
          http://bbs.myoppo.com/forum.php?mod=viewthread&tid=1578331&fromuid=3881282
          (出處: OPPO社區(qū))
          OPPO Find 5親測(cè)!  回復(fù)  更多評(píng)論   

          # re: 微信5.0 Android版飛機(jī)大戰(zhàn)破解無(wú)敵模式手記 2013-08-17 10:04 廣州隔音窗

          這個(gè)也是第一次接觸  回復(fù)  更多評(píng)論   

          # re: 微信5.0 Android版飛機(jī)大戰(zhàn)破解無(wú)敵模式手記[未登錄](méi) 2013-08-17 16:13 dd

          @天一
          能傳授一下嗎。qq1634684456  回復(fù)  更多評(píng)論   

          # re: 微信5.0 Android版飛機(jī)大戰(zhàn)破解無(wú)敵模式手記 2013-08-17 19:00 tqing12

          感謝樓主,但是回編譯出現(xiàn)這個(gè)錯(cuò)誤怎么辦呢?out\com\tencent\mm\plugin\shoot\actor\GameSprite.smali[233,19] Label "goto_1" is
          not defined.  回復(fù)  更多評(píng)論   

          # re: 微信5.0 Android版飛機(jī)大戰(zhàn)破解無(wú)敵模式手記 2013-08-17 22:03 葉問(wèn)

          求apk安裝包啊啊啊。。。感謝。5958965896@163。com  回復(fù)  更多評(píng)論   

          # re: 微信5.0 Android版飛機(jī)大戰(zhàn)破解無(wú)敵模式手記 2013-08-18 00:00 beiju

          樓主 求教

          E/ActivityThread(2821): Failed to find provider info for com.tencent.mm.coolassist.debugprovider
            回復(fù)  更多評(píng)論   

          # re: 微信5.0 Android版飛機(jī)大戰(zhàn)破解無(wú)敵模式手記 2013-08-18 00:16 FDA

          我也想知道這個(gè)問(wèn)題怎么解決@tqing12
            回復(fù)  更多評(píng)論   

          # re: 微信5.0 Android版飛機(jī)大戰(zhàn)破解無(wú)敵模式手記[未登錄](méi) 2013-08-18 01:41

          請(qǐng)問(wèn)一個(gè)小白問(wèn)題,反編譯后的smali文件夾怎么打包會(huì)jar的格式呢?高手見(jiàn)諒  回復(fù)  更多評(píng)論   

          # re: 微信5.0 Android版飛機(jī)大戰(zhàn)破解無(wú)敵模式手記 2013-08-18 12:16 FDA

          @劉
          會(huì)打包成.dex文件格式,然后再替換回.jar包  回復(fù)  更多評(píng)論   

          # re: 微信5.0 Android版飛機(jī)大戰(zhàn)破解無(wú)敵模式手記 2013-08-18 12:46 tb

          厲害 好好研究一下  回復(fù)  更多評(píng)論   

          # re: 微信5.0 Android版飛機(jī)大戰(zhàn)破解無(wú)敵模式手記 2013-08-18 18:57 Inxo

          閃退啊,求解,出一下啟動(dòng)的那個(gè)圖片就消失了  回復(fù)  更多評(píng)論   

          # re: 微信5.0 Android版飛機(jī)大戰(zhàn)破解無(wú)敵模式手記 2013-08-18 21:23 zh.weir

          @Inxo

          可能你破解的操作出了問(wèn)題。看樣子是在簽名校驗(yàn)時(shí)出錯(cuò)了。
          一步步檢查一下你的操作過(guò)程吧。

          如果有錯(cuò)誤日志,也可以貼出來(lái)看看。  回復(fù)  更多評(píng)論   

          # re: 微信5.0 Android版飛機(jī)大戰(zhàn)破解無(wú)敵模式手記[未登錄](méi) 2013-08-19 14:08

          請(qǐng)問(wèn)剛進(jìn)入的彈出窗口是在哪里修改的?且第二次進(jìn)去不再出現(xiàn)。謝謝  回復(fù)  更多評(píng)論   

          # re: 微信5.0 Android版飛機(jī)大戰(zhàn)破解無(wú)敵模式手記 2013-08-19 19:49 an0nym0us

          實(shí)在忍不了,這文章實(shí)在寫(xiě)的有點(diǎn)太那啥裝13了,我決定繼續(xù)來(lái)噴你。

          不說(shuō)打飛機(jī)的破解過(guò)程,我只是想問(wèn)一下,為毛要用ROOT+寫(xiě)system image來(lái)達(dá)成你所謂的那個(gè)“漏洞”?為了繞過(guò)微信的簽名驗(yàn)證?你丫都直接改微信apk代碼饒簽名驗(yàn)證了,直接重打包一份即可,裝什么13用ROOT+寫(xiě)system image呢。

          想修改任意修改apk邏輯,重打包即可,不需要root不需要system可寫(xiě),你為毛要用什么所謂的漏洞裝13呢?為毛呢?為毛呢?

          另外,你對(duì)微信簽名驗(yàn)證的分析完全是錯(cuò)的。  回復(fù)  更多評(píng)論   

          # re: 微信5.0 Android版飛機(jī)大戰(zhàn)破解無(wú)敵模式手記[未登錄](méi) 2013-08-20 09:16 ddd

          修改好運(yùn)行游戲 結(jié)束后在本機(jī)的好友圈能顯示高分 但是在好友的排行版中還是原來(lái)的分?jǐn)?shù)
            回復(fù)  更多評(píng)論   

          # re: 微信5.0 Android版飛機(jī)大戰(zhàn)破解無(wú)敵模式手記 2013-08-20 14:22 zh.weir

          @an0nym0us

          文章末尾我有做補(bǔ)充說(shuō)明。早期的微信5.0版本是不行的。

          要不然你以為那么多人都做不出來(lái)嗎?如果不信,你可以下一個(gè)beta3版本和微信5.0的第一個(gè)正式版試試。  回復(fù)  更多評(píng)論   

          # re: 微信5.0 Android版飛機(jī)大戰(zhàn)破解無(wú)敵模式手記 2013-08-20 23:41 111111111111

          死不了,沒(méi)分?jǐn)?shù)記錄怎么辦?  回復(fù)  更多評(píng)論   

          # re: 微信5.0 Android版飛機(jī)大戰(zhàn)破解無(wú)敵模式手記 2013-08-21 20:24 zh.weir

          @111111111111

          將飛機(jī)拖到屏幕上方結(jié)束游戲。  回復(fù)  更多評(píng)論   

          # re: 微信5.0 Android版飛機(jī)大戰(zhàn)破解無(wú)敵模式手記 2013-08-21 22:42 測(cè)試

          按住加好友的功能怎么沒(méi)了?  回復(fù)  更多評(píng)論   

          # re: 微信5.0 Android版飛機(jī)大戰(zhàn)破解無(wú)敵模式手記 2013-08-22 12:37 搞起

          求apk405029805@qq.com
            回復(fù)  更多評(píng)論   

          # re: 微信5.0 Android版飛機(jī)大戰(zhàn)破解無(wú)敵模式手記 2013-08-22 20:21 體驗(yàn)者

          打的分?jǐn)?shù)排行榜都沒(méi)有記錄。自己的有 好友的沒(méi)有。怎么回事。還有就是有的機(jī)器安裝不了提示程序?yàn)榘惭b  回復(fù)  更多評(píng)論   

          # re: 微信5.0 Android版飛機(jī)大戰(zhàn)破解無(wú)敵模式手記 2013-08-23 09:11 荒野無(wú)燈

          原來(lái)博客在這~~
          感謝分享。(看雪過(guò)來(lái)的)  回復(fù)  更多評(píng)論   

          # re: 微信5.0 Android版飛機(jī)大戰(zhàn)破解無(wú)敵模式手記 2013-08-23 15:01 boen

          @體驗(yàn)者
          可能是 有服務(wù)端驗(yàn)證?  回復(fù)  更多評(píng)論   

          # re: 微信5.0 Android版飛機(jī)大戰(zhàn)破解無(wú)敵模式手記 2013-08-23 17:29 搞搞

          大神,你是不是漏打包什么了,裝完只有33MB多一點(diǎn),目前發(fā)現(xiàn)“視頻聊天”功能不能用,點(diǎn)“視頻聊天”連菜單都木有了。。。  回復(fù)  更多評(píng)論   

          # re: 微信5.0 Android版飛機(jī)大戰(zhàn)破解無(wú)敵模式手記 2013-08-24 01:49 呱呱叫

          “微信處理插件加載的代碼在com.tencent.mm.compatible.loader包中” 請(qǐng)問(wèn)這個(gè)包是在微博apk 當(dāng)中嗎 ? 怎么沒(méi)找到  回復(fù)  更多評(píng)論   

          # re: 微信5.0 Android版飛機(jī)大戰(zhàn)破解無(wú)敵模式手記 2013-08-25 16:19 DDHHTT

          請(qǐng)問(wèn)安裝APK以后該怎么死  回復(fù)  更多評(píng)論   

          # re: 微信5.0 Android版飛機(jī)大戰(zhàn)破解無(wú)敵模式手記 2013-08-29 11:08 色盲

          大神有時(shí)間把愛(ài)消除和連萌也修改一下吧?把時(shí)間改長(zhǎng),道具改成無(wú)限使用  回復(fù)  更多評(píng)論   

          # re: 微信5.0 Android版飛機(jī)大戰(zhàn)破解無(wú)敵模式手記 2013-08-30 10:46 xier

          求教無(wú)敵模式怎樣能結(jié)束游戲,并且能算分的?  回復(fù)  更多評(píng)論   

          # re: 微信5.0 Android版飛機(jī)大戰(zhàn)破解無(wú)敵模式手記 2013-09-02 13:52 小寅狼星

          我沒(méi)有修改jar文件,只是替換了shoot文件夾里的shoot圖片(就是各種飛機(jī)的貼圖),但是回編譯失敗了。然后發(fā)現(xiàn)就算不修改回編譯也是失敗。為什么呢?難道圖片也要加MD5碼?  回復(fù)  更多評(píng)論   

          # re: 微信5.0 Android版飛機(jī)大戰(zhàn)破解無(wú)敵模式手記 2013-09-05 14:19 李啊啊

          高手啊,成功了,要?jiǎng)h原來(lái)的微信在安裝就可以了  回復(fù)  更多評(píng)論   

          # re: 微信5.0 Android版飛機(jī)大戰(zhàn)破解無(wú)敵模式手記 2013-09-09 18:26 我呀

          怎么樣算分呀  回復(fù)  更多評(píng)論   

          # re: 微信5.0 Android版飛機(jī)大戰(zhàn)破解無(wú)敵模式手記 2013-09-15 11:07 ddwl5858

          打完分?jǐn)?shù)保存不了啊  回復(fù)  更多評(píng)論   

          # re: 微信5.0 Android版飛機(jī)大戰(zhàn)破解無(wú)敵模式手記 2013-09-20 13:00 愛(ài)老虎油

          厲害,支持!!!  回復(fù)  更多評(píng)論   

          # re: 微信5.0 Android版飛機(jī)大戰(zhàn)破解無(wú)敵模式手記[未登錄](méi) 2013-09-20 13:58 張杰

          好厲害、繼續(xù)支持  回復(fù)  更多評(píng)論   

          # re: 微信5.0 Android版飛機(jī)大戰(zhàn)破解無(wú)敵模式手記 2013-09-23 12:14 焦文亮

          加油打飛機(jī)  回復(fù)  更多評(píng)論   

          # re: 微信5.0 Android版飛機(jī)大戰(zhàn)破解無(wú)敵模式手記 2013-09-23 12:15 焦文亮

          我要超過(guò)她們  回復(fù)  更多評(píng)論   

          # re: 微信5.0 Android版飛機(jī)大戰(zhàn)破解無(wú)敵模式手記 2013-10-25 14:55 kedongjun

          非常膜拜樓主!!我想問(wèn),樓主你怎么知道那些方法的呢?比如你怎么知道那個(gè)方法是雙子彈的,哪個(gè)方法是無(wú)限炸彈的?等等。。跪求真相   回復(fù)  更多評(píng)論   

          # re: 微信5.0 Android版飛機(jī)大戰(zhàn)破解無(wú)敵模式手記 2013-10-30 20:57 zh.weir

          @kedongjun

          直接讀反編譯后的代碼啊。  回復(fù)  更多評(píng)論   

          公告

          大家好!歡迎光臨我的 Android 技術(shù)博客!



          本博客旨在交流與 Android 操作系統(tǒng)相關(guān)的各種技術(shù)及信息。

          博客內(nèi)的文章會(huì)盡量以開(kāi)源的形式提供給大家,希望我們能相互交流,共同提高!

          有不足之處,請(qǐng)不吝賜教!

          我的郵箱:zh.weir@gmail.com
          我的新浪微博:@囧虎張建偉

           

          導(dǎo)航

          <2013年8月>
          28293031123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

          統(tǒng)計(jì)

          留言簿(19)

          隨筆分類(24)

          隨筆檔案(18)

          文章檔案(1)

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 玉溪市| 翁牛特旗| 武宣县| 泸溪县| 京山县| 扎鲁特旗| 西华县| 凉城县| 新津县| 营山县| 克什克腾旗| 东丽区| 秀山| 灵寿县| 宜兰市| 阿勒泰市| 阿拉尔市| 都兰县| 宜都市| 新余市| 兴城市| 宜兰县| 滨州市| 新民市| 轮台县| 武定县| 抚松县| 临泽县| 孙吴县| 米林县| 闻喜县| 新化县| 阿克苏市| 西平县| 攀枝花市| 宽城| 清苑县| 神池县| 施甸县| 柏乡县| 阳原县|