当前位置: 首页 > news >正文

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

案例背景

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

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

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

目录

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

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

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

1.2.1 API接口参数说明

1.2.2 举例:27服务解锁算法

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博客“汽车电子助手”,做您的好助手。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • C++类与对象(下)--最后的收尾
  • jmeter依赖jar包找不到类路径
  • SQL入门题
  • 【IPV6从入门到起飞】5-3 IPV6+Home Assistant(ESP32+MQTT+GPIO)远程控制灯
  • Java 抽象类 接口--详解
  • 判断语句有几种写法
  • 【解决】AnimationCurve 运行时丢失数据问题
  • 三十三、Gin的中间件
  • 使用 ECharts 实现响应式图表:优化移动端用户体验
  • QT如何通过QTableWidget控件开发表格功能
  • 默认端口被占用后,如何修改Apache2 端口
  • Vue3 : ref 与 reactive
  • 计算机组成原理——第二章(19)
  • 基于SpringBoot的考研资讯平台设计与实现
  • 关于Python爬虫的基础知识
  • angular2开源库收集
  • Angularjs之国际化
  • CSS 三角实现
  • isset在php5.6-和php7.0+的一些差异
  • Java程序员幽默爆笑锦集
  • markdown编辑器简评
  • oschina
  • php ci框架整合银盛支付
  • storm drpc实例
  • windows下如何用phpstorm同步测试服务器
  • Zsh 开发指南(第十四篇 文件读写)
  • 前端技术周刊 2019-02-11 Serverless
  • 驱动程序原理
  • 数据科学 第 3 章 11 字符串处理
  • 与 ConTeXt MkIV 官方文档的接驳
  • 正则与JS中的正则
  • 智能网联汽车信息安全
  • 阿里云API、SDK和CLI应用实践方案
  • ​​​【收录 Hello 算法】10.4 哈希优化策略
  • #{}和${}的区别是什么 -- java面试
  • #Datawhale AI夏令营第4期#AIGC文生图方向复盘
  • #LLM入门|Prompt#1.8_聊天机器人_Chatbot
  • #基础#使用Jupyter进行Notebook的转换 .ipynb文件导出为.md文件
  • #我与Java虚拟机的故事#连载16:打开Java世界大门的钥匙
  • (Git) gitignore基础使用
  • (回溯) LeetCode 77. 组合
  • (亲测)设​置​m​y​e​c​l​i​p​s​e​打​开​默​认​工​作​空​间...
  • (三)mysql_MYSQL(三)
  • (一)【Jmeter】JDK及Jmeter的安装部署及简单配置
  • (转) 深度模型优化性能 调参
  • (转)AS3正则:元子符,元序列,标志,数量表达符
  • (转)EXC_BREAKPOINT僵尸错误
  • (转)Java socket中关闭IO流后,发生什么事?(以关闭输出流为例) .
  • **PHP二维数组遍历时同时赋值
  • *算法训练(leetcode)第四十五天 | 101. 孤岛的总面积、102. 沉没孤岛、103. 水流问题、104. 建造最大岛屿
  • .NET Core中的去虚
  • .NET(C#、VB)APP开发——Smobiler平台控件介绍:Bluetooth组件
  • .NET/C# 判断某个类是否是泛型类型或泛型接口的子类型
  • .NET/MSBuild 中的发布路径在哪里呢?如何在扩展编译的时候修改发布路径中的文件呢?
  • .NET开源项目介绍及资源推荐:数据持久层