java - 试图对我的应用程序进行反向工程,但是得到了一些看起来很奇怪的文件树

原文 标签 java android reverse-engineering dex

我从去年构建的所有应用程序中丢失了代码(对我的硬盘大雷雨,没有任何应用程序的备份)。由于它们是相当简单的应用程序,因此我将它们置于反向工程过程中。过去,我已经完成了数十次,每次我都没有任何问题(如果我们不计算将所有文件放到一个项目中的工作量)。我已经完成了3个在硬盘烧坏期间丢失的应用程序。他们几乎完美无缺地被扭转了,但是我被这个困住了。

让我们详细介绍。逆向工程过程进展顺利。我能够从APK提取的编码XML文件中获取XML代码。我还能够从classes.dex成功反编译Java代码。我可以读取所有文件,然后可以通过文本编辑器打开/查看。

但是我得到了一个看起来很奇怪的文件结构和奇怪的文件名。项目文件位于常规路径src/com/mycompanyname/appname中。经过RI处理后,一些文件保留在主路径中(R.java,第三方广告文件和其他一些文件),而所有其他文件都重新命名为以下文件结构:

一个java
b.java
c.java
...
z.java

我写的所有文件都被重命名并获得了这些怪异的名称,而所有第3方文件都保持不变。

问:谁能告诉我这可能是什么原因?

问:Eclipse是否在将其编译为APK之前以某种方式混淆了代码?经过IR处理后,经过混淆的APK是这样吗?

我真的希望有人能够为我提供帮助,因为我仍然需要重建10多个其他应用程序。它

最佳答案

Android SDK包含Proguard,用于混淆您的代码。当您使用ADT在Eclipse中创建Android项目时,默认情况下会启用Proguard。您可以将其关闭。在此处http://developer.android.com/guide/developing/tools/proguard.html了解更多信息

所以...


  问:谁能告诉我这可能是什么原因?


这是Proguard的工作。


  问:Eclipse是否在将代码编译成某种形式之前对其进行了混淆?
  APK?这是经过处理后的混淆APK的样子吗
  IR过程?


本身不是Eclipse,而是在构建过程中调用的Proguard。是的,这就是它的样子。

相关文章:

java - 在Java应用程序中处理版本号的好方法是什么?

android - 使用新语法应用Android Gradle插件

java - 将文件从Dropbox下载到本地android Java

android - Android:仅当我立即启动App时,Boot Complete才有效

android - 有没有办法在没有源代码的情况下替换APK中的库

java - 如何将Vector更改为Array或ArrayList?

java - Spring Boot APP部署到外部tomcat

mysql - 如何以编程方式确定表之间的MySQL关系类型(1:1、1:n,n:m)?

java - 列出<Object>和List <?>

c - 逆向工程-使用调试信息进行编译