UDS诊断学习笔记(三):使用VS2010编译诊断0x27服务的dll、rand()生成随机数

概述

在进行27服务认证的时候,需要添加dll文件。在以往项目中,车厂提供安全算法的同时会一并提供dll文件。但这次需要需要自己制作。本篇记录下制作过程。

使用VS2010编译dll

制作方法

CANoe中是有提供demo工程的:
在这里插入图片描述
KeyGenDll_GenerateKeyEx 和 KeyGenDll_GenerateKeyExOpt 两个工程都可以用来制作dll文件,分别提供 GenerateKeyEx 和 GenerateKeyExOpt 接口。其中 GenerateKeyExOpt 多一个传入参数,普通应用并不需要。

初次制作的时候,我还没有CANoe,找大佬提供要了一份以前用过的工程(点击进入

工程使用VS2010进行编译。VS2010官网下载(点击进入):
在这里插入图片描述
需要登录微软账号。

实现算法

在VS2010中打开工程
在这里插入图片描述
选择 KeyGenDll_GenerateKeyEx 工程的GenerateKeyExImpl.vcproj文件:
在这里插入图片描述
打开后可以看到有个GenerateKeyExlmpl.cpp源文件
在这里插入图片描述

传入参数的含义分别是:

iSeedArray, ECU返回的种子数组
iSeedArraySize, ECU返回的种子数组最大长度
iSecurityLevel, 要解锁的级别(01、03、05、11等)
iVariant, ECU变体限定符
ioKeyArray, Tester返回计算出的密钥
iKeyArraySize, Tester返回计算出的密钥最大长度
oSize 计算出密钥的字节数(点击进入

在此基础上,根据自己的需求,实现算法即可。可以支持不同的安全等级。修改完毕,build编译工程:
在这里插入图片描述
这里会有警告。

到对应目录中获取dll文件
在这里插入图片描述

测试验证

在BusMaster中加载dll文件:
在这里插入图片描述
进行解锁
在这里插入图片描述

参考链接

  1. Canoe/Canalyzer中加载DLL文件“自动“解锁UDS诊断27服务:如何进行编译。

rand()生成随机数

C语言中的rand()函数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值