繁体   English   中英

逆向工程安卓应用(附源码)

[英]Reverse Engineering Android Application (with source)

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

有许多布局 (XML) 文件和少量(数量明显减少)的适配器。 到目前为止,猜测、grepping 和设置调试点还没有让我找到有问题的适配器。 (坦率地说,我不确定我什至可以为我正在尝试处理的屏幕找到正确的布局文件!)

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

我上次这样做是在一年前,当时 Android 安全性很差(而且没有很多 proguard),所以我使用了 Eclipse 反编译器和 dex2jar。 实际上我很惊讶 - 你是如何获得完整代码的?

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

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

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

这适用于大多数 Android 应用程序。

一般来说,每个屏幕都是由 Activity 类的一个实例构建的。

  • 检查项目根目录中的 AndroidManifest.xml。 查找包含如下意图过滤器的活动声明:

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

这是应用程序的“入口”点,并非严格正确,但足够接近此任务。 事实上,Android 创建了一个 Application 类的内部单例实例,它可能会被扩展,但通常不会。 Grep 用于“扩展应用程序”或“:应用程序”以了解。

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

  • 打开这个类文件,找到onCreate()。 这是 Android 在实例化 Activity 时调用的第一个方法。

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

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

从第 2 步递归:)

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

祝你好运。

PS 无论你的客户付给你什么钱,这还不够。 我能猜到你是怎么得到这个演出的,但是你太棒了。 只是你。

操作系统 Windows 的说明:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM