如何加载dll文件计算UDS服务的秘钥
发布日期:2021-05-06 15:20:31 浏览次数:9 分类:技术文章

本文共 1307 字,大约阅读时间需要 4 分钟。

在使用UDS(ISO 14229)做诊断的过程中,27服务(Security Access)用于对ECU进行解锁工作。一般的流程是:在对应的ECU会话状态,发送27 01向ECU请求种子,然后根据种子算出秘钥并用27 02将秘钥发送给ECU完成解锁。在这个过程中,将种子计算得到秘钥的过程通常需要使用dll文件实现。

这里我们以PEAK的硬件设备为例,配合使用PEAK免费提供的PCAN UDS API,演示如何通过加载一个dll文件来完成诊断中的计算秘钥功能。

1.生成一个dll文件

首先我们先说一下如何制作一个dll文件,这里我用的编译器是VS2015。首先新建一个工程文件,选择Win32项目和应用程序类型为dll,其它选项按照需求即可。

                     

这里我编写了一个简单的例子。在编译的时候推荐添加 extern “C”,表示用C语言的编译方式导出dll文件;也可以选择在工程中加一个def文件。另外需要注意在输出dll文件时选择好32位还是64位,如果dll文件的位数和后续调用它的程序不一致,会发生无法导入的错误。

这里我做的dll文件就是把所有输入的字节和0x59进行与操作,测试的时候比较方便。

用VS生成这个工程,就可以在对应的文件夹中获取到我们需要的dll文件了。

2.调用dll文件

在调用dll时我们需要知道的是,dll文件函数是如何定义的,以及dll文件放置的位置。另外需要注意dll文件是32位还是64位的,这个必须dll文件和程序保持一致。不一致的时候加载dll文件会失败。文件放置的位置可以在工程文件的根目录,这个时候就只要写明dll文件的全名,不需要给出路径;另外也可以用完整路径的形式给出,例如"H:\\UDS-TEST\\Project1\\CalKey.dll",请注意这部分需要使用”\”而不是”/”,并且由于使用了C格式的字符串所以需要打两个”\”。

调用dll的过程和PCAN UDS的dll文件类似,可以选用动态或静态将它们链接到项目中。这里选择使用动态链接,需要使用Windows API函数LoadLibrary,FreeLibrary和GetProcessAddress。LoadLibrary函数用于加载文件,需要输入dll文件的路径;FreeLibrary用于释放dll文件,参数是LoadLibrary函数的返回值;GetProcessAddress用于获取我们需要的函数的位置,这里的函数名称注意不要写错。如果在制作dll文件时没有使用extern "C"或是添加一个def文件,那么函数的名称有可能是和制作时的函数名不同,这种情况下具体的函数名称可以在WINDOWS的cmd界面进行查询。

具体按照要求使用WIN API的函数并调用dll中的计算秘钥函数即可。如果出现什么问题,WIN API中的GetLastError函数可以用来获取错误代码,方便进行查错。

最后使用PCAN UDS API进行解锁的效果如下,可以看到我们的程序成功读取了种子并计算出正确的秘钥发给了设备(每个字节与0x59),并得到了正确的响应。

本文转载自广州虹科”汽车总线技术“公众号

上一篇:如何监控工业4.0网络基础结构
下一篇:什么是网络基础设施?

发表评论

最新留言

不错!
[***.144.177.141]2025年03月23日 02时52分13秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

考了400分?不好意思,可能连这些“变态”学校的复试线都没够着! 2019-03-03
【调剂】其它计算机/软件调剂信息 20.5.20 2019-03-03
【调剂】211北京邮电大学2020年计算机学院硕士研究生招生缺额信息 2019-03-03
【招生目录和招生简章】浙江大学 华北电力大学 河南工业大学 福建师范大学... 2019-03-03
辟谣!湖南大学考试科目不变!不考408! 2019-03-03
北京理工大学软件学院今年取消招生! 2019-03-03
这些考研阅卷潜规则你知道几个? 2019-03-03
【考研英语】考研英语小作文万能模板(致歉信) 2019-03-03
【数据结构与算法】队列 2019-03-03
中国最委屈的十所大学 2019-03-03
【考研经验】2018四跨吉林大学计算机初试复试经验贴(67+72+99+141=379分) 2019-03-03
注意绕道!考研路上几大隐形致命杀手! 2019-03-03
【20考研】英语第一轮复习要做的二三事 2019-03-03
【研究生】PyTorch 1.0稳定版正式发布,并向开发者提供免费AI课程 2019-03-03
平均分392分!某985计算机专硕复试线暴涨! 2019-03-03
为何二战考生成功率远远大于应届? 2019-03-03
计算机专业【本科生】毕业还不如【专科生】? 2019-03-03
考研408联盟新添一所985!某知名大学专业课改用408! 2019-03-03
最有钱的大学是哪个?教育部直属高校公布2018年决算 2019-03-03
408的逆袭!武汉大学所有计算机/软件专业都改为408! 2019-03-03