apk反編譯與破解


前段時間項目上線,單機游戲,想着肯定是會被破解的,但沒想到,分分鍾就被破了,游戲數據也是相當的差,於是閑暇時,也自己研究下安卓的破解。

個人觀點(裝一下X):所謂反編譯和破解付費等都只應用於學習交流,發布出去,就有點太不尊重他人勞動成果了。

 

使用工具:(當然首先得配好java環境,這是廢話)

  apktool : 資源文件獲取,可以提取出圖片文件和布局文件

  dex2jar :   得到java源碼(將classes.dex 轉化為jar 文件)

  jd-gui  :   查看轉化得到的jar文件的源碼

 

一、 解包,打包

  命令行,輸入 java   -jar apktool.jar d  -f test.apk  (此處我用的apktool為最新版本)

  此時可以看到解包出的文件,smali 就是java代碼了,當然里這里是smali代碼,類似於匯編,但需要修改原本的代碼的話,還得去改它。

 

  改好后,只需要 java -jar apktool.jar -b  test  

  其中test 為我們剛剛解包的文件夾名,就可以得到重新打包的apk了,位於dist文件夾下。

  當然此時的apk是不帶簽名的。需要安裝得自己再對apk進行簽名,相關工具也挺多的。

 

二、得到java源碼

  自行解壓原apk文件,得到其中的classes.dex 文件

  運行命令 d2j-dex2jar.bat classes.dex  (這里我用的是最新版的dex2jar-2.0版本,以前版本bat可能名字有點不一樣)

將在 d2j-dex2jar.bat  目錄下得到 classes-dex2jar.jar 文件

  然后再用jd_gui工具打開這個jar文件就可以看到java源代碼了,但可以很多apk進行混淆以后,代碼后變得很難閱讀。

 

  很多沒有做過多防護的游戲,很可能就這樣就可以簡單看到代碼了。這樣豈不是所有人都在裸奔了,事實當然不可能這樣子。通過加密,可以做到讓你得不到所有的smali和java源碼。可以參考下面這篇文章對app加密

參考:http://blog.csdn.net/chengyingzhilian/article/details/38372601

 

  但個人認為,網絡游戲本身肯定是不會有什么問題,但單機游戲,短代支付這種,付費文件都是在本地,沒有二次驗證的付費,即使所有地方都加密了,替掉計費文件不就一樣算是破解了嗎?

 

 

以下為smali的基礎語法

.field private isFlag:z  定義變量

.method  方法

.parameter  方法參數

.prologue  方法開始

.line 12  此方法位於第12行

invoke-super  調用父函數

const/high16  v0, 0x7fo3  把0x7fo3賦值給v0

invoke-direct  調用函數

return-void  函數返回void

.end method  函數結束

new-instance  創建實例

iput-object  對象賦值

iget-object  調用對象

invoke-static  調用靜態函數

條件跳轉分支:

"if-eq vA, vB, :cond_**"   如果vA等於vB則跳轉到:cond_**
"if-ne vA, vB, :cond_**"   如果vA不等於vB則跳轉到:cond_**
"if-lt vA, vB, :cond_**"    如果vA小於vB則跳轉到:cond_**
"if-ge vA, vB, :cond_**"   如果vA大於等於vB則跳轉到:cond_**
"if-gt vA, vB, :cond_**"   如果vA大於vB則跳轉到:cond_**
"if-le vA, vB, :cond_**"    如果vA小於等於vB則跳轉到:cond_**
"if-eqz vA, :cond_**"   如果vA等於0則跳轉到:cond_**
"if-nez vA, :cond_**"   如果vA不等於0則跳轉到:cond_**
"if-ltz vA, :cond_**"    如果vA小於0則跳轉到:cond_**
"if-gez vA, :cond_**"   如果vA大於等於0則跳轉到:cond_**
"if-gtz vA, :cond_**"   如果vA大於0則跳轉到:cond_**
"if-lez vA, :cond_**"    如果vA小於等於0則跳轉到:cond_**

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM