我正在尝试分析我正在逆向工程的解密算法,并且想知道是否有人会通过查看逻辑来识别人们使用的标准/通用密码之一。
我从对这些函数的调用中提取的解密代码本质上都非常相似(它们总共有大约 50 个相互调用的函数),它们都由一系列 while 循环、if 语句和非常长的 switch/case 语句,它们似乎分析了一个位置的每个位置或字节值,并决定了一个动作过程以从中生成输出。
其中一些函数的长度为 11-30k 行,这让我想知道这是否是原始代码的构建方式,或者这是否可能是编译器优化处理,将原始逻辑扩展到如此多的行。
以下是其中 2 个函数的摘录:https : //gist.github.com/robertoandrade/ac3a810b82ba48d3b136
我重命名它们只是为了便于识别,并且都具有相似的签名:(int ____________________switch_magic后跟一个数字只是为了帮助计算其中存在的数量)。
PS:我在尝试逆向工程的一系列应用程序中发现了相同的逻辑,因此我假设这是某种常见的算法,我无法通过查看混淆的反编译代码来识别。