CANdela/Diva系列8--如何生成0x27服务解锁的DLL

news2024/12/27 16:21:33

本系列的上一篇文章中,我们介绍了如何在CDD文件中去根据客户需求来配置诊断服务,其实每个诊断服务的配置方式都是大同小异,但是0x27服务略有不同,为了能够让CDD文件根据ECU返回的种子去自动计算出密钥,需要添加一个解锁相关的DLL文件,这篇文章就给大家介绍一下解锁的DLL是怎么生成的,Let's Go!!!

目录

1. 获取Security算法编辑工程:

2. 编辑算法:

2.1 更新解锁函数:

2.2 编译DLL:

后言:


1. 获取Security算法编辑工程:

如果你安装了CANDiva的安装包,那么你可以通过如下的路径来获取:"C:\Users\Public\Documents\Vector\CANoe.DiVa\15.0\SeedKey"

如果你没有安装过CANDiva,也可以通过如下的路径来获取:"C:\Users\Public\Documents\Vector\CANoe\Sample Configurations 11.0.81\CAN\Diagnostics\UDSSystem\SecurityAccess\Sources"

然后将上述的文件夹copy出来,放到你的工作目录,然后再用Visual Studio来打开这个工程。

注意:KeyGenDll_GenerateKeyEx 和 KeyGenDll_GenerateKeyExOpt 两个工程都可以用来制作dll文件,分别提供 GenerateKeyEx 和 GenerateKeyExOpt 接口。其中 GenerateKeyExOpt 多一个传入参数,普通应用并不需要。

2. 编辑算法:

打开工程后如下所示:

2.1 更新解锁函数:

我们需要做的只是根据解锁算法的文档来更新解锁函数,如下例所示:

KEYGENALGO_API VKeyGenResultEx GenerateKeyEx(
      const unsigned char*  iSeedArray,     /* Array for the seed [in] */
      unsigned int          iSeedArraySize, /* Length of the array for the seed [in] */
      const unsigned int    iSecurityLevel, /* Security level [in] */
      const char*           iVariant,       /* Name of the active variant [in] */
      unsigned char*        ioKeyArray,     /* Array for the key [in, out] */
      unsigned int          iKeyArraySize,  /* Maximum length of the array for the key [in] */
      unsigned int&         oSize           /* Length of the key [out] */
      )
{
    unsigned long key32 = 0x0;
    key32 = ((iSeedArray[0] * 0x1000000) | (iSeedArray[1] * 0x10000) | (iSeedArray[2] * 0x100) | iSeedArray[3]);
    key32 = ~key32 + 0x47414549;
    ioKeyArray[0] = (key32 & 0xFF000000) >> 24;
    ioKeyArray[1] = (key32 & 0x00FF0000) >> 16;
    ioKeyArray[2] = (key32 & 0x0000FF00) >> 8;
    ioKeyArray[3] = key32 & 0x000000FF;
    iKeyArraySize = 4;
    oSize = 4;

    return KGRE_Ok;
}

上述代码中的定义变量含义如下所示:

  • iSeedArray: ECU返回的种子数组
  • iSeedArraySize:ECU返回的种子数组最大长度
  • iSecurityLevel:要解锁的级别(01、03、05、11等)
  • iVariant:ECU变体限定符
  • ioKeyArray:Tester返回计算出的密钥
  • iKeyArraySize:Tester返回计算出的密钥最大长度
  • oSize:计算出密钥的字节数(这个密钥的字节数一定要与实际需求的密钥的字节数长度保持一致,不然解锁自动发送出去的密钥会根据oSize的值来发送密钥长度

2.2 编译DLL:

编辑完解锁函数后,我们要开始编译DLL了:

首先在配置中选择“Debug”,"x86", 然后在右侧的工程名出右击,选择“Build”,最后在Output窗口检测编译结果:

“1 succeeded”表示编译成功,最后我们可以在工程目录下的“Debug”文件夹中找到生成的DLL文件了:

这样我们就有解锁算法的DLL可以使用了。

通过前面的介绍和本篇文章的介绍,我们的CDD文件就准备完毕了,接下来就要开始在CANoe工程中添加CDD文件,开始应用CDD了。敬请期待!!!

后言:

本人有CANdelaStudio Admin的license,最高支持CANdela V15的版本,支持CDD文件的定制化服务!!!

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

流域碳中和技术

随着全球气候变化的加剧,碳中和已成为实现可持续发展的重要目标之一。碳中和不仅仅是能源和工业领域的调整,它涉及整个生态系统的转型与再生。在这一过程中,流域的生态系统作为水、土、生物多样性等自然资源的集成体,扮演着至关重…

解密.baxia勒索病毒:.baxia勒索病毒的攻击手法及防护建议

导言 在当前网络安全形势日益严峻的背景下,勒索软件的威胁正不断升级,其中.baxia勒索病毒尤为突出。作为一种新型恶意软件,.baxia病毒通过加密用户的文件并要求支付赎金来获取解密密钥,对个人和企业的安全构成了严重威胁。随着其…

【LLM多模态】视频理解模型Cogvlm-video和MVBench评测基准

note Cogvlm-video模型通过视频抽帧(24帧,每帧大小为224 x 224)后经过ViT进行图像编码(ViT中添加了2x2的卷积核更好的压缩视觉信息),使用adapter模块更好的将视觉特征和文本特征对齐,得到的图像…

基于WebServer的工业数据采集系统

一、项目框架及流程 二、http简介 HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于Web Browser(浏览器)到Web Server(服务器)进行数据交互的传输协议。 HTTP是应用层协…

poi生成的ppt,powerPoint打开提示内容错误解决方案

poi生成的ppt,powerPoint打开提示内容错误解决方案 最近做了ppt的生成,使用poi制作ppt,出现一个问题。微软的powerPoint打不开,提示错误信息 通过xml对比工具发现只需要删除幻灯片的某些标签即可解决。 用的是XML Notepand 分…

ai写论文哪个平台好?7款AI写论文软件帮你撰写论文

在当今学术研究和写作领域,AI论文写作工具的出现极大地提高了写作效率和质量。这些工具不仅能够帮助研究人员快速生成论文草稿,还能进行内容优化、查重和排版等操作。以下是七款推荐的AI写论文软件,其中特别推荐千笔-AIPassPaper。 一、千笔…

Java集合(Map篇)

一.Map a.使用Map i.键值(key-value)映射表的数据结构,能高效通过key快速查找value(元素)。 ii.Map是一个接口,最常用的实现类是HashMap。 iii.重复放入k-v不会有问题,但是一个…

盈科巴黎办公室开业典礼暨盈科全球一小时法律服务生态圈·法国中心揭牌仪式圆满举办

国际化建设是盈科律师事务所发展的重要战略目标之一,随着中国对外投资、跨境贸易、“一带一路”高质量共建等迅速发展,越来越多中国企业和公民“走出去”,寻找海外市场。今年是中法建交60周年。建交以来,中法坚持做真诚的朋友、共…

【Java】JVM基本组成

一、JDK、JRE、JVM JDK:全称 “Java Development Kit” Java 开发工具包,提供 javac编译器、jheap、jconsole 等监控工具; JRE:全称 “Java Runtime Environment” Java 运行环境,提供 class Library 核心类库JVM; …

文件服务器FastDFS 消息队列中间件RabbitMQ

新标签页 (chinaunix.net) FastDFS - Browse Files at SourceForge.net 一、FastDFS Tracker和Storage: tracker用来管理所有的storage,只是管理服务器,负责负载均衡。 storage是存储服务器,每一个storage服务器都是一个单独的个…

计算机毕业设计之:基于微信小程序的疫苗预约系统的设计与实现(源码+文档+讲解)

博主介绍: ✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台…

Shiro rememberMe反序列化漏洞(Shiro-550)

开启环境抓包验证Shiro框架 使⽤BurpSuite进⾏抓包,在请求包中的cookie字段中添加 rememberMe123; ,看响应包 header中是否返回 rememberMedeleteMe 值,若有,则证明该系统使⽤了Shiro框架: 使用工具爆破密钥爆破利用…

论文大杀器!分享4款ai论文写作工具软件

在当今学术研究和论文写作领域,AI技术的应用已经变得越来越普遍。这些工具不仅能够提高写作效率,还能帮助研究人员生成高质量的论文内容。本文将重点介绍四款优秀的AI论文写作工具,并特别推荐千笔-AIPassPaper。 一、千笔-AIPassPaper 传送门…

2024寻找那些能精准修改PDF内容的工具

如今,我们使用 PDF 文档的频率不断攀升,很多时候收到的表格等资料都是 PDF 格式。若先进行格式转换后编辑,再转换回 PDF 格式,着实有些麻烦。那么,pdf怎么编辑修改内容呢?在这篇文章中,我将为大…

python爬虫案例——抓取链家租房信息

文章目录 1、任务目标2、分析网页3、编写代码1、任务目标 目标站点:链家租房版块(https://bj.lianjia.com/zufang/) 要求:抓取该链接下前5页所有的租房信息,包括:标题、详情信息、详情链接、价格 如: 2、分析网页 用浏览器打开链接,按F12或右键检查,进入开发者模式;因…

防火墙--NAT技术,基于源NAT,NAT服务器,双向NAT

文章目录 防火墙--NAT技术一、基于源NAT**方式**:NAT No-PATNAPT出接口地址方式Smart NAT三元组 NAT 二、基于服务器的NAT多出口场景下的NAT Server 三、双向NAT 防火墙–NAT技术 基于源NAT:用于将内部网络的私有IP地址转换为公共IP地址,以便…

使用 IntelliJ IDEA 连接到达梦数据库(DM)

前言 达梦数据库是一款国产的关系型数据库管理系统,因其高性能和稳定性而被广泛应用于政府、金融等多个领域。本文将详细介绍如何在 IntelliJ IDEA 中配置并连接到达梦数据库。 准备工作 获取达梦JDBC驱动: 访问达梦在线服务平台网站或通过其他官方渠道…

Matlab|基于遗传模拟退火算法的风电功率聚类分析

目录 主要内容 部分代码 结果一览 下载链接 主要内容 模糊C-均值聚类,也称FCM,是比较常用的一种聚类算法,该算法利用几何贴进度的概念将不同数据分配到不同聚类群中,但是作为局部搜索优化算法,初值选择不…

Conda虚拟环境配置常见问题记录

搞深度学习的,总有被虚拟环境搞得头大的时候,特别是涉及到CUDA,Torch ,Torchvision 版本适配的问题。这两天因为在原来的环境中装了几个包,导致原来的环境崩了,搞了一天的时间又重新配了环境,中…

塑料瓶回收标志分级检测系统源码分享

塑料瓶回收标志分级检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Co…