Usage:
python bash_process.py : recovering the programs obfuscated by jsjiami, javascript-obfuscator, BeautifyJS, esoteric, fkJS and UglyJS in Origin-JS (needs manually changing the path to recover programs in Complex-JS)
Script:
python baseline.py and python baseline_testing.py represents the experiment script used in RQ1 and RQ2, respectively.
Results of RQ1:
directory jsdata contains the experiments results of Origin-JS
directory jsdata2 contains the experiments results of Complex-JS
In each directory:
rand_{a}: obfuscated by obfuscator a
rand_{a}_{b}: obfuscated by obfuscator a and deobfuscated by deobfuscator b
rand_{a}_{b}_nice: obfuscated by obfuscator a, deobfuscated by deobfuscator b, and recovered by JSNice
res_kernel_{a}.xlsx contains the tree kernel metric results of programs obfuscated by obfuscator a
res_token_{a}_cmp.xlsx contains the #Token Metric results of programs obfuscated by obfuscator a
Results of RQ2:
dicrectory ugly contains the experiments results over UglifyJS
dicrectory test contains the experiments results over BeautifyJS
dicrectory esoteric contains the experiments results over esoteric and fkJS
Other:
jsdata/improve_jiami.csv are the experimental results over JSNice.
We use Jaccard similarity over the identifiers of programs to see the improvement of JSNice.
We find that JSNice has a hard time recovering the identifiers of JS programs only obfuscated by name replacement (1.6% improvement), indicating that the downstream impact over JSNice is limited due to JSNice itself.
Major Revision:
major/lodash_jsjiami and major/lodash_ob corresponds to the obfuscated programs (by jsjiami and javascript-obfuscator).
major/lodash_rec_jsjiami and major/lodash_rec_ob corresponds to their deobfuscated programs.