反汇编以识别加密算法

pat*_*141 4 encryption reverse-engineering disassembly

目标(常规) 我的最终(长期)目标是将二进制文件的导入程序编写到另一个应用程序中

问题背景

  • 我对二进制文件格式中的两个字段感兴趣.一个是加密的,另一种是压缩的,可能也是加密的(见我的这个结论是如何到达这里).
  • 我有一个查看器程序(我称之为viewer.exe),可以打开这些文件进行查看.我希望这可以提供一些线索.
  • 我(很快)将有一个相关的解密输出进行比较,并有值搜索.
  • 这是我发现的最相关的stackoverflow Q/A.

问题具体
考虑到我必须确定所使用算法的资源,最佳策略是什么?

目前的想法

  • 我意识到,如果没有密钥,从数据中识别算法实际上是不可能的

  • 拥有一个文件和一个viewer.exe,我必须在某处拥有密钥.无论是公共的,私人的,对称的......这都很好.

  • 我想用findlypt插件作为第一步,使用OllyDbg反汇编viewer.exe.我只是不够精通这种事情来完成它.

资源
完整示例文件从字段中
提取二进制文件我对
解密数据感兴趣 在此zip存档中有一个浮点数的二进制列表,表示x,y,z(model2.vertices)和二进制整数列表(model2.faces).我还包含了一个"stl"文件,您可以使用许多免费程序查看,但由于数据存储在STL中的奇怪方式,这不是我们期望从原始文件中获得的.

进展
1.我用Olly反汇编程序,然后做了我唯一知道如何处理这个poing并且在导入文件之前暂停了porgram之后"搜索了所有引用的文本".然后我搜索了诸如"crypt,hash,AES,encrypt,SHA等"之类的单词.我想出了一些东西,最值得注意的是"Blowfish64",这似乎与mydata偶尔长度为4个字节的事实很好(因为它保证是mod 12 = 0)这对我来说看起来像填充64位块大小(奇数量的顶点导致非mod 8字节量).我还发现错误消息,如...

"无效的数据大小,(Size-4)mod 8必须为0"

在阅读了下面的Igor的回复之后,这是来自signsrch的输出.我用绿点更新了这个图像,当用int3替换时没有问题,如果程序无法启动则没有问题,如果在加载感兴趣的文件时失败则为橙色.没有点意味着我还没有测试过它.

Signsrch结果注释

配件信息

  • 我使用Windows 7 64位
  • viewer.exe是win32 x86应用程序
  • 数据是base64编码和加密的
  • 解密数据是12个字节的组,代表3个浮点数(x,y,z坐标)
  • 我有使用findcrypt插件的OllyDb v1.1,但我的用法仅限于跟随这些人youtube视频

Igo*_*sky 8

许多加密算法使用非常特定的常量来初始化加密状态.您可以使用signsrch等程序检查二进制文件是否包含它们.如果你得到任何似乎合理的命中,打开IDA中的文件并搜索常量(Alt-B(二进制搜索)在这里会有帮助),然后按照交叉引用尝试识别使用的密钥.