jscrambler-metro-plugin 6.4.6 → 6.4.7
Sign up to get free protection for your applications and to get access to all the features.
- package/README.md +1 -0
- package/lib/constants.js +6 -0
- package/lib/index.js +5 -2
- package/lib/utils.js +41 -0
- package/package.json +2 -2
package/README.md
CHANGED
package/lib/constants.js
CHANGED
@@ -16,6 +16,9 @@ const JSCRAMBLER_BEG_ANNOTATION = '"JSCRAMBLER-BEG";';
|
|
16
16
|
const JSCRAMBLER_END_ANNOTATION = '"JSCRAMBLER-END";';
|
17
17
|
const JSCRAMBLER_EXTS = /.(j|t)s(x)?$/i;
|
18
18
|
const JSCRAMBLER_SELF_DEFENDING = 'selfDefending';
|
19
|
+
const JSCRAMBLER_ANTI_TAMPERING = 'antiTampering';
|
20
|
+
const JSCRAMBLER_ANTI_TAMPERING_MODE_RCK = 'RCK';
|
21
|
+
const JSCRAMBLER_ANTI_TAMPERING_MODE_SKL = 'SKL';
|
19
22
|
const JSCRAMBLER_GLOBAL_VARIABLE_INDIRECTION = 'globalVariableIndirection';
|
20
23
|
const JSCRAMBLER_TOLERATE_BENIGN_POISONING = 'tolerateBenignPoisoning';
|
21
24
|
|
@@ -36,5 +39,8 @@ module.exports = {
|
|
36
39
|
JSCRAMBLER_SELF_DEFENDING,
|
37
40
|
JSCRAMBLER_GLOBAL_VARIABLE_INDIRECTION,
|
38
41
|
JSCRAMBLER_TOLERATE_BENIGN_POISONING,
|
42
|
+
JSCRAMBLER_ANTI_TAMPERING,
|
43
|
+
JSCRAMBLER_ANTI_TAMPERING_MODE_RCK,
|
44
|
+
JSCRAMBLER_ANTI_TAMPERING_MODE_SKL,
|
39
45
|
JSCRAMBLER_EXTS
|
40
46
|
}
|
package/lib/index.js
CHANGED
@@ -29,6 +29,7 @@ const {
|
|
29
29
|
addBundleArgsToExcludeList,
|
30
30
|
handleExcludeList,
|
31
31
|
injectTolerateBegninPoisoning,
|
32
|
+
handleAntiTampering,
|
32
33
|
wrapCodeWithTags
|
33
34
|
} = require('./utils');
|
34
35
|
|
@@ -154,6 +155,8 @@ async function obfuscateBundle(
|
|
154
155
|
process.exit(-1);
|
155
156
|
}
|
156
157
|
|
158
|
+
const {addShowSource, requireStartAtFirstColumn} = handleAntiTampering(config, processedMetroBundle);
|
159
|
+
|
157
160
|
const shouldGenerateSourceMaps = config.sourceMaps && bundleSourceMapPath;
|
158
161
|
|
159
162
|
const jscramblerOp = !!config.instrument
|
@@ -183,7 +186,7 @@ async function obfuscateBundle(
|
|
183
186
|
c.indexOf(JSCRAMBLER_END_ANNOTATION),
|
184
187
|
c.length
|
185
188
|
);
|
186
|
-
return acc
|
189
|
+
return `${acc}${JSCRAMBLER_BEG_ANNOTATION}${addShowSource ? '"show source";' : ''}${requireStartAtFirstColumn ? '\n' : ''}${obfuscatedCode}${tillCodeEnd}`;
|
187
190
|
}, '');
|
188
191
|
|
189
192
|
await writeFile(bundlePath, stripJscramblerTags(finalBundle));
|
@@ -244,7 +247,7 @@ function validateModule(modulePath, config, projectRoot) {
|
|
244
247
|
/**
|
245
248
|
* Add serialize.processModuleFilter option to metro and attach listener to beforeExit event.
|
246
249
|
* *config.fileSrc* and *config.filesDest* will be ignored.
|
247
|
-
* @param {
|
250
|
+
* @param {{enable: boolean, hermesEnabled: boolean }} _config
|
248
251
|
* @param {string} [projectRoot=process.cwd()]
|
249
252
|
* @returns {{serializer: {processModuleFilter(*): boolean}}}
|
250
253
|
*/
|
package/lib/utils.js
CHANGED
@@ -8,6 +8,9 @@ const {
|
|
8
8
|
JSCRAMBLER_END_ANNOTATION,
|
9
9
|
JSCRAMBLER_BEG_ANNOTATION,
|
10
10
|
JSCRAMBLER_SELF_DEFENDING,
|
11
|
+
JSCRAMBLER_ANTI_TAMPERING,
|
12
|
+
JSCRAMBLER_ANTI_TAMPERING_MODE_SKL,
|
13
|
+
JSCRAMBLER_ANTI_TAMPERING_MODE_RCK,
|
11
14
|
JSCRAMBLER_TOLERATE_BENIGN_POISONING,
|
12
15
|
JSCRAMBLER_GLOBAL_VARIABLE_INDIRECTION,
|
13
16
|
BUNDLE_OUTPUT_CLI_ARG,
|
@@ -279,6 +282,43 @@ function injectTolerateBegninPoisoning(config) {
|
|
279
282
|
}
|
280
283
|
}
|
281
284
|
|
285
|
+
/**
|
286
|
+
* @param {object} config
|
287
|
+
* @param {string} processedMetroBundle
|
288
|
+
* @returns {{addShowSource: boolean, requireStartAtFirstColumn: boolean}}
|
289
|
+
*/
|
290
|
+
function handleAntiTampering(config, processedMetroBundle) {
|
291
|
+
let addShowSource = false;
|
292
|
+
let requireStartAtFirstColumn = false
|
293
|
+
if (Array.isArray(config.params)) {
|
294
|
+
const antiTampering = config.params.find(
|
295
|
+
(param) => param.name === JSCRAMBLER_ANTI_TAMPERING
|
296
|
+
);
|
297
|
+
if (antiTampering) {
|
298
|
+
antiTampering.options = antiTampering.options || {};
|
299
|
+
antiTampering.options.mode = antiTampering.options.mode || [JSCRAMBLER_ANTI_TAMPERING_MODE_RCK, JSCRAMBLER_ANTI_TAMPERING_MODE_SKL];
|
300
|
+
if (config.hermesEnabled) {
|
301
|
+
addShowSource = true;
|
302
|
+
if (
|
303
|
+
Array.isArray(antiTampering.options.mode) &&
|
304
|
+
antiTampering.options.mode.includes(JSCRAMBLER_ANTI_TAMPERING_MODE_SKL)
|
305
|
+
) {
|
306
|
+
console.log(`info Jscrambler Anti-Tampering Mode SKL can not be use in hermes engine. RCK mode was SET.`);
|
307
|
+
antiTampering.options.mode = [JSCRAMBLER_ANTI_TAMPERING_MODE_RCK];
|
308
|
+
}
|
309
|
+
}
|
310
|
+
|
311
|
+
if (antiTampering.options.mode.includes(JSCRAMBLER_ANTI_TAMPERING_MODE_SKL)) {
|
312
|
+
const singleLineModule = processedMetroBundle.match(RegExp(`\n\\S+${JSCRAMBLER_BEG_ANNOTATION}`, 'm'));
|
313
|
+
if (singleLineModule !== null) {
|
314
|
+
requireStartAtFirstColumn = true;
|
315
|
+
}
|
316
|
+
}
|
317
|
+
}
|
318
|
+
}
|
319
|
+
return {addShowSource, requireStartAtFirstColumn};
|
320
|
+
}
|
321
|
+
|
282
322
|
module.exports = {
|
283
323
|
buildModuleSourceMap,
|
284
324
|
buildNormalizePath,
|
@@ -291,5 +331,6 @@ module.exports = {
|
|
291
331
|
addBundleArgsToExcludeList,
|
292
332
|
handleExcludeList,
|
293
333
|
injectTolerateBegninPoisoning,
|
334
|
+
handleAntiTampering,
|
294
335
|
wrapCodeWithTags
|
295
336
|
};
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "jscrambler-metro-plugin",
|
3
|
-
"version": "6.4.
|
3
|
+
"version": "6.4.7",
|
4
4
|
"description": "A plugin to use metro with Jscrambler",
|
5
5
|
"main": "lib/index.js",
|
6
6
|
"peerDependencies": {
|
@@ -9,7 +9,7 @@
|
|
9
9
|
"dependencies": {
|
10
10
|
"commander": "^2.20.0",
|
11
11
|
"fs-extra": "^8.0.1",
|
12
|
-
"jscrambler": "^6.4.
|
12
|
+
"jscrambler": "^6.4.7"
|
13
13
|
},
|
14
14
|
"keywords": [
|
15
15
|
"jscrambler",
|