我正在使用Javascript编写应用程序。我正在寻找隐藏代码的方法,我想我已经找到了一个,使用Java Applet。
无论如何,我认为只有在js anonimous functions '代码在评估之后无法以任何方式保持可访问时才应该可行。
(function(){...}).call(obj)
Applet可以获取对它们所在浏览器窗口的引用,并调用其eval
方法来评估js代码:
// java code
JSObject window = JSObject.getWindow(this);
window.eval( "(function(){"
+ ...
+ "}).call("
+ thisObjectName
+ ")" );
因此,我可以改变我的js代码,就像一些函数,而不是在里面的代码,调用一个applet函数,要求窗口eval
原始的js函数代码,传递给窗口一个无穷大的函数,所以没有函数引用。当然,js函数必须给java函数赋予对象的名称(this
),并且java函数必须组成添加对call(objectName)
方法的调用的anonimous函数,才能使用{{1正确引用。
this
becames:
MyJsClass.prototype.func = function() { ... };
[更新] 出于两个原因我的想法并不好
答案 0 :(得分:4)
您是否考虑过以下可能性?
window.eval = function (code) {
console.log('code');
};
eval('alert(1)');
意思是,几乎不需要覆盖eval
函数。