基础知识常见算法识别

特征值识别

很多常见的算法,如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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/410751.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Web3的奇迹:数字世界的新篇章

在数字化时代的潮流中&#xff0c;Web3正以其令人振奋的潜力和前景引领着我们进入一个全新的数字时代。作为互联网的下一代&#xff0c;Web3将重新定义我们对数字世界的认知和体验&#xff0c;为我们带来无限的可能性和奇迹。本文将深入探讨Web3的重要性、核心特征以及未来展望…

智能美颜引领短视频创作风潮:探秘美颜SDK技术背后的创新

美颜技术不仅改善了用户的拍摄体验&#xff0c;还推动了短视频创作的风潮。本文将深入探讨智能美颜在短视频创作中的应用&#xff0c;以及美颜SDK技术背后的创新。 一、短视频时代的美颜潮流 随着短视频应用的普及&#xff0c;用户对于视频质量的要求也越来越高。然而&#…

精品springboot科研项目工作量管理系统的设计与实现

《[含文档PPT源码等]精品基于springboot科研工作量管理系统的设计与实现[包运行成功]》该项目含有源码、文档、PPT、配套开发软件、软件安装教程、项目发布教程、包运行成功&#xff01; 软件开发环境及开发工具&#xff1a; Java——涉及技术&#xff1a; 前端使用技术&…

Wagtail安装运行并结合内网穿透实现公网访问本地网站界面

文章目录 前言1. 安装并运行Wagtail1.1 创建并激活虚拟环境 2. 安装cpolar内网穿透工具3. 实现Wagtail公网访问4. 固定的Wagtail公网地址 正文开始前给大家推荐个网站&#xff0c;前些天发现了一个巨牛的 人工智能学习网站&#xff0c; 通俗易懂&#xff0c;风趣幽默&#xf…

c# 异常处理

异常类 .NET Framework 类库中的所有异常都派生于 Exception 类&#xff0c;异常包括系统异常和应用异常。 默认所有系统异常派生于 System.SystemException&#xff0c;所有的应用程序异常派生于 System.ApplicationException。 系统异常一般不可预测&#xff0c;比如内存堆…

RabbitMQ 面试八股题整理

前言&#xff1a;本文是博主网络自行收集的一些RabbitMQ相关八股文&#xff0c;还在准备暑期实习&#xff0c;后续应该会持续更新...... 参考&#xff1a;三天吃透RabbitMQ面试八股文_牛客网 目录 RabbitMQ概述 什么是 RabbitMQ&#xff1f; 说一说RabbitMQ中的AMQP 为什么…

rancher change domain name 【rancher 更改域名】

文章目录 1. 预备条件2. 准备全部集群的直连 kubeconfig 配置文件3. 准备证书4. 更新证书4.1 Rancher 单节点运行&#xff08;默认容器自动生成自签名 SSL 证书&#xff09;#4.2 Rancher 单节点运行&#xff08;外置自签名 SSL 证书&#xff09;#4.3 Rancher HA 5. 修改 Ranche…

前端解析后端返回文件流格式数据

当后端接口返回数据是一个文件流数据时&#xff0c;如下后端返回给我的是一个pdf文件流数据 methods: {gotoPri() {protocolApi().then(res > {this.createPdf(res.data,XXX协议)})},createPdf(res, name) {// Blob构造函数返回一个新的 Blob 对象并指定type类型。let blob …

Vue.js+SpringBoot开发智能停车场管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、研究内容A. 车主端功能B. 停车工作人员功能C. 系统管理员功能1. 停车位模块2. 车辆模块3. 停车记录模块4. IC卡模块5. IC卡挂失模块 三、界面展示3.1 登录注册3.2 车辆模块3.3 停车位模块3.4 停车数据模块3.5 IC卡档案模块3.6 IC卡挂…

Pytorch学习(杂知识)

目录 Mini-batch 魔法函数 DataLoader与DataSet transformers的简介 torchvision简介 torch.no_grad() Softmax ReLu 随机梯度下降&#xff08;Stochastic Gradient Descent&#xff0c;SGD&#xff09; torch.nn.CrossEntropyLoss()&#xff0c;交叉损失函数 Tenso…

掌握C语言指针,轻松解锁代码高效性与灵活性

1. 指针与地址 1.1 概念 我们都知道计算机的数据必须存储在内存里&#xff0c;为了正确地访问这些数据&#xff0c;必须为每个数据都编上号码&#xff0c;就像门牌号、身份证号一样&#xff0c;每个编号是唯一的&#xff0c;根据编号可以准确地找到某个数据。而这些编号我们就…

申创贝拓电气设备邀您参观2024生物发酵展

参展企业介绍 BETTO贝拓电气成立于2017年&#xff0c;初期总部坐落于安徽合肥&#xff0c;从事工业电控机柜的设计和销售工作。2022年总部迁往上海&#xff0c;有了自己的制造基地&#xff0c;涉及制造和销售工业控制柜、操作台、IT机柜、户外机柜、人机界面、悬臂、电气安装成…

怎么把pdf转换成word?

怎么把pdf转换成word&#xff1f;Pdf和word在电脑上的使用非常广泛&#xff0c;pdf和word分别是由 Adobe和Microsoft 分别开发的电脑文件格式。PDF 文件可以在不同操作系统和设备上保持一致的显示效果&#xff0c;无论是在 Windows、Mac 还是移动设备上查看&#xff0c;都能保持…

车载测试面试:题库+项目

车载测试如何面试&#xff08;面试技巧&#xff09;https://blog.csdn.net/2301_79031315/article/details/136229809 入职车载测试常见面试题(附答案&#xff09;https://blog.csdn.net/2301_79031315/article/details/136229946 各大车企面试题汇总&#xff08;含答案&am…

基于R语言的Meta分析【全流程、不确定性分析】方法与Meta机器学习技术应用

Meta分析是针对某一科研问题&#xff0c;根据明确的搜索策略、选择筛选文献标准、采用严格的评价方法&#xff0c;对来源不同的研究成果进行收集、合并及定量统计分析的方法&#xff0c;最早出现于“循证医学”&#xff0c;现已广泛应用于农林生态&#xff0c;资源环境等方面。…

tigramite教程(一)解释与假定或发现的因果模型相关的关联

文章目录 0、生成一些具有同时依赖关系的示例过程1、估计&#xff08;马尔可夫等价类的&#xff09;因果图2、如果马尔可夫等价类有多个成员&#xff08;存在未定向的边&#xff09;&#xff0c;选择类的一个成员&#xff0c;这可以自动完成3、对从图中提取的因果父节点进行线性…

跨端轻量JavaScript引擎的实现与探索

一、JavaScript 1.JavaScript语言 JavaScript是ECMAScript的实现,由ECMA 39(欧洲计算机制造商协会39号技术委员会)负责制定ECMAScript标准。 ECMAScript发展史: 时间版本说明1997年7月ES1.0 发布当年7月&#xff0c;ECMA262 标准出台1998年6月ES2.0 发布该版本修改完全符合…

cgroup底层技术研究一、cgroup简介与cgroup命令行工具

本文参考以下文章&#xff1a; 58 | cgroup技术&#xff1a;内部创业公司应该独立核算成本 特此致谢&#xff01; 一、cgroup简介 1. cgroup是什么 cgroup&#xff08;Control Group&#xff09;是Linux内核提供的一种机制&#xff0c;用于对进程或进程组进行资源限制、优先…

IDA使用-2023CICSN华中赛区pwn题逆向为例

文章目录 相关字节标识导入函数和导出函数找程序入口函数选项设置重命名CISCN2023华中赛区分区赛AWDIDA源码main 构造结构体sub_141B() 打开局部变量类型的视图增加变量类型重新定义变量类型再次设置变量类型并重新定义再次设置变量类型并重新定义再次设置变量类型并重新定义 设…

项目实战:Qt监测操作系统cpu温度v1.1.0(支持windows、linux、国产麒麟系统)

若该文为原创文章&#xff0c;转载请注明出处 本文章博客地址&#xff1a;https://hpzwl.blog.csdn.net/article/details/136277231 红胖子(红模仿)的博文大全&#xff1a;开发技术集合&#xff08;包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬结…