新增 打包时简单加密
This commit is contained in:
@@ -1,2 +1 @@
|
||||
"ui";
|
||||
console.error("打包出错啦~ 使用文件夹打包请把主脚本改名为main.js");
|
||||
Yホ?翔<EFBFBD>Mコzォア
|
||||
@@ -1,7 +1,13 @@
|
||||
{
|
||||
"name": "Hello World",
|
||||
"versionName": "1.0.0",
|
||||
"assets": [],
|
||||
"build": {
|
||||
"build_id": "B883A485-9",
|
||||
"build_number": 9,
|
||||
"build_time": 1543638246643
|
||||
},
|
||||
"main": "main.js",
|
||||
"name": "打包测试",
|
||||
"packageName": "xx.xx",
|
||||
"versionCode": 1,
|
||||
"packageName": "org.autojs.example",
|
||||
"main": "main.js"
|
||||
"versionName": "1.0.0"
|
||||
}
|
||||
@@ -9,10 +9,12 @@ import com.stardust.auojs.inrt.LogActivity;
|
||||
import com.stardust.auojs.inrt.Pref;
|
||||
import com.stardust.auojs.inrt.R;
|
||||
import com.stardust.auojs.inrt.SettingsActivity;
|
||||
import com.stardust.autojs.engine.LoopBasedJavaScriptEngine;
|
||||
import com.stardust.autojs.runtime.ScriptRuntime;
|
||||
import com.stardust.autojs.runtime.api.AppUtils;
|
||||
import com.stardust.autojs.runtime.exception.ScriptException;
|
||||
import com.stardust.autojs.runtime.exception.ScriptInterruptedException;
|
||||
import com.stardust.autojs.script.JavaScriptSource;
|
||||
import com.stardust.view.accessibility.AccessibilityService;
|
||||
import com.stardust.view.accessibility.AccessibilityServiceUtils;
|
||||
|
||||
@@ -24,6 +26,8 @@ import com.stardust.view.accessibility.AccessibilityServiceUtils;
|
||||
public class AutoJs extends com.stardust.autojs.AutoJs {
|
||||
|
||||
private static AutoJs instance;
|
||||
private String mKey = "";
|
||||
private String mInitVector = "";
|
||||
|
||||
public static AutoJs getInstance() {
|
||||
return instance;
|
||||
@@ -92,6 +96,17 @@ public class AutoJs extends com.stardust.autojs.AutoJs {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initScriptEngineManager() {
|
||||
super.initScriptEngineManager();
|
||||
getScriptEngineManager().registerEngine(JavaScriptSource.ENGINE, () -> {
|
||||
XJavaScriptEngine engine = new XJavaScriptEngine(getApplication());
|
||||
engine.setKey(mKey, mInitVector);
|
||||
engine.setRuntime(createRuntime());
|
||||
return engine;
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
protected ScriptRuntime createRuntime() {
|
||||
ScriptRuntime runtime = super.createRuntime();
|
||||
@@ -99,4 +114,9 @@ public class AutoJs extends com.stardust.autojs.AutoJs {
|
||||
runtime.putProperty("class.console", LogActivity.class);
|
||||
return runtime;
|
||||
}
|
||||
|
||||
public void setKey(String key, String vet) {
|
||||
mKey = key;
|
||||
mInitVector = vet;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,42 @@
|
||||
package com.stardust.auojs.inrt.autojs
|
||||
|
||||
import android.content.Context
|
||||
import com.stardust.autojs.engine.LoopBasedJavaScriptEngine
|
||||
import com.stardust.autojs.script.JavaScriptFileSource
|
||||
import com.stardust.autojs.script.ScriptSource
|
||||
import com.stardust.autojs.script.StringScriptSource
|
||||
import com.stardust.pio.PFiles
|
||||
import com.stardust.util.AdvancedEncryptionStandard
|
||||
import java.io.File
|
||||
|
||||
class XJavaScriptEngine(context: Context) : LoopBasedJavaScriptEngine(context) {
|
||||
|
||||
private var mKey = ""
|
||||
private var mInitVector = ""
|
||||
|
||||
override fun execute(source: ScriptSource, callback: ExecuteCallback?) {
|
||||
if (source is JavaScriptFileSource) {
|
||||
try {
|
||||
execute(source.file)
|
||||
} catch (e: Throwable) {
|
||||
e.printStackTrace()
|
||||
}
|
||||
} else {
|
||||
super.execute(source, callback)
|
||||
}
|
||||
}
|
||||
|
||||
private fun execute(file: File) {
|
||||
val bytes = PFiles.readBytes(file.path)
|
||||
//val key = AdvancedEncryptionStandard(mKey.toByteArray(), mInitVector).decrypt(bytes, 0, 16)
|
||||
val source = AdvancedEncryptionStandard(mKey.toByteArray(), mInitVector).decrypt(bytes)
|
||||
super.execute(StringScriptSource(file.name, String(source)))
|
||||
}
|
||||
|
||||
fun setKey(key: String, initVector: String) {
|
||||
mKey = key
|
||||
mInitVector = initVector
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -19,9 +19,11 @@ import com.stardust.autojs.script.JavaScriptSource;
|
||||
import com.stardust.autojs.script.ScriptSource;
|
||||
import com.stardust.pio.PFiles;
|
||||
import com.stardust.pio.UncheckedIOException;
|
||||
import com.stardust.util.MD5;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.lang.reflect.Field;
|
||||
|
||||
/**
|
||||
* Created by Stardust on 2018/1/24.
|
||||
@@ -92,6 +94,7 @@ public class AssetsProjectLauncher {
|
||||
private void prepare() {
|
||||
String projectConfigPath = PFiles.join(mProjectDir, ProjectConfig.CONFIG_FILE_NAME);
|
||||
ProjectConfig projectConfig = ProjectConfig.fromFile(projectConfigPath);
|
||||
initKey(projectConfig);
|
||||
if (!BuildConfig.DEBUG && projectConfig != null &&
|
||||
TextUtils.equals(projectConfig.getBuildInfo().getBuildId(), mProjectConfig.getBuildInfo().getBuildId())) {
|
||||
return;
|
||||
@@ -104,4 +107,23 @@ public class AssetsProjectLauncher {
|
||||
}
|
||||
}
|
||||
|
||||
private void initKey(ProjectConfig projectConfig) {
|
||||
if (projectConfig == null) {
|
||||
return;
|
||||
}
|
||||
String key = MD5.md5(projectConfig.getPackageName() + projectConfig.getVersionName() + projectConfig.getMainScriptFile());
|
||||
String vec = MD5.md5(projectConfig.getBuildInfo().getBuildId() + projectConfig.getName()).substring(0, 16);
|
||||
try {
|
||||
Field fieldKey = AutoJs.class.getDeclaredField("mKey");
|
||||
fieldKey.setAccessible(true);
|
||||
fieldKey.set(AutoJs.getInstance(), key);
|
||||
Field fieldVector = AutoJs.class.getDeclaredField("mInitVector");
|
||||
fieldVector.setAccessible(true);
|
||||
fieldVector.set(AutoJs.getInstance(), vec);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,7 +1,11 @@
|
||||
package com.stardust.auojs.inrt;
|
||||
|
||||
import com.stardust.util.AdvancedEncryptionStandard;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
/**
|
||||
@@ -12,6 +16,11 @@ import static org.junit.Assert.*;
|
||||
public class ExampleUnitTest {
|
||||
@Test
|
||||
public void addition_isCorrect() throws Exception {
|
||||
assertEquals(4, 2 + 2);
|
||||
String key = "e7c2e459ba3069ce2c9f37ea680ddb07";
|
||||
String vec = "0e491e6efc69ddc3";
|
||||
byte[] encrypt = new AdvancedEncryptionStandard(key.getBytes(), vec).encrypt("xxx".getBytes());
|
||||
System.out.println(Arrays.toString(encrypt));
|
||||
byte[] decrypt = new AdvancedEncryptionStandard(key.getBytes(), vec).decrypt(encrypt, 0, encrypt.length);
|
||||
System.out.println(new String(decrypt));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user