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

相关推荐
闪电麦坤9536 分钟前
C#:Time.deltaTime
开发语言·c#
云山工作室2 小时前
基于单片机的并联均流电源设计(论文+源码)
单片机·嵌入式硬件·物联网·毕业设计·毕设
Alfadi联盟 萧瑶2 小时前
Python-Django入手
开发语言·python·django
-代号95274 小时前
【JavaScript】十二、定时器
开发语言·javascript·ecmascript
勘察加熊人4 小时前
c++实现录音系统
开发语言·c++
self-discipline6344 小时前
【Java】Java核心知识点与相应面试技巧(七)——类与对象(二)
java·开发语言·面试
wei3872452324 小时前
java笔记02
java·开发语言·笔记
CANI_PLUS5 小时前
python 列表-元组-集合-字典
开发语言·python
老秦包你会5 小时前
QT第六课------QT界面优化------QSS
开发语言·qt
難釋懷5 小时前
JavaScript基础-history 对象
开发语言·前端·javascript