2011-06-01

一步步深入smali,完美去廣告

一:之前的準備工作:
1:檢測是否有安裝java環境,沒有的話去下載安裝jdk1.6以上版本
下載地址http://www.oracle.com/technetwork/java/javase/downloads/index.html
2:android SDK環境
下載地址:http://dl.google.com/android/android-sdk_r08-windows.zip
3:常用的APK反編譯工具,見附件
4:學習常用Dalvik指令集,地址:http://pallergabor.uw.hu/androidblog/dalvik_opcodes.html

以下是我的文檔結構(記住這個結構,以下的過程都會基於此結構):
d:\android
d:\android\sdk---sdk所在目錄
d:\android\crack---破解反編譯工具所在目錄
d:\android\crack\apktool---apktool目錄
d:\android\crack\auto-sign---簽名工具

sdk包下載後,解壓得到如下結構:
D:\android\sdk\add-ons
D:\android\sdk\platforms
D:\android\sdk\platform-tools
D:\android\sdk\tools
D:\android\sdk\SDK Manager.exe

運行SDK Manager.exe,在彈出的窗口中找到:Avaliable packages,右側展開:Android Respository
在裡面找到:SDK Platform Android 2.2,API 8,revision 2(安裝2.2版的虛擬機)

接下來會下載安裝,時間可能會長點,耐心等

接下來需要設幾個系統環境變量
XP:我的電腦-〉右鍵-〉屬性-〉高級-〉環境變量
Win7:計算機-〉右鍵-〉屬性-〉高級系統設置-〉環境變量
在彈出的窗口中點擊:新建
按以下值填寫
變量名:ANDROID_SDK_HOME
變量值:D:\android\sdk (看你自己的目錄而定)
接著在系統變量的框裡下滾找到:Path
雙擊打開
在最後面加入值 ;D:\android\sdk\tools\(注意前面的分號,目錄按你自己目錄而定)
點擊確定,關閉窗口,重啟電腦

打開 /sdk/tools/目錄,雙擊android.bat,在彈出的窗口中,選擇:Virtual devices
點擊右側的:New 新建虛擬機
輸入虛擬機的名稱,Target中選擇要使用的系統版本,SD Card的Size那裡填SD卡的大小,通常填128就成
然後點擊下面的 Create AVD 創建
回到剛才的界面,列表中列出了剛新建的虛擬機,雙擊打開虛擬機
等很長時間虛擬機啟動

反編譯工具:
遊戲原文件:


二:去除遊戲Zoo Trip中的廣告,完美去廣告是指刪掉程序中一切跟廣告調用相關的類,方法,視圖
將apk文件拷貝到 d:\android\crack\apktool 目錄下,為方便操作,重命名為a.apk
打開cmd窗口
輸入: 
cd d:\android\crack\apktool
d:
輸入:adb devices
檢測虛擬設備是否連上,正常的會返回:emulator-5554   device 類似信息
輸入:adb install a.apk
在虛擬設備上安裝原apk文件,並運行查看效果,先玩一通,看下廣告都在哪
廣告總共出現在四處:

第一處:程序啟動界面

第二處:遊戲結束界面(此處有兩個廣告,中間的那個大的對話框樣的為非google廣告)

第三處:分數提交界面

第四處:更多遊戲界面

接下來我們來看apk文件的內部
輸入:apktool d a.apk
反編譯apk文件,得到目錄a
輸入:apktool b a
看文件能否順利編譯回去。

一切正常後,打開 a\build\apk 把裡面的classes.dex拷貝到:d:\android\crack\dex 目錄下,將文件拖動到dex2jar.bat上面,將自動轉成jar文件,然後運行jd-gui.exe,打開剛剛生成的classes.dex.dex2jar.jar,然後會看到對應的java代碼,這種方式查看到的代碼並不是完整的源碼,有很多的出入,僅供參考。




via: 一步步深入 smali

1 則留言:

Wolf_Lin 提到...

Andriod SDK Tools的載點掛了..
可以修復一下嗎...