如何制作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博客"汽车电子助手",做您的好助手。

相关推荐
xuxie9940 分钟前
N11 ARM-irq
java·开发语言
yongui478341 小时前
基于STM32的Lora SX1278程序设计与实现
stm32·单片机·嵌入式硬件
wefly20171 小时前
从使用到原理,深度解析m3u8live.cn—— 基于 HLS.js 的 M3U8 在线播放器实现
java·开发语言·前端·javascript·ecmascript·php·m3u8
luanma1509802 小时前
PHP vs C++:编程语言终极对决
开发语言·c++·php
寂静or沉默2 小时前
2026最新Java岗位从P5-P7的成长面试进阶资源分享!
java·开发语言·面试
kyriewen112 小时前
给浏览器画个圈:CSS contain 如何让页面从“卡成PPT”变“丝滑如德芙”
开发语言·前端·javascript·css·chrome·typescript·ecmascript
娇娇yyyyyy3 小时前
QT编程(18): Qt QItemSelectionModel介绍
开发语言·qt
豆豆的java之旅3 小时前
软考中级软件设计师 数据结构详细知识点(含真题+练习题,可直接复习)
java·开发语言·数据结构
sthnyph3 小时前
QT开发:事件循环与处理机制的概念和流程概括性总结
开发语言·qt
大尚来也4 小时前
Java 反射:从“动态魔法”到生产实战的避坑指南
开发语言