Skip to content

MrXiaoM/Eden

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

36 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

伊甸 Eden

未来框架版本信息自动提取工具。

声明

本项目仅作学习参考,探究低配置计算机反编译大尺寸安卓程序以及自动分析的可行性,请在下载后24小时内删除。
禁止将该项目用于任何非法、违反道德的用途,本项目作者将不对使用本程序的任意部分产生的后果负责。使用本项目的源代码、发布的二进制文件等即代表你同意以上条款,并自愿承担所产生的后果。

需求

  • Java 8
  • .NET Core 6.0 Runtime
  • 至少 2GB 空闲运行内存
  • 至少 4GB 空闲存储空间

本程序使用的反编译策略为,将所有 classes.dex 依次转换为 jar 再合并。此方法在一定程度上可减少运行内存占用,避免反编译过程中出现 OOM。缺点是转换的总过程在作者的计算机上 (i5-5300U) 大约需要半小时来完成对某大型APP的转换,反编译更是花上了数小时。但这使得这个过程成为了可能,若直接转换整个安装包的 dex 为 jar,在低配置的计算机上很可能会出现 OOM。

本程序会在 dex2jar 转换结果中选择特定的类进行分析,寻找相关信息以生成协议信息。

在对某大型 APP 进行过完整分析后,本程序可以使用极短的时间,定点分析抽离 APK 中我们所需的参数并输出,而不需要整个 APK 反编译耗费这么长时间,在作者的计算机中只需使用大约10秒时间就可以将所需的 class 文件从 dex 中导出。

CLI 使用方法

安装运行环境: https://learn.microsoft.com/zh-cn/dotnet/core/install/linux

运行

dotnet Eden.CLI.dll 参数

可用参数

  --working-dir          Eden 工作路径
  --eden-apk             Eden.apk 路径,要相对于工作路径
  --fast-dex             (Default: true) 是否使用快速解包方法
  --output-override      输出文件夹(out/版本号/)路径重写
  --config-override      文件 config.json 输出路径重写,会覆盖 output-override
  --dtconfig-override    文件 dtconfig.json 输出路径重写,会覆盖 output-override
  --pad-override         文件 android_pad.json 输出路径重写,会覆盖 output-override
  --phone-override       文件 android_phone.json 输出路径重写,会覆盖 output-override
  --from-manifest        (Default: true) 是否从 AndroidManifest.xml 读取协议 app id
  --start-pos            (Default: 0) 起始步骤,0=解压APK,1=解包Dex,2=反编译class,3=分析代码
  --help                 Display this help screen.
  --version              Display version information.

示例如下

mkdir -r protocol-versions/android_phone protocol-versions/android_pad
dotnet Eden.CLI.dll --working-dir v9065 --eden-apk Android_9.0.65_64.apk --phone-override protocol-versions/android_phone/9.0.65.json --pad-override protocol-versions/android_pad/9.0.65.json

构建

请阅读 files 文件夹内的说明。

鸣谢