All Projects → christopherney → Enigma

christopherney / Enigma

Licence: mit
Gradle Plugin - Obfuscator String Encryption (Android/Java)

Programming Languages

java
68154 projects - #9 most used programming language

Projects that are alternatives of or similar to Enigma

Androidlibrary
Android library to reveal or obfuscate strings and assets at runtime
Stars: ✭ 162 (+276.74%)
Mutual labels:  gradle, encryption, obfuscation, encrypt
Yguard
The open-source Java obfuscation tool working with Ant and Gradle by yWorks - the diagramming experts
Stars: ✭ 130 (+202.33%)
Mutual labels:  gradle-plugin, obfuscation, obfuscator
Obfuscator Class
👨‍💻 Simple and effective Obfuscator PHP class (this is not a stupid base64 encoding script, but a real and effective obfuscation script)
Stars: ✭ 202 (+369.77%)
Mutual labels:  encryption, obfuscation, obfuscator
SharpLoader
🔮 [C#] Source code randomizer and compiler
Stars: ✭ 36 (-16.28%)
Mutual labels:  encryption, obfuscator, encrypt
Laziertracker
本项目通过Android字节码插桩插件实现Android端无埋点(或自动埋点),并且支持根据配置文件实现业务数据的自动采集。
Stars: ✭ 485 (+1027.91%)
Mutual labels:  gradle, gradle-plugin
Hunter
A fast, incremental, concurrent framework to develop compile plugin for android project to manipulate bytecode
Stars: ✭ 999 (+2223.26%)
Mutual labels:  gradle, gradle-plugin
Let
Annotation based simple API flavored with AOP to handle new Android runtime permission model
Stars: ✭ 532 (+1137.21%)
Mutual labels:  gradle, gradle-plugin
Gogradle
A Gradle Plugin Providing Full Support for Go
Stars: ✭ 712 (+1555.81%)
Mutual labels:  gradle, gradle-plugin
Mjcodeobfuscation
一个用于代码混淆和字符串加密的Mac小Demo
Stars: ✭ 445 (+934.88%)
Mutual labels:  obfuscation, obfuscator
Gradle Git
Git plugin for Gradle
Stars: ✭ 559 (+1200%)
Mutual labels:  gradle, gradle-plugin
Ktlint Gradle
A ktlint gradle plugin
Stars: ✭ 713 (+1558.14%)
Mutual labels:  gradle, gradle-plugin
Gradle Download Task
Adds a download task to Gradle that displays progress information
Stars: ✭ 478 (+1011.63%)
Mutual labels:  gradle, gradle-plugin
Gradle Test Logger Plugin
A Gradle plugin for printing beautiful logs on the console while running tests
Stars: ✭ 460 (+969.77%)
Mutual labels:  gradle, gradle-plugin
Android Showcase
💎 Android application following best practices: Kotlin, Coroutines, JetPack, Clean Architecture, Feature Modules, Tests, MVVM, DI, Static Analysis...
Stars: ✭ 5,214 (+12025.58%)
Mutual labels:  gradle, android-application
Bnd
Bnd/Bndtools. Tooling to build OSGi bundles including Eclipse, Maven, and Gradle plugins.
Stars: ✭ 446 (+937.21%)
Mutual labels:  gradle, gradle-plugin
Yakpro Po
YAK Pro - Php Obfuscator
Stars: ✭ 678 (+1476.74%)
Mutual labels:  obfuscation, obfuscator
Plantuml Gradle Plugin
Gradle plugin to build PlantUML diagrams from code (for living and up-to-date documentation)
Stars: ✭ 27 (-37.21%)
Mutual labels:  gradle, gradle-plugin
Javascript Obfuscator
A powerful obfuscator for JavaScript and Node.js
Stars: ✭ 8,204 (+18979.07%)
Mutual labels:  obfuscation, obfuscator
Gradle Defaults
Plugin providing opinionated defaults for Gradle projects.
Stars: ✭ 7 (-83.72%)
Mutual labels:  gradle, gradle-plugin
Z00bfuscator
Z00bfuscator is the simple, open-source, cross-platform obfuscator for .NET Assemblies built on .NET Core
Stars: ✭ 35 (-18.6%)
Mutual labels:  obfuscation, obfuscator

Enigma

Gradle Plugin - Obfuscator Strings Encryption (Android/Java)

This project is a simple Gradle plugin to help you to encrypt all String values of your Android Java code at the compilation time.

Important: Enigma plugin won't execute if your project is not managed by a SCM tool such as git or SVN.

Recommended: commit your changes before compile your app with Enigma activated

Links:

How integrate it?

First of all, be sure that a SCM is initialized in your project, such as Git for example:

$ cd /path/of/your/project/
$ git init
$ git add .
$ git commit -m "Initial commit"

build.gradle (project)

buildscript {
  repositories {
    google()
    jcenter()
    // Add Maven repo
    maven {
      url "https://plugins.gradle.org/m2/"
    }
  }
  dependencies {     
    classpath 'com.android.tools.build:gradle:3.5.2'
    // Add the Enigma classpath
    classpath 'gradle.plugin.chrisney:enigma:1.0.0.8'
  }
}

build.gradle (app)

apply plugin: 'com.android.application'

// Add Enigma Plugin
apply plugin: 'com.chrisney.enigma'

// Set Enigma options:
enigma.enabled = true
enigma.injectFakeKeys = true
enigma.ignoredClasses = ["com.my.packagename.MainActivity.java"]

android {
    buildTypes {
        release {
            // Don't forget to enable ProGuard !
            minifyEnabled true
        }
    }
}

Compile your App

During the compilation process, Enigma plugin will:

  • Backup all Java files in backup directory enigma-backup
  • Parse your code and encrypt all String values for each Java file
  • Inject Enigma source code (encryption code)
  • Inject fake secrete keys (optional - check enigma.injectFakeKeys option)
  • Compile your App (classic process)
  • Restore your original Java files
$ ./gradlew assembleRelease
> Task :app:backup
💾 Backup: /app/src/main/java/com/app/helloworld/MainActivity.java
💾 Backup: /app/src/main/java/com/app/helloworld/helpers/IResponse.java
💾 Backup: /app/src/main/java/com/app/helloworld/helpers/Utils.java
💾 Backup: /app/src/main/java/com/app/helloworld/helpers/ATest.java
💾 Backup: /app/src/main/java/com/app/helloworld/helpers/TestImpl.java
💾 Backup: /app/src/main/java/com/app/helloworld/Constants.java

> Task :app:encrypt
🔐 MainActivity.java encrypted
🔐 IResponse.java encrypted
🔐 Utils.java encrypted
🔐 ATest.java encrypted
🔐 TestImpl.java encrypted
🔐 Constants.java encrypted

> Task :app:injectCode
✏️ Add Enigma code

> Task :app:restore
♻️ Restore: /app/src/main/java/com/proto/helloworld/MainActivity.java
♻️ Restore: /app/src/main/java/com/app/helloworld/helpers/IResponse.java
♻️ Restore: /app/src/main/java/com/app/helloworld/helpers/Utils.java
♻️ Restore: /app/src/main/java/com/app/helloworld/helpers/ATest.java
♻️ Restore: /app/src/main/java/com/app/helloworld/helpers/TestImpl.java
♻️ Restore: /app/src/main/java/com/app/helloworld/Constants.java
🧹 Remove Enigma code: ~/HelloWorld/app/src/main/java/com/app

Options

Bellow the options of Enigma plugin:

  • enigma.enabled (true | false) : Enable or disable the string encryption process (default: true)
  • enigma.injectFakeKeys (true | false) : if activated, create fake string keys and injected it into your code (default: true)
  • enigma.hash (string) : let you define your own encryption key (32 characters recommended)
  • enigma.classes (array of strings) : let you defined the only classes to encrypt
  • enigma.ignoredClasses (array of strings): define the classes to not encrypt
  • enigma.srcJava (string): root path of your JAVA files (default: /app/src/main/java)

Unit Tests

The JAVA parser is unit tested with more than 300 complex JAVA classes:

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].