将做计算的js文件分离到另一个文件中
Separating js files that do calculations into another file
我正在构建一个 Visual Studio 2015 Cordova 应用程序。在这个应用程序中,我有 4 个 js 文件,它们提供了使这个应用程序运行的所有计算。
我想将这些文件分开并像引用 dll 一样引用它们。
我还听说在 Cordova 应用程序中,所有 js 文件都呈现为纯文本,这将揭示使应用程序正常工作的计算结构。
基本上我想保护这些文件不被轻易查看。
因为我在 Javascript 和移动设备上工作,所以我不确定实现它的最佳方法。
谢谢
分离文件并没有多大作用,事实上,将它们组合起来并obfuscate代码将是最简单的方法。
更好但更复杂的是,您可以采用某种加密,这将使逆向工程变得更加困难。可以找到一篇好文章here in response to this SO Question。 post 这里的确切代码有点复杂,它面向 OS X 开发环境,但我相信它可以适应。
本质上,您使用像 ffffffffffffffffffffffffffffffff
:
这样的密钥来加密源文件(PHP 但可以用任何语言完成)
<?
function icrypt($plaintext, $key) {
$iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_ECB);
$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
return mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $plaintext, MCRYPT_MODE_ECB);
}
//usage:
$newHtml = icrypt('<html>Source File</html>', 'ffffffffffffffffffffffffffffffff');
然后让您的应用程序解密内存中的源文件(这需要对 PhoneGap/Cordova 进行一些更改),使用如下方法(为清楚起见被截断):
- (void) fetchKey:(char[]) key
{
//ffffffffffffffffffffffffffffffff
key[0] = 0x66;
key[1] = 0x66;
key[2] = 0x66;
key[3] = 0x66;
key[4] = 0x66;
key[5] = 0x66;
key[6] = 0x66;
key[7] = 0x66;
key[8] = 0x66;
key[9] = 0x66;
...
文章更好地展示了整个过程。
您可能需要考虑将此敏感代码放在网络服务中,并从移动应用程序调用它。您可以通过使用编译语言(如 c#、c++、java 等)来保护 Web 服务代码,或者如果您想将当前工作保留在 java 脚本中,请将其转换为用作nodejs 模块作为 Web 服务响应。
我正在构建一个 Visual Studio 2015 Cordova 应用程序。在这个应用程序中,我有 4 个 js 文件,它们提供了使这个应用程序运行的所有计算。
我想将这些文件分开并像引用 dll 一样引用它们。
我还听说在 Cordova 应用程序中,所有 js 文件都呈现为纯文本,这将揭示使应用程序正常工作的计算结构。
基本上我想保护这些文件不被轻易查看。
因为我在 Javascript 和移动设备上工作,所以我不确定实现它的最佳方法。
谢谢
分离文件并没有多大作用,事实上,将它们组合起来并obfuscate代码将是最简单的方法。
更好但更复杂的是,您可以采用某种加密,这将使逆向工程变得更加困难。可以找到一篇好文章here in response to this SO Question。 post 这里的确切代码有点复杂,它面向 OS X 开发环境,但我相信它可以适应。
本质上,您使用像 ffffffffffffffffffffffffffffffff
:
<?
function icrypt($plaintext, $key) {
$iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_ECB);
$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
return mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $plaintext, MCRYPT_MODE_ECB);
}
//usage:
$newHtml = icrypt('<html>Source File</html>', 'ffffffffffffffffffffffffffffffff');
然后让您的应用程序解密内存中的源文件(这需要对 PhoneGap/Cordova 进行一些更改),使用如下方法(为清楚起见被截断):
- (void) fetchKey:(char[]) key
{
//ffffffffffffffffffffffffffffffff
key[0] = 0x66;
key[1] = 0x66;
key[2] = 0x66;
key[3] = 0x66;
key[4] = 0x66;
key[5] = 0x66;
key[6] = 0x66;
key[7] = 0x66;
key[8] = 0x66;
key[9] = 0x66;
...
文章更好地展示了整个过程。
您可能需要考虑将此敏感代码放在网络服务中,并从移动应用程序调用它。您可以通过使用编译语言(如 c#、c++、java 等)来保护 Web 服务代码,或者如果您想将当前工作保留在 java 脚本中,请将其转换为用作nodejs 模块作为 Web 服务响应。