问题标签 [deobfuscation]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Java 代码安全
可能重复:
您是否混淆了您的商业 Java 代码?
除了混淆之外还有其他方法可以保护罐子不被其他人打开吗?问题是我不希望任何人访问代码,这就是我不喜欢 Java 的原因。从我使用的反编译器来看,用 C# 和 Java 制作的程序具有完整的变量名称,这使得访问非免费程序变得容易。更糟糕的是,给出源代码。
javascript - UglifyJS / UglifyJS2 - 解密/还原工程结果有多难?
是否有任何可用的工具可以将优化的 blob 恢复为人类可读、易于理解的状态?
javascript - 注入网站黑客的 javascript
我的朋友 word press 网站遭到攻击,一堆 php 文件注入了一些 eval 语句,我已经对其进行了膨胀和解码,但它引导我进入了下面的 javascript。
任何人都知道如何去混淆它,以便我们可以阅读它所说的内容?
php - PHP eval() 接受 eval() 之外的解析错误。怎么可能?
我正在使用一些 PHP 混淆/编码工具,该工具无需任何服务器端加载程序即可工作,但我惊讶地发现了我无法解码的解决方案。
我认为自己通常很了解通过编码和混淆来“保护”php代码的不同解决方案,并且我知道两个基本规则:
如果 PHP 可以阅读和理解您的代码,无论经过多少混淆和编码,您也可以
基于使用 eval() 语言结构的编码解决方案是可破坏的,因为输出代码将作为 eval 结构中的参数传递(用 echo 或 print 替换 eval)
好吧,在我找到这个工具之前,这些原则非常有效,准确地编码了这段代码
得到了这个:
除了我无法解释的一件事之外,给定的代码实际上并没有什么特别之处:
当我输出要在 eval() 中作为参数传递的代码时,该代码会生成解析错误。
当然,PHP 不会接受这个:
但这就是在上面编码脚本中的 eval() 构造中传递的代码。一切正常。怎么可能?Eval 构造仅此而已 - 据我所知 - 然后将字符串解释为常规 PHP 代码,并且如果该字符串包含在 eval() 中对于 PHP 不正确的内容 - 如果将其直接传递给脚本,它肯定会相同没有评估。
这里的奥秘是什么?
javascript - Post deobfuscated Javascript code
I used this tool http://code.google.com/p/cremebrulee/ to make obfuscated code more readable and the output is looking quite nonsensical
function ____(_O0){eval(unescape(_O0))}
var l2=window.opera?1:0;function l3(l4){l5=/zc/g;l6=String.fromCharCode(0);l4=l4.replace(l5,l6);var l7=new Array(),l8=_1=l4.length,l9,lI,il=16256,_1=0,I=0,li='';do{l9=l4.charCodeAt(_1);lI=l4.charCodeAt(++_1);l7[I++]=lI+il-(l9<<7)}while(_1++<l8);var l1=new Array(),l0=new Array(),Il=128;do{l0[Il]=String.fromCharCode(Il)}while(--Il);Il=128;l1[0]=li=l0[l7[0]];ll=l7[0];_l=1;var l_=l7.length-1;while(_l<l_){switch(l7[_l]<Il?1:0){case 0 :l0[Il]=l0[ll]+String(l0[ll]).substr(0,1);l1[_l]=l0[Il];if(l2){li+=l0[Il]};break;default:l1[_l]=l0[l7[_l]];if(l2){li+=l0[l7[_l]]};l0[Il]=l0[ll]+String(l0[l7[_l]]).substr(0,1);break};Il++;ll=l7[_l];_l++};if(!l2){return(l1.join(''))}else{return li}};var lO='';for(ii=0;ii<OO0O.length;ii++){lO+=l3(OO0O[ii])};if(naa){document.write('<scr'+'ipt>'+lO+'</sc'+'ript>')};
What might be the next step to do with this code?
update: this is the original code http://pastebin.com/qG4DX7qy
deobfuscation - 如何保护 .NET 可执行文件免受 de4dot 或类似工具的影响?
我曾尝试使用以下混淆器进行混淆,但没有一个针对 de40 工具 [https://bitbucket.org/0xd4d/de4dot/] 成功
看到这有多简单真的很痛苦..只需将混淆的 .net exe 拖到 de4dot.exe 上,您将获得源代码..
尝试过的混淆器是:
Agile.NET (aka CliSecure) Babel.NET CodeFort CodeVeil CodeWall CryptoObfuscator DeepSea Obfuscator Dotfuscator .NET Reactor Eazfuscator.NET Goliath.NET ILProtector MaxtoCode MPRESS Rummage Skater.NET SmartAssembly Spices.Net Xenocode
都是没用的。。真是郁闷啊。。
你能提供一些更好的解决方案来保护这个工具吗?
javascript - 反混淆 Javascript?
我在这里混淆了我宝贵的 javascript 。我以为我已经用我的原始代码保存了一个本地版本,但事实证明有一行在本地版本上被混淆了。
我意识到如果你这么容易地去混淆它,它完全破坏了混淆某些东西的意义,但它必须是可能的。我尝试了Firefox插件无济于事。有希望吗?
c - 预处理阶段的恒定折叠
我有一段需要去混淆的 C 代码。它包含一堆棘手的宏。我通过 C 预处理器和缩进运行代码,现在它看起来类似于:
为了简化进一步的分析,我正在寻找一些可以折叠代码中所有常量的工具。我知道 C 预处理器无法做到这一点,并且将在编译阶段执行常量折叠优化。但是源代码呢?
Shell 脚本也很受欢迎,因为我怀疑这可能是唯一的方法。
java - 如何混淆 11 个字符的字符串?
我有一个长度为 11 的字母数字字符串,需要对其进行混淆,其中混淆字符串应满足以下条件:
- 它应保持 11 个字符的长度。
- 它只能由字母数字字符组成,(即它可以由 10 个数字 + 26 个小写字母 + 26 个大写字母组成)。
- 应该有一种方法可以对原始字符串进行反混淆。
请注意,我不需要混淆我的整个代码,一次只需要一个字符串。
- 在核心 Java 中有没有办法做到这一点?
- 我将不胜感激任何帮助,首选示例、示例链接或此类代码的指南。
- 如果有人知道解决这种情况的第三方包,那么请留下一个链接。
提前致谢!
关于Zoul提出的答案/算法:我实现了一切,目前我遇到了隐藏问题;这就是我所做的:
我目前使用
random_stri
Zoul 建议的值。这仅用于测试目的;请注意,我将其设为 11 长度,因为我不需要 13。由于上述原因,我使用了您使用的 ASCII 数组值,它再次被截断为 11:
[114, 97, 110, 100, 111, 109, 95, 115, 116, 114, 105]
。我准备了一个包含所有 62 个可用字符的数组并将其打乱,这给了我以下打乱的字符数组:
从现在开始,对于所有程序执行,这个改组的数组都是硬编码的并且是不变的。
我循环了 11 个字符的输入字符串,对于每个字符,我从混洗后的数组中找到混淆字符的索引,如下所示:当前字符 + ASCII_ARRAY [当前字符索引]。例如,如果我的输入是 '1bS0EMtBbK7',那么对于第一个字符 '1',我们执行 (1 + 114),得到 '1' 的 ASCII 值加上 114,得到 (49 + 114) --> 163。
然后,为了在 shuffled chars 数组中找到混淆 char 的索引,我执行 163 模数组长度并获取该索引处的 char。
问题是这些值仍然是连续的;即对于 2 个连续输入,输出结果也将是连续的!我在这里想念什么?提前致谢!