CANalyzer及CANOE使用四:调用DLL实现UDS

您所在的位置:网站首页 canoe怎么导入cdd CANalyzer及CANOE使用四:调用DLL实现UDS

CANalyzer及CANOE使用四:调用DLL实现UDS

2024-07-14 19:59| 来源: 网络整理| 查看: 265

前言一、封装dll,调用dll解锁二、capl写解锁函数三、CDD加载dll解锁四、调用DLL实现UDS_TP/NM功能五、总结 ———————————————— 前言

请输入公众号:总线网络。关注我,获取汽车网络开发及测试方面资料,更新干货! 最近有小伙伴问我关于调用dll和安全算法解锁的问题哈。我所知的有 1、capl里调用封装好的dll; 2、capl里编写安全算法; 3、用CDD的诊断功能来调用dll; 4、利用节点调用dll实现UDS_TP/NM(OSEK/Autosar); 今天我一一介绍下哈,大家有什么疑问可以留言或加我vx,联系方式在我介绍里的。

一、如何封装capl调用的dll解锁

(1)生成dll的工程模板在我们安装CANoe时就自动生成了,以Win 7系统、9.0版本的CANoe为例,该工程路径如下: C:\Users\Public\Documents\Vector\CANoe\9.0\CANoe Sample Configurations\Programming\CAPLdll\VS 2005 Project(参考) (2)打开.sln工程,将自己想要被调用的接口函数的定义及声明写入到”capldll.cpp”这个文件中 (3)找到CAPL_DLL_INFO4,了解参数作用,如下:

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;

(4)如下例子,输入seed种子,输出pwd密钥,然后把函数名写在CAPL_DLL_INFO4 table[]里:

#define COC(value,bits) ((value>>bits)|(value > 8; tmpseed_L = (unsigned short)(tmpseed & 0x00ff); if (tmpseed != 0) { pwd = (COC(COC(COC((tmpseed + 0xFFFFEF71), 1), 1), 1)) ^ (tmpseed_H * tmpseed_L); } else { pwd = 0; } return pwd; }

在这里插入图片描述

(5)返回值看canoe help讲解。按照上图我给的例子写,是没问题的。在这里插入图片描述 在这里插入图片描述 (6)最后生成解决方案,获得.dll文件,至此capl调用的.dll文件封装好,把它放到要调用的路径里。在这里插入图片描述在这里插入图片描述 (7)capl里用#pragma library(“\Exec32\capldll.dll”)调用,右边直接拖过来用即可。 在这里插入图片描述

(8)若不用capl调用,也可在CANoe Options里调用。在这里插入图片描述

二、如何用capl写安全算法解锁(capl基础编程)

(1)以16位密钥为例如下图: 在这里插入图片描述 (2)关键字声明如下图,把c算法函数拷贝过来,改变一下关键字即可,若算法函数包含宏运算的,建议用第一种方法。在这里插入图片描述

三、CDD加载dll解锁

(1)打开如下图路径.cpp可生成CDD用的.dll文件在这里插入图片描述在这里插入图片描述 (2)打开如下路径CDD用的路径demo可看到加载的.dll文件就是安全算法在这里插入图片描述 (4)打开Diagnostics里诊断功能 在这里插入图片描述(5)打开Diagnostic Console,10 03 ->27 01->27 02即可解锁。在这里插入图片描述

四、调用DLL实现UDS_TP/NM功能

(1)以OSEK NM为例,先打开如下路径OSEK的Demo 在这里插入图片描述 (2)可以看到A节点调用的.dll文件在这里插入图片描述 (3)脚本运用,可以根据下图help的描述选择你的需求函数。在这里插入图片描述在这里插入图片描述

五、总结

选择合适自己的写脚本的方式,能事半功倍!祝福各位学习CANoe的同学能早日毕业! 有不完善的地方欢迎留言或加我vx补充。 请输入公众号:总线网络。关注我,获取汽车网络开发及测试方面资料,更新干货! 分享总线开发知识 分享CAN/CANFDLIN/ETH等网络资料 分享CANoe/TSMaster/PCAN等设备工具使用 分享UDS/NM/Bootloader测试用例等 一起来学习,进步,交流吧! 在这里插入图片描述



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3