-
Notifications
You must be signed in to change notification settings - Fork 24
/
Copy pathwebpack_detect.js
101 lines (76 loc) · 2.46 KB
/
webpack_detect.js
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
(function webpack_detect(){
if(!window.gameVars) window.gameVars = {};
window.gameVars.OverrideIDs = {
isDetected: () => (
window.gameVars.OverrideIDs.mainModule &&
window.gameVars.OverrideIDs.emoteModule &&
window.gameVars.OverrideIDs.gameData
),
mainModule: null,
emoteModule: null,
gameData: null,
}
// webpack functions
window._webpackJsonp = undefined;
window.webpackJsonpBase = undefined;
var override_module = function(modules, id) {
var moduleBase = modules[id];
modules[id] = function(exportsVal, idk, same) {
moduleBase(exportsVal, idk, same);
// detect exports property
if(exportsVal.hasOwnProperty("exports")) {
var exports = exportsVal.exports;
// mainModule signature
if( exports.prototype &&
exports.prototype.hasOwnProperty("init") &&
exports.prototype.hasOwnProperty("free") &&
exports.prototype.hasOwnProperty("update") &&
exports.prototype.hasOwnProperty("render") &&
exports.prototype.hasOwnProperty("sendMessage") &&
exports.prototype.hasOwnProperty("processGameUpdate")
) {
window.gameVars.OverrideIDs.mainModule = id;
console.log('mainModule detected:' + id);
}
// emoteModule signature
if( exports.hasOwnProperty("EmoteManager")) {
window.gameVars.OverrideIDs.emoteModule = id;
console.log('emoteModule detected:' + id);
}
// gameData signature
if( exports.hasOwnProperty("Action") &&
exports.hasOwnProperty("WeaponSlot") &&
exports.hasOwnProperty("WeaponType") &&
exports.hasOwnProperty("DamageType") &&
exports.hasOwnProperty("Anim") &&
exports.hasOwnProperty("GasMode")
) {
window.gameVars.OverrideIDs.gameData = id;
console.log('gameData detected:' + id);
}
}
}
}
window.__defineGetter__("webpackJsonp", function(){
return _webpackJsonp;
});
window.__defineSetter__("webpackJsonp", function(val){
window.webpackJsonpBase = val;
_webpackJsonp = function(t, modules, u) {
// detect app.********.js webpack modules
if(Object.keys(modules).length > 20){
// detect modules ID's
for (var key in modules) {
var id = key.slice(0);
if (modules.hasOwnProperty(id)) {
override_module(modules, id);
}
}
_webpackJsonp = webpackJsonpBase;
}
// base method
webpackJsonpBase.call(this, t, modules, u);
};
});
console.log('webpack detect deployed');
})();