逆向工程Android应用程序(带源代码)

时间:2012-11-13 19:06:34

标签: android view adapter reverse-engineering

查看现有的Android应用程序,我有完整的源代码,我想知道如何确定哪个适配器在运行的应用程序中处理来自UI的特定屏幕的事件。

有许多布局(XML)文件和一大堆(数量极低)的适配器。到目前为止,猜测,重写和设置调试点并没有引导我使用适配器。 (坦率地说,我不确定我甚至可以为屏幕找到正确的布局文件我正在努力工作!)

我非常熟悉Web开发和PHP,并且给定了一个应用程序,有很多方法可以找到进入“控制器”代码的方法。也非常了解Java,并且到目前为止已经为应用程序制作了mod,但现在已经卡住......有人可以指点反向工程Android应用吗?

3 个答案:

答案 0 :(得分:2)

上次我这样做是在一年前,当Android安全性很糟糕时(而不是很多程序),所以我使用了eclipse反编译器和dex2jar。其实我很惊讶 - 你怎么能得到完整的代码?

使用eclipse的好处是你可以回溯调用者的功能。

事情是 - 我不认为你是在适配器之后。如果屏幕是一个列表,你实际上是在ListView(包含适配器)之后。也许适配器甚至可能包含对listview本身的引用。所以,尝试找到视图而不是适配器

如果它是一个listView,那么,实际上,在其中查找名为“xxxx_row.xml”的东西,其中包含单词“row”,因为这是listview视图的标准约定。

答案 1 :(得分:2)

这适用于大多数Android应用。

通常,每个屏幕都是由Activity类的实例构建的。

  • 检查项目根目录中的AndroidManifest.xml。查找包含这样的intent过滤器的活动声明:

        <intent-filter>
            <action android:name="android.intent.action.MAIN"/>
            <category android:name="android.intent.category.LAUNCHER"/>
        </intent-filter>
    
    </activity>
    

这是应用程序的“入口”点,不是严格正确但足够接近此任务。实际上,Android会创建Application类的内部单例实例,可能会扩展但通常不会。 Grep for“extends Application”或“:Application”知道。

  • 查找与活动名称同名的类文件,在本例中为SampleAppMainActivity.

  • 打开此类文件并找到onCreate()。这是Android在实例化活动时调用的第一种方法。

  • 查找setContentView()。它将引用一个布局,可以在res / layout或其中的子文件夹中找到,就像这样。 R.layout.sampleappmainlayout。文件本身就是XML。此文件定义活动屏幕中使用的UI元素(它可能包括合并其他布局)。

  • 如果有多个活动,请在此活动中查找Intent类的实例的创建,通常附加到按钮或菜单点击监听器。

从第2步开始递归:)

其他答案涉及适配器的细节。或许不是吗? Android使用适配器来处理数据检索并将这些数据绑定到UI元素。他们不“回应UI事件”。您是在询问MVC模型中的视图控制器吗?

祝你好运。

P.S。无论您的客户支付给您什么,这还不够。我猜你是如何登陆这场演出的,但是这样。就是这样。

答案 2 :(得分:-1)

操作系统Windows的说明:

  1. 下载 dex2jar-0.0.7.10-SNAPSHOT.zip (版本可能不同)并将其解压缩到文件夹D:\ Decompile。
  2. 下载 Java Decompiler ,即 JD-GUI 并解压缩到同一文件夹。
  3. 下载 apktool1.4.1.tar.bz2 apktool-install-windows-r04-brut1.tar.bz2 并解压缩到系统文件夹即C:\ Windows
  4. 例如,我们的应用程序名为Calculator.apk,使用 Java Decompiler dex2jar
  5. 将其移至文件夹
  6. 打开命令行工具C:\ Windows \ System32 \ cmd.exe
  7. 将dirrectory更改为 dex2jar 所在的文件夹,输入命令dex2jar Calculator.apk,如果在同一文件夹中显示所有成功文件 Calculator.apk.dex2jar.jar < / LI>
  8. 打开jd-gui并打开上一步的文件。
  9. 选择File-Save All Sources并保存文件。
  10. 提取生成的zip存档。
  11. 将生成的文件夹放入文件夹src(必须预先创建)。 (绕过这个结构是D:\ Decompile \ Calculator \ src \ com \ android)。
  12. 再次,在命令行输入命令apktool d Calculator.apk Calculator,其中Calculator.apk包名称,Calculator-文件夹进行反编译。
  13. 如果一切顺利,那么在文件夹中将是两种格式的源(java和smali),资源和文件AndroidManifest.xml,apktool.yml。