问题标签 [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.

0 投票
2 回答
1489 浏览

java - Java 代码安全

可能重复:
您是否混淆了您的商业 Java 代码?

除了混淆之外还有其他方法可以保护罐子不被其他人打开吗?问题是我不希望任何人访问代码,这就是我不喜欢 Java 的原因。从我使用的反编译器来看,用 C# 和 Java 制作的程序具有完整的变量名称,这使得访问非免费程序变得容易。更糟糕的是,给出源代码。

0 投票
1 回答
671 浏览

javascript - UglifyJS / UglifyJS2 - 解密/还原工程结果有多难?

是否有任何可用的工具可以将优化的 blob 恢复为人类可读、易于理解的状态?

0 投票
3 回答
805 浏览

javascript - 注入网站黑客的 javascript

我的朋友 word press 网站遭到攻击,一堆 php 文件注入了一些 eval 语句,我已经对其进行了膨胀和解码​​,但它引导我进入了下面的 javascript。

任何人都知道如何去混淆它,以便我们可以阅读它所说的内容?

0 投票
3 回答
4709 浏览

php - 反混淆一些 PHP 代码

我正在尝试去混淆这个 PHP 代码:

现在通过使用PHP 格式化程序,我设法使其显示清晰。

现在我想在文件末尾的 eval 函数中查看 base64 文本。通过使用这个工具,我可以看到一些东西,但并不准确。

这就是我卡住的地方。这怎么可能被编码或压缩?

0 投票
2 回答
386 浏览

php - PHP eval() 接受 eval() 之外的解析错误。怎么可能?

我正在使用一些 PHP 混淆/编码工具,该工具无需任何服务器端加载程序即可工作,但我惊讶地发现了我无法解码的解决方案。

我认为自己通常很了解通过编码和混淆来“保护”php代码的不同解决方案,并且我知道两个基本规则:

  • 如果 PHP 可以阅读和理解您的代码,无论经过多少混淆和编码,您也可以

  • 基于使用 eval() 语言结构的编码解决方案是可破坏的,因为输出代码将作为 eval 结构中的参数传递(用 echo 或 print 替换 eval)

好吧,在我找到这个工具之前,这些原则非常有效,准确地编码了这段代码

得到了这个:

除了我无法解释的一件事之外,给定的代码实际上并没有什么特别之处:

当我输出要在 eval() 中作为参数传递的代码时,该代码会生成解析错误。

当然,PHP 不会接受这个:

但这就是在上面编码脚本中的 eval() 构造中传递的代码。一切正常。怎么可能?Eval 构造仅此而已 - 据我所知 - 然后将字符串解释为常规 PHP 代码,并且如果该字符串包含在 eval() 中对于 PHP 不正确的内容 - 如果将其直接传递给脚本,它肯定会相同没有评估。

这里的奥秘是什么?

0 投票
2 回答
428 浏览

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

0 投票
6 回答
13087 浏览

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

都是没用的。。真是郁闷啊。。

你能提供一些更好的解决方案来保护这个工具吗?

0 投票
0 回答
2636 浏览

javascript - 反混淆 Javascript?

我在这里混淆了我宝贵的 javascript 。我以为我已经用我的原始代码保存了一个本地版本,但事实证明有一行在本地版本上被混淆了。

我意识到如果你这么容易地去混淆它,它完全破坏了混淆某些东西的意义,但它必须是可能的。我尝试了Firefox插件无济于事。有希望吗?

0 投票
1 回答
355 浏览

c - 预处理阶段的恒定折叠

我有一段需要去混淆的 C 代码。它包含一堆棘手的宏。我通过 C 预处理器和缩进运行代码,现在它看起来类似于:

为了简化进一步的分析,我正在寻找一些可以折叠代码中所有常量的工具。我知道 C 预处理器无法做到这一点,并且将在编译阶段执行常量折叠优化。但是源代码呢?

Shell 脚本也很受欢迎,因为我怀疑这可能是唯一的方法。

0 投票
2 回答
2805 浏览

java - 如何混淆 11 个字符的字符串?

我有一个长度为 11 的字母数字字符串,需要对其进行混淆,其中混淆字符串应满足以下条件:
- 它应保持 11 个字符的长度。
- 它只能由字母数字字符组成,(即它可以由 10 个数字 + 26 个小写字母 + 26 个大写字母组成)。
- 应该有一种方法可以对原始字符串进行反混淆。

请注意,我不需要混淆我的整个代码,一次只需要一个字符串。
- 在核心 Java 中有没有办法做到这一点?
- 我将不胜感激任何帮助,首选示例、示例链接或此类代码的指南。
- 如果有人知道解决这种情况的第三方包,那么请留下一个链接。

提前致谢!


关于Zoul提出的答案/算法:我实现了一切,目前我遇到了隐藏问题;这就是我所做的:

  • 我目前使用random_striZoul 建议的值。这仅用于测试目的;请注意,我将其设为 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 个连续输入,输出结果也将是连续的!我在这里想念什么?提前致谢!