逆向工程代码

时间:2018-04-10 12:48:02

标签: c++ reverse-engineering

我正在进行一项任务,我必须编写一个代码来解密给我的文本文件。我只是坚持如何对加密代码进行反向工程,如下所示:

char decode(char aChar)
{
  int result = 1 + (rand() % 127);
  result = aChar - result;

  if (result < 0)
  {
    result = result - 128;
  }
  return result;
}

我的代码有效,但是当我运行该程序时,它会加密已加密的文本文件。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

您需要知道如何生成随机数。

假设它是使用srand()使用这样的常量种子生成的:

unsigned int seed = 1;
srand(seed);

然后解密代码可能是这样的:

char decrypt(char aChar)
{
  srand(seed);
  int result = 1 + (rand() % 127);

  if (aChar + 128 < 0)
        aChar = aChar + 128;

   aChar = aChar + result;

  return aChar;
}

请注意,这不一定100%有效,因为if函数中的decode语句使得解密所有字符变得困难,因为它可能会生成需要更多工作的可能结果。