Mozilla Public License 2.0

项目介绍

Xpl0itR/protodec 是一个托管在 GitHub 上的开源项目,主要使用 C# 编写,采用 Mozilla Public License 2.0 许可证,目前获得 81 个 Star、11 次 Fork。

仓库全名
Xpl0itR/protodec
开源许可证
Mozilla Public License 2.0
Star 数
81
Fork 数
11
未关闭 Issue
4

README 摘要

protodec ======== A tool to derive Protobuf schemas from protoc output formats. Usage See per-command help message for more info. Limitations Integers are assumed to be (u)int32/64 as CIL doesn't differentiate between them and sint32/64 and (s)fixed32/64. Package names are not preserved in protobuf compilation so naturally we cannot recover them during decompilation, which may result in naming conflicts. When…

完整内容见 GitHub 原始 README 或本页 。

常见问题

protodec 用什么语言开发?

主要使用 C# 编写,采用 Mozilla Public License 2.0 许可证,目前有 81 个 Star。

protodec 可以免费商用吗?

仓库标注的许可证为 Mozilla Public License 2.0,商用前请先阅读仓库 LICENSE 文件确认授权范围。

如何获取 protodec 的源码?

可以直接克隆仓库:git clone https://github.com/Xpl0itR/protodec.git,默认分支为 master;安装与运行步骤见仓库 README。

protodec 最近还在维护吗?

仓库最近一次更新为 7月26日,当前有 4 个未关闭 Issue;Star 数为 81,可作为社区活跃度的参考。

关于

A tool to derive Protobuf schemas from protoc output formats

描述取自 GitHub 官方 API,中文内容由 GitRead 中文社区 编辑团队整理。

语言占比

C#

Release

贡献者

README

protodec

A tool to derive Protobuf schemas from protoc output formats.

Usage

Usage: [command] [arguments...] [options...] [-h|--help] [--version]

Derive Protobuf schemas by reflecting target CIL assembly and its dependencies to parse classes generated by protoc with the "csharp_out" option.

Arguments:
  [0] <string>    Either the path to the target assembly or a directory of assemblies, all of which be loaded for reflection.
  [1] <string>    An existing directory to output into individual files, otherwise output to a single file.

Options:
  --target-assembly-name <string?>                              Override/Specify the name of the assembly to parse. [Default: null]
  --parse-service-servers                                       Parses gRPC service definitions from server classes.
  --parse-service-clients                                       Parses gRPC service definitions from client classes.
  --skip-enums                                                  Skip parsing enums and replace references to them with int32.
  --include-properties-without-non-user-code-attribute          Includes properties that aren't decorated with `DebuggerNonUserCode` when parsing.
  --include-service-methods-without-generated-code-attribute    Includes methods that aren't decorated with `GeneratedCode("grpc_csharp_plugin")` when parsing gRPC services.
  --require-generated-code-attribute-for-properties             Requires properties to be decorated with `GeneratedCode("protoc")` to be parsed.
  --log-level <LogLevel>                                        Logging severity level. [Default: Information]

Commands:
  il2cpp    Derive Protobuf schemas by reflecting target IL2CPP compiled assembly to parse classes generated by protoc with the "csharp_out" option.

See per-command help message for more info.

Limitations

  • Integers are assumed to be (u)int32/64 as CIL doesn’t differentiate between them and sint32/64 and (s)fixed32/64.
  • Package names are not preserved in protobuf compilation so naturally we cannot recover them during decompilation, which may result in naming conflicts.
  • When decompiling from Il2CppDumper DummyDLLs or from an IL2CPP assembly older than metadata version 29, due to the development branch of LibCpp2Il not yet recovering method bodies
    • The Name parameter of OriginalNameAttribute is not parsed. In this case, the CIL enum field names are used after conforming them to protobuf conventions.
    • The Tool parameter of GeneratedCodeAttribute is not compared against when parsing gRPC service methods, which may cause false positives in the event that another tool has generated methods in the service class.

Building

Essentially just replicate the CI instructions.

License

This project is subject to the terms of the Mozilla Public License, v. 2.0.

评论

暂无评论