【问题标题】:How can I understand the encryption method for this code?我如何理解此代码的加密方法?
【发布时间】:2019-09-17 15:46:29
【问题描述】:

有人要求我的客户在他们的服务器上执行脚本。尽管此人是受信任的,但他们试图隐藏脚本实际在做什么。这可能是 Python、Bash 或 Ruby 脚本。以下是前几行:

ELF����������>����¯&@�����@�������������������@�8��@���������������������@�������@�����‚.������‚.�������� �����������0������0å`�����0å`����������������������������QÂtd��������������������������������������������������ò¶l?���!Ù
����Pë��Pë��8��¿������˚˚!ˇELF��>�
@@ªdø�êâ"8�›≤Óª ��'@‰Ñ<!¯��‰{õÓ8
@ôê'��|`{oçLO�~…∂Ñ� 7´]œN»˜
`†7@.wr!^$ÉM»`fl§õ2T@ôê'D��PÂÚΩfltd¨E
@‰gK»�7Qßg∞#∞�oRf  ø��ÄÑá@��ˇM��w��I�€ª˝/lib64d-nux-x86-.˜¶€˛so.2���GNU��öœ4› ˜ˇˇAÙ6«[9ÅGüa¢ÂH#∞   ÔÌ/ÿ8C7à¡ 
@ˇˇo∫:=BE’Ϫ„í|∏çÒ8ÚãŸqX∞n ˚ΔÔ��™PÑ] ≈�˙/!Ï9ne_¬Üê›uGçê!lÛ¬ÜÃèñÜ∞!l//fßÏd¬èΩõ¬Üê!F∞/rl_
!C»±£»6ÑwD_ÜB.êCÅS!l!/\ á∞/ïîß2Ñào6Ñ`G(K_aC»m/6Ñ
YwY_
........................

如何确定此文件的加密方法?即使提供者是受信任的,我也想在建议客户执行它之前对其进行解码。客户想确切地知道这个脚本做了什么。在不知道加密方法的情况下,我们无法对其进行解码,并且提供者不愿意共享加密方法。

【问题讨论】:

  • @Yunnosch 是的,我不知道这个脚本使用什么编程语言。它用于激活提供商的许可证,但这听起来很奇怪。我只想知道这里的编码方式。
  • 你为什么认为这是加密的(它看起来并不特别加密)。你为什么认为它是用脚本语言而不是 C++ 编写的。这对于任何编译语言来说都是合理的输出。 (它也可以是一个脚本,封装在一种编译语言中。它可以是任何东西,它几乎可以做任何事情。)
  • @RobNapier 在这种情况下请原谅我。我只知道 bash、PHP、Python 和 JavaScript。在 PHP 中,我发现加密的代码是这样的。这就是我发布这个问题的原因。我对编译语言一无所知。
  • 这绝对不是在任何情况下加密的(如果是,你需要提供一个解密密钥来运行它)。充其量它被混淆了(即解密逻辑在可执行文件内)。对混淆方案进行逆向工程超出了 StackOverflow 的范围(鉴于您提供的输出,这是不可能的)。我会预算几十到几千美元来聘请某人去混淆这一点。 (我不会特别建议这样做;我建议双方通过谈判解决这个问题。)
  • 前 3 个字符是 ELF。这是 Linux 上二进制可执行程序的标准格式。

标签: bash shell encryption decode encode


【解决方案1】:

这是一个 ELF 格式的可执行文件。 “ELF”字符是赠品。

没有明显迹象表明它已加密。事实上,我可以看到作为文本有意义的字符序列。 (这些将是嵌入在可执行文件中的字符串。)

无法完全加密 ELF 可执行文件。如果已使用加密,则可执行文件将包含(机器)指令,告诉您的计算机如何解密。

客户想确切地知道这个脚本做了什么。

我会首先使用 (Linux) file 命令来确认文件类型,然后寻找一个可以让您反汇编或反编译可执行文件的工具。

我只知道 bash、PHP、Python 和 JavaScript。

那么您可能不具备回答客户问题的技能。这将需要汇编语言(可能适用于 Intel x86 或 x86-64)以及可能的 C 或 C++(如果您能找到适用于此代码的反编译器)的技能。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-27
    • 1970-01-01
    • 2019-07-27
    • 2017-11-13
    • 1970-01-01
    • 2014-03-21
    • 2014-10-16
    相关资源
    最近更新 更多