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

【CANoe】CAPL_UDS安全算法dll制作

文章目录

  • 一、背景
  • 二、方法一:在CAPL中引入dll的制作【制作dll的通用方法】
    • 1、在CAPL中打开帮助文档
    • 2、找到CAPL DLL相关的说明,以下图中标记的为Demo进行dll的制作
    • 3、拷贝到桌面,我用VS2019打开
    • 4、解析其中一个函数,制作dll类似原理【☆核心☆】
    • 5、27解锁示例
      • 1)在刚才的工程中增加如下代码:
      • 2)“重新生成”dll,并将capldll.dll改名为27Unlock.dll
      • 3)将dll引入到CAPL工程中
  • 三、方法二:在UDS模块中导入dll的制作【推荐:跑UDS诊断也可以用到】
    • 1、导入dll的方法:
    • 2、dll制作方法:
      • 1)打开CAPL帮助文档
      • 2)进入到如下路径:
      • 3)代码解读:【☆核心☆】
      • 4)CAPL中调用27解密算法的核心代码:

一、背景

使用UDS进行刷写时,需要27服务解密后,才能正确执行刷写,本文提供两种制作27解密dll的方法,用于CANoe的CAPL脚本中。

【特别说明】
遇到问题时,CAPL帮助文档提供了很好的指引,大家可以好好利用。

二、方法一:在CAPL中引入dll的制作【制作dll的通用方法】

1、在CAPL中打开帮助文档

在这里插入图片描述

2、找到CAPL DLL相关的说明,以下图中标记的为Demo进行dll的制作

CAPL DLL示例所在路径:
C:\Users\Public\Documents\Vector\CANoe\Sample Configurations 12.0.75\Programming\Capldll
在这里插入图片描述

3、拷贝到桌面,我用VS2019打开

1)下图点击确定:
在这里插入图片描述
2)右键点击工程“重新生成",报如下错误代码【C2338】:

C2338 Windows headers require the default packing option. Changing this can lead to memory corruption. This diagnostic can be disabled by building with WINDOWS_IGNORE_PACKING_MISMATCH defined
在这里插入图片描述3)更改如下配置:
在这里插入图片描述

在这里插入图片描述
4)再次"重新生成”,可编译成功:
在这里插入图片描述

4、解析其中一个函数,制作dll类似原理【☆核心☆】

在这里插入图片描述
在这里插入图片描述一些说明:

typedef struct CAPL_DLL_INFO4{
  char              cdlName[MAX_CDL_NAME2];        // 在CAPL中调用时显示的函数名
  CAPL_FARCALL      adr;                           // 函数地址,即vs工程中函数定义时的函数名
  const char*       categoryName;                  // 函数在CAPL中的所属目录,可以用于对函数的分类
  const char*       hintText;                      // 对该函数功能的描述介绍(在CAPL中显示)
  char              resultType;                    // 函数的返回值类型,用CAPL中的类型的首字母大写去表示
  int               parCount;                      // 函数的参数个数
  char              parTypes[MAXCAPLFUNCPARS_8_1]; // 函数的参数类型,用CAPL中的类型的首字母大写去表示
  unsigned char     array[MAXCAPLFUNCPARS_8_1];    // 函数的参数是否是数组:\001表示是数组;\000表示不是数组。默认则为\000
  const char*       parNames[MAXCAPLFUNCPARS_8_1]; // 函数显示的参数名(在CAPL中的声明介绍时)
} CAPL_DLL_INFO4;

在这里插入图片描述
在这里插入图片描述

5、27解锁示例

1)在刚才的工程中增加如下代码:

/*27解密算法*/
void CAPLEXPORT far CAPLPASCAL appGetDataThreePars(unsigned long mask, long SecurityLevel,
	unsigned char SeedArray[], unsigned char KeyArray[])
{
	/*27解密算法--根据实际算法进行更改即可*/
	KeyArray[0] = SeedArray[0] + 1;
	KeyArray[1] = SeedArray[0] + 1;
	KeyArray[2] = SeedArray[0] + 1;
	KeyArray[3] = SeedArray[0] + 1;
}

在这里插入图片描述

{"dllUnlock27", (CAPL_FARCALL)appGetDataThreePars,"CAPL_DLL","This function will get two datas from DLL into CAPL memory",'V', 4, "DLBB", "\000\000\001\001", {"mask","SecurityLevel","seedblock","keyblock"}},

在这里插入图片描述

2)“重新生成”dll,并将capldll.dll改名为27Unlock.dll

在这里插入图片描述

3)将dll引入到CAPL工程中

在这里插入图片描述

在这里插入图片描述在这里插入图片描述

三、方法二:在UDS模块中导入dll的制作【推荐:跑UDS诊断也可以用到】

1、导入dll的方法:

在这里插入图片描述

2、dll制作方法:

1)打开CAPL帮助文档

在这里插入图片描述在这里插入图片描述在这里插入图片描述

2)进入到如下路径:

C:\Users\Public\Documents\Vector\CANoe\Sample Configurations 12.0.75\CAN\Diagnostics\UDSSystem\SecurityAccess\Sources

将如下文件夹拷贝到桌面,进行制作dll
在这里插入图片描述

3)代码解读:【☆核心☆】

在这里插入图片描述
在这里插入图片描述

右键点击工程“重新生成",工程可正确编译生成dll:
在这里插入图片描述
在这里插入图片描述核心代码解读:
在这里插入图片描述

4)CAPL中调用27解密算法的核心代码:

result=diagGenerateKeyFromSeed(tmpseed,4,Unlocktype,"CommonDiagnostics","",tmpkey,4,gkeysize);      

在这里插入图片描述


http://www.kler.cn/a/3756.html

相关文章:

  • TongESB7.1.0.0如何使用dockercompose运行镜像(by lqw)
  • HTML之拜年/跨年APP(改进版)
  • 浅谈安科瑞电能质量监测和治理产品在分布式光伏电站的应用-安科瑞 蒋静
  • KubeSphere 与 Pig 微服务平台的整合与优化:全流程容器化部署实践
  • Golang Gin系列-1:Gin 框架总体概述
  • 在 Vue 3 项目中集成和使用 vue3-video-play
  • 吸烟行为检测系统(Python+YOLOv5深度学习模型+清新界面)
  • WPF 常用控件
  • Android源码面试宝典之JobScheduler从使用到原理分析(三)【JobService、JobInfo】
  • JavaScript 之数据交互
  • PDF.js 前端开发使用指南
  • 常见的卷积神经网络结构——分类、检测和分割
  • Python实现GWO智能灰狼优化算法优化Catboost分类模型(CatBoostClassifier算法)项目实战
  • python--exec
  • 「ChatGPT」十分钟学会如何在本地调用API_KEY(最新版 | 附源码)
  • 【数据结构】第五站:带头双向循环链表
  • 【Linux】权限详解
  • Meson与Ninja
  • 蓝桥杯刷题冲刺 | 倒计时16天
  • 低代码开发:助力企业高效实现数字转型的一大利器
  • 个人简历html网页代码(使用chatgpt完成web开发课的实验)
  • 一文学会 Spring MVC 表单标签
  • 【C语言蓝桥杯每日一题】—— 货物摆放
  • 【Vue3】模板语法
  • centos7.*系统下yum安装mysql8
  • 瑟瑟发抖吧~OpenAI刚刚推出王炸——引入ChatGPT插件,开启AI新生态