基础知识常见算法识别

特征值识别

很多常见的算法,如AES、DES等,在运算过程中会使用一些常量,而为了提高运算效率,这些常量往往被硬编码在程序中

通过识别这些特征值,可以对算法进行一个大致判断

算法特征值(无特殊说明为十六进制)(备注)
TEA系列9e377b9(Delta值)
AES63 7c 77 7b f2 6b 6f c5 …(S盒)
AES52 09 6a d5 30 36 a5 38…(逆S盒)
DES3a 32 2a 22 1a 12 0a 02…(置换表)
DES39 31 29 21 19 11 09 01…(密钥变换数组PC-1)
DES0e 11 0b 18 01 05 03 1c…(密钥变换数组PC-2)
DES0e 04 0d 01 02 0f 0b 08…(S函数表格1)
BlowFish243f6a88 85a308d3 13198a2e 0370734(P数组)
MD567452301 efcdab89 98bbadcfe 10325476(寄存器初始值)
MD5d76aa478 e8c7bb756 24070db c1bdceee…(Ti数组常量)
SHA167452301 efcdab89 98badcfe 10325476 c3d2e1f0(寄存器初始值)
CRC3200000000 77073096 ee0e612c 990951ba(CRC表)
Base64字符串”ABCDEFGHIJKLMNNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"(字符串表)

通过这种简单的识别法,许多开发者为各种分析工具开发了常量查找插件,如IDA的FindCypt、PEiD的KANAL等
在IDA中,FindCrypt、PEiD和KANAL都是用于分析PE文件的插件。

FindCrypt插件可以识别PE文件中的加密算法。它可以识别多种常见的加密算法,包括RSA、AES、DES、RC4等。FindCrypt还可以识别一些自定义的加密算法。

PEiD插件可以显示PE文件的各种信息,包括文件头、节表、导入表、导出表等。PEiD还可以识别一些常见的PE文件保护技术,如壳、混淆等。

KANAL插件是PEiD的一个插件,用于分析PE文件中的加密算法。KANAL可以识别多种常见的加密算法,包括RSA、AES、DES、RC4等。KANAL还可以识别一些自定义的加密算法。

以下是这三个插件在IDA中的具体功能比较:

插件功能
FindCrypt识别PE文件中的加密算法
PEiD显示PE文件的各种信息,识别PE文件保护技术
KANAL分析PE文件中的加密算法

以下是这三个插件在IDA中的使用方法:

FindCrypt

  1. 在IDA中打开要分析的PE文件。
  2. 点击“Plugins”菜单,选择“FindCrypt”。
  3. FindCrypt会显示PE文件中找到的加密算法。

PEiD

  1. 在IDA中打开要分析的PE文件。
  2. 点击“Plugins”菜单,选择“PEiD”。
  3. PEiD会显示PE文件的各种信息。

KANAL

  1. 在IDA中打开要分析的PE文件。
  2. 点击“Plugins”菜单,选择“Krypto ANALyzer”。
  3. KANAL会显示PE文件中的加密算法。

使用注意事项

  • 这三个插件都是免费的,可以从网上下载
  • 这三个插件的使用方法比较简单,可以参考官方文档
  • 这三个插件只能识别已知的加密算法,对于未知的加密算法,这三个插件可能无法识别

除了上述功能之外,这三个插件在IDA中还有一些其他的功能:

  • FindCrypt插件可以将找到的加密算法添加到IDA的数据库中,方便以后的分析
  • PEiD插件可以将PE文件的信息导出到文本文件或HTML文件
  • KANAL插件可以将PE文件中的加密算法导出到文本文件或HTML文件

特征运算识别

当特征值不足以识别出算法时,深入二进制文件内部,通过分析程序是否使用了某些特征运算来推测程序是否使用了某些算法

算法特征运算(伪代码)(说明)
RC4i=(i+1)%256;j=(j+s[i])%256;swap(s[i],s[j]) ;t=(s[i]+s[j]%256; (密钥流生成)
RC4j=(j+s[i]+k[i])%256;swap(s[i],s[j]);循环256次(S盒变换)
Base64b1=c1>>2;b2=((c1&0x3)<<4)非c2>>4);b3=((c2&0xf)<<2)非(c3>>6);b4=c3&0x3f;(8位变6位)
TEA系列((x<<4)+kx)^ (y+sum) ^ ((y>>5)+ky)(轮函数)
MD5(X&Y)非((~X)&Z)(F函数) (X&Z)非(Y&( ~ Z))(G函数) X ^Y ^Z (H函数) Y ^(X非( ~ Z))(I函数)
AESx[j]=si%4] 循环4次 s[i][j]=x[j] 循环4次 整体循环4次(行位移)
DESL=R R=F(R,K)^ L(Feistel结构)

第三方库识别

为了提高编程效率,对于一些常用的算法,可以使用现成的库

对于动态链接库,函数名的符号信息可以被轻易地识别

而对于静态链接的第三方库来说,识别这些信息则比较困难

IDA识别第三方库

1.字符串识别
很多第三方库会将版本信息和该库使用的其他字符串(如报错信息等)以字符串的形式写入库中

在静态编译时,这些字符串会被一并放入二进制文件

通过寻找这些字符串,可以快速判断使用了哪些第三方库

2.函数签名识别

有时,确定了程序所使用的库后,还需要进一步识别具体的函数

之前简单介绍了如何使用IDA的签名识别功能识别C语言运行的函数库,实际上这个功能不仅能对C语言的运行库进行识别,IDA也可以通过对签名库快速匹配函数名,参数信息

IDA中自带了除C语言运行库外的常见库的签名文件

在IDA文件菜单中选择”Load File ->FLIRT Signature file"

在这里插入图片描述
如果IDA没有预置需要识别的库函数签名,那么可以在网上查找,如https://github.com/push0ebp/sig-database
https://github.com/Maktm/FLIRTDB

3.二进制比对识别
由于编译环境等各种情况的差异,签名有时无法完全匹配库函数

即使编译环境有一定区别,使用同一个库编译的二进制文件中的库函数也会存在许多相同之处

如果能够确定程序编写者使用了某个已知的库,并且我们能够获得一份含有符号且同样使用了该库的静态编译二进制文件,便可以利用二进制对比的方法来具体地确定每个函数

二进制对比得得常用工具是BinDiffhttps://www.zynamics.com/bindiff.html

这个没搞懂
这个工具bindiff

  • 9
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
根据提供的引用内容,图像识别算法工程师面试题可能涉及以下几个方面: 1. 图像处理和计算机视觉基础知识:面试官可能会问到图像处理和计算机视觉的基本概念、常用算法和技术,例如图像滤波、边缘检测、特征提取等。 2. 目标检测和识别算法:面试官可能会询问你对目标检测和识别算法的了解,例如常用的目标检测算法(如RCNN、YOLO等)和人脸识别算法(如Eigenfaces、LBPH等)。 3. 深度学习和神经网络:面试官可能会问到深度学习和神经网络在图像识别中的应用,例如卷积神经网络(CNN)的原理和常见的网络架构(如AlexNet、VGG、ResNet等)。 4. 数据集和评估指标:面试官可能会询问你在图像识别任务中使用过的数据集和评估指标,例如常用的图像数据集(如ImageNet、COCO等)和评估指标(如准确率、召回率、F1-score等)。 5. 实际项目经验:面试官可能会要求你分享你在图像识别算法方面的实际项目经验,例如你在某个项目中使用了哪些算法和技术,遇到了哪些挑战,如何解决等。 以下是一个范例回答: 图像识别算法工程师面试题通常涉及以下几个方面: 1. 图像处理和计算机视觉基础知识:了解图像处理和计算机视觉的基本概念和常用算法,如图像滤波、边缘检测、特征提取等。 2. 目标检测和识别算法:熟悉常用的目标检测算法,如RCNN、YOLO等,以及人脸识别算法,如Eigenfaces、LBPH等。 3. 深度学习和神经网络:了解深度学习和神经网络在图像识别中的应用,如卷积神经网络(CNN)的原理和常见的网络架构,如AlexNet、VGG、ResNet等。 4. 数据集和评估指标:熟悉常用的图像数据集,如ImageNet、COCO等,以及评估指标,如准确率、召回率、F1-score等。 5. 实际项目经验:分享在图像识别算法方面的实际项目经验,包括使用的算法和技术,遇到的挑战以及解决方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Back~~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值