2014-11-21 73 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