reproto 0.0.8__py3-none-any.whl → 0.0.9__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- .git/COMMIT_EDITMSG +14 -1
- .git/FETCH_HEAD +2 -0
- .git/index +0 -0
- .git/logs/HEAD +4 -0
- .git/logs/refs/heads/iyue +4 -0
- .git/logs/refs/remotes/gitlab/iyue +4 -0
- .git/logs/refs/remotes/origin/iyue +4 -0
- .git/objects/29/4708b82b343e04e7a6685f5cd1287f3d17f7a9 +0 -0
- .git/objects/2c/fcddd7eebeb4eee0562dc384a79366bc7b04bb +0 -0
- .git/objects/34/192f0df5f5b694c881d086019eda349608d222 +0 -0
- .git/objects/3e/d953d5ed2c66722045f5e39d068696a0853b4f +0 -0
- .git/objects/44/4af3a0d68ba81976f67c7b638c9b0db4640709 +0 -0
- .git/objects/4b/43f5f577e1cdc35f8e06d178d8f5c892034061 +0 -0
- .git/objects/4c/16984be6ef7b24d01604821e9728cb579acd69 +0 -0
- .git/objects/56/79064a3138031d3a92d60aa629b82009fd0d1d +0 -0
- .git/objects/58/0d8f872aa869e42ba608f64888b1349f8b3ff4 +0 -0
- .git/objects/5a/11f9d70791e06a0570e01d3dcbbae39cde55db +0 -0
- .git/objects/5c/715dcb05e32db7a7a3b030f07524bdd8a56849 +0 -0
- .git/objects/5d/e2e9d536c2c0b78e8f9b3b61daa531a55332dc +0 -0
- .git/objects/66/7291e131d4769e7d028346a0cc7a0c05d500e5 +0 -0
- .git/objects/67/f54a4a3ede6749acc7c718ad97a86634215b5e +0 -0
- .git/objects/70/ded03ee69f30850c938a8129be308cb30772d9 +0 -0
- .git/objects/78/3e7e252c20e73e33615c703174766036546ff6 +3 -0
- .git/objects/94/ce01b61b90d1fb21d2d339fbeb22e821b6f413 +0 -0
- .git/objects/97/71dd4958faa94d3db229c129f6af35b508905a +0 -0
- .git/objects/9e/9978522bc8ca79133d7c11ef8ca3fe3c7eed0a +0 -0
- .git/objects/9f/b57064e0c53ed80af8507acaab718a1e80184e +0 -0
- .git/objects/b3/28dc445ee33220db9359370fc0089a77174101 +0 -0
- .git/objects/b3/d2b3037bede44e7e4d18dc99419f8c712c9c62 +0 -0
- .git/objects/c3/93db4841dbbb8acf54e9af12b6705c9f5ecde9 +0 -0
- .git/objects/c3/c8594874dd9ff9c21662fd06cac9b5baadbba0 +0 -0
- .git/objects/c9/a6ca8f8efee4a5632e9a655ced29f1b708f35e +0 -0
- .git/objects/c9/cdef9ab627b874ffe6455a47583a75bf16496d +0 -0
- .git/objects/df/f8f64cee2b97df7d86f73207c5e690f98f0208 +0 -0
- .git/objects/eb/528f06c622d54e411e9e05b3a200b4ac624a90 +0 -0
- .git/objects/fd/267d9de63212db235135fa6834f62572224fc6 +0 -0
- .git/refs/heads/iyue +1 -1
- .git/refs/remotes/gitlab/iyue +1 -1
- .git/refs/remotes/origin/iyue +1 -1
- .gitignore +4 -1
- ARCHITECTURE.md +146 -48
- README.md +145 -24
- core/bytecode_parser.py +2 -5
- core/info_decoder.py +9 -83
- core/reconstructor.py +91 -211
- generation/proto_generator.py +6 -61
- parsing/java_parser.py +219 -46
- pyproject.toml +1 -1
- reproto-0.0.9.dist-info/METADATA +295 -0
- {reproto-0.0.8.dist-info → reproto-0.0.9.dist-info}/RECORD +53 -22
- utils/type_utils.py +414 -0
- reproto-0.0.8.dist-info/METADATA +0 -174
- {reproto-0.0.8.dist-info → reproto-0.0.9.dist-info}/WHEEL +0 -0
- {reproto-0.0.8.dist-info → reproto-0.0.9.dist-info}/entry_points.txt +0 -0
reproto-0.0.8.dist-info/METADATA
DELETED
@@ -1,174 +0,0 @@
|
|
1
|
-
Metadata-Version: 2.3
|
2
|
-
Name: reproto
|
3
|
-
Version: 0.0.8
|
4
|
-
Summary: 一个强大的逆向工程工具, 能够从任何使用Google Protobuf Lite的Android应用中自动重构出完整的.proto文件结构.
|
5
|
-
License: Proprietary
|
6
|
-
Keywords: protobuf,reverse-engineering,android,jadx,proto
|
7
|
-
Author: iyue
|
8
|
-
Author-email: ys1231@126.com
|
9
|
-
Requires-Python: >=3.12,<4.0
|
10
|
-
Classifier: Development Status :: 4 - Beta
|
11
|
-
Classifier: Intended Audience :: Developers
|
12
|
-
Classifier: License :: Other/Proprietary License
|
13
|
-
Classifier: Programming Language :: Python :: 3
|
14
|
-
Classifier: Programming Language :: Python :: 3.12
|
15
|
-
Classifier: Programming Language :: Python :: 3.13
|
16
|
-
Classifier: Topic :: Software Development :: Code Generators
|
17
|
-
Classifier: Topic :: Software Development :: Disassemblers
|
18
|
-
Requires-Dist: loguru (>=0.7.3)
|
19
|
-
Project-URL: Homepage, https://github.com/ys1231/reproto
|
20
|
-
Project-URL: Repository, https://github.com/ys1231/reproto.git
|
21
|
-
Description-Content-Type: text/markdown
|
22
|
-
|
23
|
-
# Protobuf Reconstructor
|
24
|
-
|
25
|
-
🔧 **从JADX反编译的Java源码自动重构Protobuf .proto文件**
|
26
|
-
|
27
|
-
一个强大的逆向工程工具,能够从任何使用Google Protobuf Lite的Android应用中自动重构出完整的.proto文件结构。
|
28
|
-
|
29
|
-
## ✨ 特性
|
30
|
-
|
31
|
-
- 🎯 **精准解析**: 基于Google Protobuf Lite字节码的逆向工程
|
32
|
-
- 🔄 **递归依赖**: 自动发现和处理所有依赖的消息和枚举类型
|
33
|
-
- 📦 **完整支持**: 支持oneof、repeated、map、枚举等所有Protobuf特性
|
34
|
-
- 🌐 **通用性**: 适用于任何Android应用,无需硬编码映射
|
35
|
-
- 🧠 **智能推断**: 从Java源码直接读取类型信息,确保高准确性
|
36
|
-
- 📝 **标准输出**: 严格遵循Google Proto Style Guide
|
37
|
-
|
38
|
-
## 🛠️ 安装
|
39
|
-
|
40
|
-
```bash
|
41
|
-
# 克隆项目
|
42
|
-
git clone https://github.com/ys1231/reproto.git
|
43
|
-
cd reproto
|
44
|
-
|
45
|
-
# 安装依赖
|
46
|
-
pip install -r requirements.txt
|
47
|
-
```
|
48
|
-
|
49
|
-
## 📖 使用方法
|
50
|
-
|
51
|
-
### 基本用法
|
52
|
-
```bash
|
53
|
-
python main.py <java_sources_dir> <root_class> <output_dir> [--verbose]
|
54
|
-
```
|
55
|
-
|
56
|
-
### 参数说明
|
57
|
-
- `java_sources_dir`: JADX反编译的Java源码目录路径
|
58
|
-
- `root_class`: 要重构的根类完整类名(如:com.example.Model)
|
59
|
-
- `output_dir`: 生成的proto文件输出目录路径
|
60
|
-
- `--verbose`: 显示详细处理信息
|
61
|
-
|
62
|
-
### 示例
|
63
|
-
```bash
|
64
|
-
# 重构消息应用的数据模型
|
65
|
-
python main.py ./out_jadx/sources com.example.messaging.v1.models.MessageData ./protos_generated --verbose
|
66
|
-
|
67
|
-
# 重构内部类
|
68
|
-
python main.py ./out_jadx/sources 'com.truecaller.accountonboarding.v1.Models$Onboarded' ./output --verbose
|
69
|
-
```
|
70
|
-
|
71
|
-
## 🔍 工作原理
|
72
|
-
|
73
|
-
### 核心技术
|
74
|
-
1. **字节码解析**: 逆向工程Google Protobuf Lite的`newMessageInfo`调用
|
75
|
-
2. **依赖发现**: 递归分析Java文件中的类型引用
|
76
|
-
3. **智能推断**: 基于字段名和对象数组推断枚举和消息类型
|
77
|
-
4. **源码分析**: 直接从Java源码读取真实的字段类型声明
|
78
|
-
|
79
|
-
### 解析流程
|
80
|
-
```
|
81
|
-
Java源码 → 字节码提取 → 类型解码 → 依赖发现 → 源码验证 → Proto生成
|
82
|
-
```
|
83
|
-
|
84
|
-
## 📁 项目结构
|
85
|
-
|
86
|
-
```
|
87
|
-
reproto/
|
88
|
-
├── main.py # 主程序入口
|
89
|
-
├── core/ # 核心组件
|
90
|
-
│ ├── reconstructor.py # 主协调器
|
91
|
-
│ └── info_decoder.py # 字节码解码器
|
92
|
-
├── parsing/ # 解析模块
|
93
|
-
│ ├── java_parser.py # Java文件解析器
|
94
|
-
│ └── java_source_analyzer.py # Java源码分析器
|
95
|
-
├── generation/ # 生成模块
|
96
|
-
│ └── proto_generator.py # Proto文件生成器
|
97
|
-
├── models/ # 数据模型
|
98
|
-
└── utils/ # 工具函数
|
99
|
-
```
|
100
|
-
|
101
|
-
## 📊 输出示例
|
102
|
-
|
103
|
-
### 输入:Java源码
|
104
|
-
```java
|
105
|
-
public final class MessageData extends GeneratedMessageLite {
|
106
|
-
public static final int TEXT_MESSAGE_FIELD_NUMBER = 1;
|
107
|
-
public static final int MEDIA_MESSAGE_FIELD_NUMBER = 2;
|
108
|
-
|
109
|
-
private int dataCase_;
|
110
|
-
private Object data_;
|
111
|
-
|
112
|
-
public enum DataCase {
|
113
|
-
TEXT_MESSAGE(1),
|
114
|
-
MEDIA_MESSAGE(2),
|
115
|
-
DATA_NOT_SET(0);
|
116
|
-
}
|
117
|
-
}
|
118
|
-
```
|
119
|
-
|
120
|
-
### 输出:Proto文件
|
121
|
-
```protobuf
|
122
|
-
syntax = "proto3";
|
123
|
-
|
124
|
-
package com.example.messaging.v1.models;
|
125
|
-
|
126
|
-
option java_package = "com.example.messaging.v1.models";
|
127
|
-
option java_multiple_files = true;
|
128
|
-
|
129
|
-
message MessageData {
|
130
|
-
oneof data {
|
131
|
-
TextMessage text_message = 1;
|
132
|
-
MediaMessage media_message = 2;
|
133
|
-
}
|
134
|
-
}
|
135
|
-
```
|
136
|
-
|
137
|
-
## 🚀 工作流程
|
138
|
-
|
139
|
-
1. 使用JADX反编译Android应用:`jadx -d out_jadx app.apk`
|
140
|
-
2. 运行ReProto指定根Protobuf类
|
141
|
-
3. 自动解析所有相关类和依赖
|
142
|
-
4. 生成完整的.proto文件结构
|
143
|
-
|
144
|
-
## 📝 配置选项
|
145
|
-
|
146
|
-
### 日志配置
|
147
|
-
- 日志文件自动保存到 `./logs/` 目录
|
148
|
-
- 文件格式: `reproto-YYYY-MM-DD-HH-MM-SS.log`
|
149
|
-
- 使用 `--verbose` 参数查看详细处理过程
|
150
|
-
|
151
|
-
### 输出格式
|
152
|
-
生成的proto文件遵循Google Protobuf Style Guide:
|
153
|
-
- 文件名:`snake_case.proto`
|
154
|
-
- 字段名:`snake_case`
|
155
|
-
- 消息名:`PascalCase`
|
156
|
-
- 枚举值:`UPPER_SNAKE_CASE`
|
157
|
-
|
158
|
-
## 🔧 开发
|
159
|
-
|
160
|
-
```bash
|
161
|
-
# 使用Poetry管理依赖
|
162
|
-
poetry install
|
163
|
-
poetry shell
|
164
|
-
|
165
|
-
# 运行测试
|
166
|
-
python main.py ../out_jadx/sources 'com.example.TestClass' ../test_output --verbose
|
167
|
-
```
|
168
|
-
|
169
|
-
## 📄 许可证
|
170
|
-
|
171
|
-
本项目为私有项目,仅供授权用户使用。
|
172
|
-
|
173
|
-
---
|
174
|
-
|
File without changes
|
File without changes
|