Skip to main content

il2cpp_dumper/output/
script_json.rs

1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Clone, Serialize, Deserialize)]
4pub struct ScriptMethod {
5    #[serde(rename = "Address")]
6    pub address: u64,
7    #[serde(rename = "Name")]
8    pub name: String,
9    #[serde(rename = "Signature")]
10    pub signature: String,
11    #[serde(rename = "TypeSignature")]
12    pub type_signature: String,
13    #[serde(rename = "DotNetSignature", skip_serializing_if = "Option::is_none")]
14    pub dotnet_signature: Option<String>,
15    #[serde(rename = "Group", skip_serializing_if = "Option::is_none")]
16    pub group: Option<String>,
17}
18
19#[derive(Debug, Clone, Serialize, Deserialize)]
20pub struct ScriptString {
21    #[serde(rename = "Address")]
22    pub address: u64,
23    #[serde(rename = "Value")]
24    pub value: String,
25    #[serde(rename = "Name", skip_serializing_if = "Option::is_none")]
26    pub name: Option<String>,
27}
28
29#[derive(Debug, Clone, Serialize, Deserialize)]
30pub struct ScriptMetadata {
31    #[serde(rename = "Address")]
32    pub address: u64,
33    #[serde(rename = "Name")]
34    pub name: String,
35    #[serde(rename = "Signature", skip_serializing_if = "Option::is_none")]
36    pub signature: Option<String>,
37}
38
39#[derive(Debug, Clone, Serialize, Deserialize)]
40pub struct ScriptMetadataMethod {
41    #[serde(rename = "Address")]
42    pub address: u64,
43    #[serde(rename = "Name")]
44    pub name: String,
45    #[serde(rename = "MethodAddress")]
46    pub method_address: u64,
47}
48
49#[derive(Debug, Clone, Serialize, Deserialize)]
50pub struct ScriptTypeInfo {
51    #[serde(rename = "Address")]
52    pub address: u64,
53    #[serde(rename = "Name")]
54    pub name: String,
55    #[serde(rename = "Type")]
56    pub type_str: String,
57    #[serde(rename = "DotNetType", skip_serializing_if = "Option::is_none")]
58    pub dotnet_type: Option<String>,
59}
60
61#[derive(Debug, Clone, Serialize, Deserialize)]
62pub struct ScriptFieldInfo {
63    #[serde(rename = "Address")]
64    pub address: u64,
65    #[serde(rename = "Name")]
66    pub name: String,
67    #[serde(rename = "Value")]
68    pub value: String,
69}
70
71#[derive(Debug, Clone, Default, Serialize, Deserialize)]
72pub struct ScriptJson {
73    #[serde(rename = "ScriptMethod")]
74    pub script_methods: Vec<ScriptMethod>,
75    #[serde(rename = "ScriptString")]
76    pub script_strings: Vec<ScriptString>,
77    #[serde(rename = "ScriptMetadata")]
78    pub script_metadata: Vec<ScriptMetadata>,
79    #[serde(rename = "ScriptMetadataMethod")]
80    pub script_metadata_methods: Vec<ScriptMetadataMethod>,
81    #[serde(rename = "Addresses")]
82    pub addresses: Vec<u64>,
83    #[serde(rename = "TypeInfoPointers", skip_serializing_if = "Vec::is_empty")]
84    pub type_info_pointers: Vec<ScriptTypeInfo>,
85    #[serde(rename = "TypeRefPointers", skip_serializing_if = "Vec::is_empty")]
86    pub type_ref_pointers: Vec<ScriptTypeInfo>,
87    #[serde(rename = "FieldInfos", skip_serializing_if = "Vec::is_empty")]
88    pub field_infos: Vec<ScriptFieldInfo>,
89    #[serde(rename = "FieldRvas", skip_serializing_if = "Vec::is_empty")]
90    pub field_rvas: Vec<ScriptFieldInfo>,
91}
92
93impl ScriptJson {
94    pub fn new() -> Self {
95        Self::default()
96    }
97
98    pub fn to_json(&self) -> Result<String, serde_json::Error> {
99        serde_json::to_string_pretty(self)
100    }
101}
102
103#[derive(Debug, Clone, Serialize, Deserialize)]
104pub struct StringLiteralEntry {
105    pub index: usize,
106    pub value: String,
107}