如何识别汇编中的base64编码/解码

逆向工程 艾达 部件 ida插件
2021-06-30 10:32:18

如何使用 Ida 识别汇编 base 64 编码/解码。有什么神奇的常数可以搜索吗?或者也许是找到那个的插件?

FindCrypt2 Ida插件没有找到

2个回答

公共 base64 密钥包含ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/. 但是,请记住,IDA Pro 会为您转换 ASCII 文本,因此您没有理由以十六进制查看文件的原始字节。事实上,即使是 HxD 或 010 Editor 等十六进制编辑器也会将字符串数据从十六进制字节转换为字符并显示在屏幕右侧。见下面这个键的 010 Editor 中的一个例子:

010 Editor Base64 二进制密钥

在 IDA Pro IDA View 窗口中查看段:

IDA Pro Base64 密钥

IDA Pro Strings 窗口(可以在此处使用 Ctrl+F): IDA Pro base64 键字符串窗口

不过,如果您需要查找常量,请使用ASCII 表并手动将上述字符串转换为字节。EG 'A' 是 41h,'B' 是 42h,所以如果我们要寻找 AB,我们将寻找 41 42。不要忘记考虑您正在使用的软件系统的目标架构的字节序与之合作;如果字节以文件格式的 little endian 存储在磁盘上,则 base64 密钥的字节将向后编码,您将需要搜索它。

这里需要注意的是,上述 Base64 密钥是标准Base64 密钥。您可能需要搜索修改后的 Base64 键,这意味着ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/我们有类似FGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/ABCDE. 您可以看到,使用这个修改过的 Base64 密钥,我们只是将密钥向左旋转了 5 次,这样如果解码算法尝试将其解码为标准 Base64,它就不会起作用。

其中一个方法,我教(见第1天第11部分),以找到一个base64字母表是查找的64个字节与序列信息熵的6(在1-8的范围)。请注意,除了 Base64 字母表外,还会发现其他高熵数据,例如压缩或加密的代码或字符串,以及加密常量。

对于标准 Base64 字母表,使用 IDA,按 alt-B,然后输入(包括双引号)“ABCDEFGHIJKLMNOPQRSTUV”或标准字母表的其他一些子集。我还建议选择“全部查找”选项,这样可以更轻松地查看和跳过错误匹配。