whoami-shubham / obfuscator-io-metro-plugin

A metro plugin to use the javascript-obfuscator library with react-native to obfuscate the bundle after the build.
https://www.npmjs.com/package/obfuscator-io-metro-plugin
MIT License
62 stars 17 forks source link

Unable to get a readable stacktrace #14

Closed ateeqsuhail closed 1 year ago

ateeqsuhail commented 1 year ago

After Obfuscating the JS bundle, the crashlytics stacktrace is something like this:

Fatal Exception: io.invertase.firebase.crashlytics.JavaScriptError: _0x54797d[_0x2bc9b5(0x22e)][_0x2bc9b5(0x285)+_0x2bc9b5(0x2a9)+_0x2bc9b5(0x283)] is not a function. (In '_0x54797d[_0x2bc9b5(0x22e)][_0x2bc9b5(0x285)+_0x2bc9b5(0x2a9)+_0x2bc9b5(0x283)]()', '_0x54797d[_0x2bc9b5(0x22e)][_0x2bc9b5(0x285)+_0x2bc9b5(0x2a9)+_0x2bc9b5(0x283)]' is undefined) at .onPress(index.android.bundle:931:21921) at .touchableHandlePress(index.android.bundle:216:2269) at .touchableHandlePress([native code]:0:0) at ._performSideEffectsForTransition(index.android.bundle:207:9693) at ._performSideEffectsForTransition([native code]:0:0) at ._receiveSignal(index.android.bundle:207:8375) at ._receiveSignal([native code]:0:0) at .touchableHandleResponderRelease(index.android.bundle:207:5663) at .touchableHandleResponderRelease([native code]:0:0) at .y(index.android.bundle:90:1197) at .S(index.android.bundle:90:1340) at .C(index.android.bundle:90:1394) at .N(index.android.bundle:90:1692) at .A(index.android.bundle:90:2482) at .forEach([native code]:0:0) at .z(index.android.bundle:90:2282) at .<unknown>(index.android.bundle:90:13914) at ._e(index.android.bundle:90:88042) at .Ne(index.android.bundle:90:13582) at .Ue(index.android.bundle:90:13755) at .receiveTouches(index.android.bundle:90:14547) at .value(index.android.bundle:25:3685) at .<unknown>(index.android.bundle:25:841) at .value(index.android.bundle:25:2939) at .value(index.android.bundle:25:813) at .value([native code]:0:0)

I have used metro symbolicate and stack-beautifier but they say no-match found.

Questions:

  1. Is there anyway to retrace the readable stacktrace after obfuscation?
  2. If No then is there some other package I could use for obfuscating my react native js bundle. Already using proguard and BitCode for native code.
whoami-shubham commented 1 year ago

I don't think javascript-obfuscator provides any function to deobfuscate back to the original code. it's not reversible I guess. you might not want to use this library if you want to get error logs back to the original stack trace. you might have to use custom error reporting if you use this library.

whoami-shubham commented 1 year ago

duplicate of #7