如何制作Vector Vflash中加载的DLL文件--自动解锁刷写过程中27服务

案例背景:

vFlash 是一种易于使用的工具,用于对一个或多个 ECU 进行刷写软件。由于方法灵活,它可以支持各种汽车原始设备制造商的不同刷写规范。它支持通过 CAN、CAN FD、FlexRay、LIN、以太网/DoIP 和以太网/SoAd 对 ECU 进行刷写。

vFlash 既可交互使用,也可通过自动化接口控制。在交互模式下,用户只需按下按钮,即可加载项目并开始编程。

下面教您如何制作Vflash刷写过程中27服务 解锁所需的DLL动态链接库文件。

目录

[1 如何制作该"DLL动态链接库文件"](#1 如何制作该“DLL动态链接库文件”)

[1.1 如何获取"DLL动态链接库文件"的DEMO](#1.1 如何获取“DLL动态链接库文件”的DEMO)

[1.2 使用Visual Studio打开"DLL动态链接库文件"的DEMO](#1.2 使用Visual Studio打开“DLL动态链接库文件”的DEMO)

[1.2.1 API接口参数说明](#1.2.1 API接口参数说明)

[1.2.2 举例:27服务解锁算法](#1.2.2 举例:27服务解锁算法)

[1.2.3 生成DLL文件](#1.2.3 生成DLL文件)

结尾


1 如何制作该"DLL动态链接库文件"

1.1 如何获取"DLL动态链接库文件"的DEMO

在Vflash的安装路径下都会有下图这样的文件夹**SeedKeyExample。**这就是制作该DLL文件的DEMO。

Vflash的路径:

C:\Users\Public\Documents\Vector\vFlash\5\Examples\SeedKeyExample

1.2 使用Visual Studio打开"DLL动态链接库文件"的DEMO

下面以文件夹SeedKeyExample 为例。双击打开SeedKey.vcproj文件(须确保电脑已经安装Visual Studio)。

使用Visual Studio打开该工程后,在右侧的"解决方案资源管理器 "中,依次选择SeedKey -- > Source Files -- > SeedKey.cpp,接着在左侧你会看到被打开的SeedKey.cpp文件,在其中你会看到一个API GenerateKeyEx 接口,在该API接口中完成"27服务各security level安全等级解锁算法"即可。

1.2.1 API接口参数说明

ipSeedArray :表示接收到的27服务奇数subfunction中的Seed种子字节值"数组";

iSeedArraySize :表示接收到的27服务奇数subfunction中的Seed种子长度;

iSecurityLevel:表示接收到的27服务Security Level安全等级;

ipVariant:表示CanOe / Canalyzer中加载的诊断描述文件"当前使用的变体";

iopKeyArray :表示27服务偶数subfunction中发送的Key密钥字节值"数组";

iMaxKeyArraySize :表示27服务偶数subfunction中的发送的Key密钥长度;

oActualKeyArraySize :表示输出Key密钥长度,通常让oActualKeyArraySize =iSeedArraySize;。

1.2.2 举例:27服务解锁算法

假设:Seed的长度为4,Key的长度也是4。Key = Seed + 123456。我们可以这样改写该API GenerateKeyEx接口。

KEYGENALGO_API VKeyGenResultEx GenerateKeyEx(
   const unsigned char* ipSeedArray, unsigned int iSeedArraySize,
   const unsigned int iSecurityLevel, const char* ipVariant,
   unsigned char* iopKeyArray, unsigned int iMaxKeyArraySize, 
   unsigned int& oActualKeyArraySize)
{
    unsigned int seed = 0;
    unsigned int key = 0;

    seed = ((ipSeedArray[0] << 24) & 0xFF000000);
    seed |= ((ipSeedArray[1] << 16) & 0x00FF0000);
    seed |= ((ipSeedArray[2] << 8) & 0x0000FF00);
    seed |= ((ipSeedArray[3] << 0) & 0x000000FF);

    key = seed + 123456;

    iopKeyArray[0] = ((key >> 24) & 0x000000FF);
    iopKeyArray[1] = ((key >> 16) & 0x000000FF);
    iopKeyArray[2] = ((key >> 8) & 0x000000FF);
    iopKeyArray[3] = ((key >> 0) & 0x000000FF);

    oActualKeyArraySize = iSeedArraySize;

  return KGRE_Ok;
}

1.2.3 生成DLL文件

SeedKey.cpp文件编辑完成后,在右侧的"解决方案资源管理器"选中SeedKey,并鼠标右键,在其上下文中,单击生成。

在DEMO工程的路径下的Debug文件夹中,你会看到生成的SeednKey.dll文件。

将该SeednKey.dll 文件加载到Vflash中的Miscellaneous

结尾

获取更多"汽车电子资讯"和"工具链使用"

请关注CSDN博客"汽车电子助手",做您的好助手。

相关推荐
流星白龙23 分钟前
【C++习题】10.反转字符串中的单词 lll
开发语言·c++
尘浮生31 分钟前
Java项目实战II基于微信小程序的校运会管理系统(开发文档+数据库+源码)
java·开发语言·数据库·微信小程序·小程序·maven·intellij-idea
MessiGo31 分钟前
Python 爬虫 (1)基础 | 基础操作
开发语言·python
Tech Synapse37 分钟前
Java根据前端返回的字段名进行查询数据的方法
java·开发语言·后端
乌啼霜满天2491 小时前
JDBC编程---Java
java·开发语言·sql
色空大师1 小时前
23种设计模式
java·开发语言·设计模式
blessing。。1 小时前
I2C学习
linux·单片机·嵌入式硬件·嵌入式
Bruce小鬼1 小时前
QT文件基本操作
开发语言·qt
2202_754421541 小时前
生成MPSOC以及ZYNQ的启动文件BOOT.BIN的小软件
java·linux·开发语言
我只会发热1 小时前
Java SE 与 Java EE:基础与进阶的探索之旅
java·开发语言·java-ee