Javascript 使用混合移动应用程序防止逆向工程?
我使用phonegap用html、jQuery和css制作了一个混合移动应用程序。我想混淆或加密我的代码,这样就没有人可以对其进行反向工程。我混淆了Javascript 使用混合移动应用程序防止逆向工程?,javascript,obfuscation,reverse-engineering,hybrid-mobile-app,Javascript,Obfuscation,Reverse Engineering,Hybrid Mobile App,我使用phonegap用html、jQuery和css制作了一个混合移动应用程序。我想混淆或加密我的代码,这样就没有人可以对其进行反向工程。我混淆了yui压缩机node uglifier,minifier。他们都只是缩小我的js文件,可以很容易地在网上美化。 有人能告诉我完成这项任务的方法吗? 也请告诉我如果 这对混淆有用吗? 提前感谢。如评论中所述,在解释语言中进行模糊处理几乎是不可能的。这是因为浏览器需要能够将您的代码作为有效的JavaScript读取才能运行它——如果浏览器能够做到这一点
yui压缩机
node uglifier
,minifier
。他们都只是缩小我的js文件,可以很容易地在网上美化。
有人能告诉我完成这项任务的方法吗?
也请告诉我如果
这对混淆有用吗?
提前感谢。如评论中所述,在解释语言中进行模糊处理几乎是不可能的。这是因为浏览器需要能够将您的代码作为有效的JavaScript读取才能运行它——如果浏览器能够做到这一点,那么一个有足够决心的人也可以做到!任何声称能够混淆JavaScript的服务都只是提供了“通过模糊性实现的安全性”——也就是说,使解码更耗时或更不容易理解 例如,我看了一眼。这是我的输入代码:
console.log("test");
以下是输出:
var _0xdef6=["\x74\x65\x73\x74","\x6C\x6F\x67"];console[_0xdef6[1]](_0xdef6[0])
乍一看,这看起来相当安全,可能足以吓跑一些不那么专注的逆向工程师。然而,它实际上非常容易解码:
// t e s t l o g
var values = ["\x74\x65\x73\x74", "\x6C\x6F\x67"];
console[values[1]](values[0]);
突然之间,这一切变得非常明显——该工具从输入代码中获取了值和标识符,将它们转换为ASCII十六进制代码,并将它们作为字符串存储在数组中
现在,诚然,一个真正的程序要比这个长得多,而且可能更难解码,但我的观点仍然是一样的——如果我能在午休时间弄清楚他们的混淆器是如何为一个小程序工作的,它很难保护您的代码免受任何严重的反向工程尝试 正如注释中所讨论的,在解释语言中进行模糊处理几乎是不可能的。这是因为浏览器需要能够将您的代码作为有效的JavaScript读取才能运行它——如果浏览器能够做到这一点,那么一个有足够决心的人也可以做到!任何声称能够混淆JavaScript的服务都只是提供了“通过模糊性实现的安全性”——也就是说,使解码更耗时或更不容易理解 例如,我看了一眼。这是我的输入代码:
console.log("test");
以下是输出:
var _0xdef6=["\x74\x65\x73\x74","\x6C\x6F\x67"];console[_0xdef6[1]](_0xdef6[0])
乍一看,这看起来相当安全,可能足以吓跑一些不那么专注的逆向工程师。然而,它实际上非常容易解码:
// t e s t l o g
var values = ["\x74\x65\x73\x74", "\x6C\x6F\x67"];
console[values[1]](values[0]);
突然之间,这一切变得非常明显——该工具从输入代码中获取了值和标识符,将它们转换为ASCII十六进制代码,并将它们作为字符串存储在数组中
现在,诚然,一个真正的程序要比这个长得多,而且可能更难解码,但我的观点仍然是一样的——如果我能在午休时间弄清楚他们的混淆器是如何为一个小程序工作的,它很难保护您的代码免受任何严重的反向工程尝试 您在客户端JavaScript上所做的任何混淆都不会有多大帮助—代码必须在客户端设备上进行实际解释,因此您对其所做的任何操作都必须是可逆的。你们想混淆你们的代码的理由是什么?我的老板分配给我一项任务,保护应用程序不受逆向工程的影响。我在谷歌上看到了它的代码混淆程序。我在应用程序中使用了jquery,html,即它的混合@JoeClaysp,其原因是混淆它,以便没有人能理解它@JoeClaysp。好吧,仅仅是由于JavaScript是一种解释语言的性质,不可能以100%保护它的方式混淆代码。你可以使用类似迷你们游戏机和你链接的工具,让它更费时/更难理解,但是没有办法阻止一个有足够决心的人找到问题的根源。看:好的,yui就是解决方案。感谢您的时间@JoeClay祝您度过愉快的一天,您在客户端JavaScript上所做的任何混淆都不会有多大帮助-代码必须在客户端设备上进行实际解释,因此您对其所做的任何操作都必须是可逆的。你们想混淆你们的代码的理由是什么?我的老板分配给我一项任务,保护应用程序不受逆向工程的影响。我在谷歌上看到了它的代码混淆程序。我在应用程序中使用了jquery,html,即它的混合@JoeClaysp,其原因是混淆它,以便没有人能理解它@JoeClaysp。好吧,仅仅是由于JavaScript是一种解释语言的性质,不可能以100%保护它的方式混淆代码。你可以使用类似迷你们游戏机和你链接的工具,让它更费时/更难理解,但是没有办法阻止一个有足够决心的人找到问题的根源。看:好的,yui就是解决方案。谢谢你的时间@JoeClay祝你度过愉快的一天,@Asad:没问题@阿萨德:没问题!