-
Notifications
You must be signed in to change notification settings - Fork 13
/
index.html
177 lines (170 loc) · 5.84 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>EaglerForge Injector</title>
<link
href="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css"
rel="stylesheet"
/>
<link
href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.1/css/all.min.css"
rel="stylesheet"
/>
<style>
body {
background-color: #2b2b2b;
color: #ffffff;
overflow-x: hidden;
overflow-y: scroll;
}
.container {
text-align: center;
margin-top: 50px;
}
.github-button-container {
position: absolute;
top: 10px;
right: 10px;
}
.github-button-container a.btn {
color: #ffffff;
border-color: #ffffff;
}
.github-button-container a.btn:hover {
background-color: #ffffff;
color: #000000;
}
#info {
text-align: left;
min-width: 50vw;
}
details {
text-align: left;
padding: 6px;
border-radius: 1rem;
background-color: rgba(0, 0, 0, 0.5);
margin-bottom: 1rem;
}
summary {
background-color: rgba(255, 255, 255, 0.1);
padding: 4px;
border-radius: 0.6rem;
padding-left: 8px;
}
h6 {
font-weight: normal;
}
</style>
</head>
<body>
<div class="container">
<h1>EaglerForge Injector</h1>
<div class="github-button-container">
<a
href="https://github.com/eaglerforge/EaglerForgeInjector"
class="btn btn-default"
target="_blank"
>
<i class="fab fa-github"></i> GitHub
</a>
</div>
<h6>
Adds ModAPI with more functionality (adds hooking into functions,
exposes all classes, etc) to unminified unobfuscated EaglercraftX
offline downloads (web support coming soon).
</h6>
<br />
<div class="custom-file mb-3">
<input
class="custom-file-input"
type="file"
id="htmlFile"
accept=".html,.js"
/>
<label class="custom-file-label" for="htmlFile"
>Choose .html file...</label
>
<br />
<span><label>Minify: </label><input type="checkbox" oninput="globalThis.doShronk = this.checked">
<label>EaglerForge: </label><input checked type="checkbox" oninput="globalThis.doEaglerforge = this.checked">
<label>Optimize π: </label><input checked type="checkbox" oninput="globalThis.optimizePi= this.checked">
<code id="status">Awaiting input...</code></span>
<br /><br />
<button class="btn btn-primary" id="giveme">Make modded client</button>
<button class="btn btn-primary" id="givemeserver" disabled>
Make modded server (coming soonish maybe)
</button>
</div>
<br /><br /><br />
<span>Info:</span>
<div id="#info">
<details>
<summary>
Where can I download an unobfuscated unsigned Eaglercraft build?
</summary>
<a
href="https://github.com/Eaglercraft-Archive/unminified-eaglercraft-builds/releases/latest"
>https://github.com/Eaglercraft-Archive/unminified-eaglercraft-builds/releases/latest</a
>
</details>
<details>
<summary>
How do I compile my own unobfuscated unsigned Eaglercraft build?
</summary>
<a href="docs/compiling_client.md">tutorial here</a>
</details>
<details>
<summary>How does this tool work?</summary>
The injector works by analysing your uploaded file for patterns that
appear in TeaVM's compiled JavaScript code. Then, it will replace all
functions with proxies to the original code, which it moves into
<code>ModAPI.hooks.methods</code>. It does similar things with static
properties and constructors, and then hooks into
<code>$rt_metadata</code> to access auxilary information.
</details>
<details>
<summary>Where documentation???</summary>
<a href="https://eaglerforge.github.io/EaglerForgeInjector/docs"
>https://eaglerforge.github.io/EaglerForgeInjector/docs</a
>
</details>
</div>
</div>
<!-- Libraries -->
<script src="libs/babel.min.js"></script>
<script src="libs/filesaver.min.js"></script>
<script>
document.querySelector("#htmlFile").addEventListener("input", (e) => {
if (e.target.files[0]) {
document.querySelector(".custom-file-label").innerText =
e.target.files[0].name;
}
});
var modapi_preinit = `globalThis.ModAPI ||= {};
ModAPI.hooks ||= {};
ModAPI.hooks.freezeCallstack = false;
ModAPI.hooks._rippedData ||= [];
ModAPI.hooks._teavm ||= {};
ModAPI.hooks._rippedConstructors ||= {};
ModAPI.hooks._rippedInternalConstructors ||= {};
ModAPI.hooks.methods ||= {};
ModAPI.hooks._rippedMethodTypeMap ||= {};
ModAPI.hooks._postInit ||= ()=>{};
ModAPI.hooks._rippedStaticProperties ||= {};
ModAPI.hooks._rippedStaticIndexer ||= {};
`;
var freezeCallstack = `if(ModAPI.hooks.freezeCallstack){return false};`;
</script>
<script src="patches.js"></script>
<script src="injector.minify.js"></script>
<script src="injector.js"></script>
<!-- Code assets -->
<script src="postinit.js"></script>
<script src="postinit.async.js"></script>
<script src="modloader.injector.js"></script>
<script src="modgui.injector.js"></script>
<script src="efserver.js"></script>
</body>
</html>