2014-11-21 53 views
1

我有一個apk文件。我使用dex2jar工具將其轉換爲jar文件以獲取jar文件。我用java反編譯器打開jar文件。在代碼(mainactivity.java)有一段代碼,像如何訪問資源(R.class)後apk到jar轉換

ContentValues localContentValues = new ContentValues(); 
localContentValues.put("title", "testtesttest"); 
localContentValues.put("url", getApplicationContext().getString(2131034115)); 
localContentValues.put("bookmark", Integer.valueOf(1)); 
getContentResolver().insert(Browser.BOOKMARKS_URI, localContentValues); 

什麼,這實際上意味着,我該如何獲得getApplicationContext與Java反編譯器的實際值()。的getString(2131034115)。反編譯後沒有諸如.xml之類的資源文件。 R.java包含如下信息:

public static final class string 
    { 
    public static final int action_settings = 2131034114; 
    public static final int app_name = 2131034112; 
    public static final int baseurl = 2131034115; 
    public static final int hello_world = 2131034113; 
    } 

baseurl的實際字符串值是什麼?

回答

1

有這取決於你想完成什麼,你可能需要在這裏兩條路徑:

你已經採取即反編譯的Dalvik字節碼(DEX)成可讀的Java源代碼的一個。下一步是使用jd-gui。生成的源代碼可用於閱讀和理解應用程序的功能,但很可能不會生成100%可用的代碼。換句話說,你可以閱讀源代碼,但是你不能真正修改和重新打包它。請注意,如果源代碼已被proguard混淆,則生成的源代碼將更難以解決。

另一個主要的替代方案是將字節碼拆分爲smali,這是一種專爲此目的而設計的彙編語言。我發現最簡單的方法是使用apktool。一旦你安裝了apktool,你可以將它指向一個apk文件,並且你會爲應用程序中包含的每個類取回一個smali文件。您可以閱讀和修改smali,甚至可以通過從新的Java源代碼生成smali來完全替換類(爲此,您可以使用javac將.java源代碼編譯爲.class文件,然後使用Android的代碼將.class文件轉換爲.dex文件。 dx編譯器,然後使用baksmali(smali反彙編程序)將.dex轉換爲.smali文件,如this question中所述。這裏可能有一個快捷方式)。一旦你完成了,你可以很容易地使用apktool重新打包apk。請注意,apktool不會簽署生成的apk,因此您需要注意just like any other Android application

簡而言之,您的選擇幾乎或者是反編譯爲Java,它更易讀,但可能不可逆,或者反編譯爲smali,這很難閱讀,但更靈活,可以更改和重新打包修改的應用程序。你選擇哪種方法取決於你想要達到的目標。

+1

事實上,我不想使用代碼或調試它..我只是想獲得一個可讀的代碼,我實現了這一點。用這個可讀代碼,我想獲得一個鏈接,它是arrayOfString [0] =(getApplicationContext()。getString(2131034115)+ str5 + str6 +(String)localObject2 + str7)的結果。這條線。我有每個字符串變量,但不是getApplicationContext()。getString(2131034115)。我想我需要訪問這個資源2131034115,可能是一個靜態字符串分配給它。但我無法訪問它。 – 2014-11-21 14:29:39

2

使用APKTOOL

去哪裏反編譯的文件生成的輸出文件夾反編譯後,

這個文件夾裏,打開./res/values/public.xml文件。在文件內部,您將以字符串格式獲取所有資源十六進制代碼及其ID。

謝謝。

+0

歡迎使用Stackoveflow。您是否介意擴展您的答案,讓其他程序員瞭解它是如何幫助解決問題的。 – Daenarys 2015-10-26 13:14:20