Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/mrxiaom/eden
伊甸 | 未来版本提取器
https://github.com/mrxiaom/eden
apk-decompiler csharp decompiler go-cqhttp mirai study-project wpf-application
Last synced: 12 days ago
JSON representation
伊甸 | 未来版本提取器
- Host: GitHub
- URL: https://github.com/mrxiaom/eden
- Owner: MrXiaoM
- License: agpl-3.0
- Created: 2023-10-29T10:20:13.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2023-11-07T16:26:09.000Z (about 1 year ago)
- Last Synced: 2024-10-03T15:23:39.435Z (about 1 month ago)
- Topics: apk-decompiler, csharp, decompiler, go-cqhttp, mirai, study-project, wpf-application
- Language: C#
- Homepage:
- Size: 274 KB
- Stars: 75
- Watchers: 1
- Forks: 19
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# 伊甸 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
运行
```shell
dotnet Eden.CLI.dll 参数
```
可用参数
```shell
--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.
```
示例如下
```shell
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 文件夹内的说明。
## 鸣谢
* [pxb1988/dex2jar](https://github.com/pxb1988/dex2jar) 提供dex转jar方法 - Apache-2.0 License
* [mstrobel/procyon](https://github.com/mstrobel/procyon) 提供反编译工具 - Apache-2.0 License
* [googlecode/android4me](https://code.google.com/archive/p/android4me) 提供安卓XML解密方法 - Apache-2.0 License