Obfuscation extension for electron-vite's V8 Bytecode plugin using javascript-obfuscator
npm install @tsenta/electron-vite-obfuscatorbash
pnpm add -D @tsenta/electron-vite-obfuscator
`
Usage
`typescript
import { defineConfig } from 'electron-vite'
import { bytecodePlugin } from '@tsenta/electron-vite-obfuscator'
export default defineConfig({
main: {
plugins: [bytecodePlugin()]
},
preload: {
plugins: [bytecodePlugin()]
}
})
`
Configuration
Pass obfuscation options to enable javascript-obfuscator:
`typescript
bytecodePlugin({
// Bytecode options
transformArrowFunctions: true,
removeBundleJS: true,
protectedStrings: ['secret-key', 'api-token'],
// JavaScript obfuscator options
obfuscationOptions: {
compact: true,
controlFlowFlattening: true,
controlFlowFlatteningThreshold: 0.75,
deadCodeInjection: true,
deadCodeInjectionThreshold: 0.4,
stringArray: true,
stringArrayEncoding: ['rc4'],
stringArrayThreshold: 0.75
}
})
`
See javascript-obfuscator docs for all available options.
> Note: selfDefending and debugProtection are enforced to false as they don't work with V8 bytecode.
Development
`bash
Install dependencies
pnpm install
Build
pnpm build
Watch mode
pnpm dev
Lint & format check
pnpm check
Auto-fix lint & format
pnpm fix
``