场景:APP,Jar或者js中参数的加密秘钥不能明文存放。防止分析者直接按照关键词检索到结果。
方法:敏感的几个字符(不推荐特别多)通过jsfuck编码,应用中使用的时候再获取出来。这样可以防止静态代码分析时,快速找到关键点。
python实现关键代码保护
#Python代码实现方式
import js2py
js = """eval("(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]")"""
my_key = js2py.eval_js(js)
print(my_key)
注意事项:jsfuck可以编码任何文本,不一定是js代码。字符最好不要太多,尽量选择长度短的字母或者数字,秘钥等关键信息是一个非常好的选择。
java代码中使用jsfuck代码进行保护的示例:
import javax.script.Invocable;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;
public class Demo {
public static void main(String[] args) throws ScriptException {
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("JavaScript");
// JavaScript code in a String
String script1 = "eval('(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]')";