数码之家

 找回密码
 立即注册

QQ登录

只需一步,快速开始

微信登录

微信扫一扫,快速登录

搜索
查看: 3537|回复: 56

[STM] STM32去掉孔雀石1.10d固件唯一ID软件保护的过程

[复制链接]
发表于 2024-5-11 15:04:16 | 显示全部楼层 |阅读模式
本帖最后由 yjmwxwx 于 2024-5-11 15:25 编辑

最近搞视频没素材拍,正好有个网友给我个固件,因为我以前改过以前版本的,正好试试拿来当素材,只是我技术不行,也没硬件不能保证我分析的正确和是简单的方法。

修改后孔雀石1.10d版本的BIN文件,我没硬件没法验证,只是分享下过程,不保证能用变砖头别怪我。



修改过程视频
https://www.bilibili.com/video/BV1Nm421p744/?spm_id_from=333.999.0.0





这个固件采用STM32唯一ID防止被人抄袭,ID号经过加密后生成64位数密码,再把64位密码储存到FLASH,程序还有密码表和FLASH完整性校验,因为以前分析时候已经知道他密码表的内容,直接搜索BIN文件还容易就找到了密码表。

刷固件后,本机ID生成的密码和密码表里面进行比较,密码表里面没有就限制功能。

IDA PRO怎么打开固件的网上很多教程,这里就不再重复了。



因为以前知道了密码表里的,这次直接在新固件BIN文件里面搜索就可以了,通过搜索知道了密码表在新固件的0x803b1d0,于是直接搜索这个地址,就找到了密码表比较程序

程序入口R2是密码表地址,R0和R1是本机64位密码



比较程序,R6=0x3ca8是密码表长度,因为密码是64位所以有1881个注册用户,密码表里没本机号把0x58写到R7地址+0X818的地址,有本机号写0XFA到这个地址,可以把密码表里注册用户替换成非注册用户的密码,也可以通过把R6=0X3CA8改大来增加密码表长度,把非注册用户密码添加到后面空白地址,还可以直接把0XFA写到那个地址。



密码表还有完整性校验程序,校验长度0X3CB0



ldr r3, = 0x3c2efb46是校验正确结果,直接把下面STR R0, [r4, # 8]里面的R0改成R3来绕开。

还有几个死循环不知道是干什么的,因为没硬件没法验证,直接把B命令替换成MOV R0, R0,因为这条命令下面就是正确跳转结果,只要让这条指令失去作用就行了。







通过看反汇编看到代码最后还有数据这个不正常,于是发现有全FLASH完整性校验,校验范围从0X8000000开始到0X8100000







还有个校验程序,从大概0x800dd88开始到0X80DFFFF



需要修改的地方,因为我没硬件验证所以看到可疑的就改。 用编译器直接生成机器码,我技术不行不会别的方法。        地址@df04  从str r0, [r4, # 8] 改成 str r3, [r4, # 8]

  1. @df04
  2.         str r0, [r4, # 8]
  3.         str r3, [r4, # 8]

  4.         
  5.         @df84
  6. aa:
  7.         b aa
  8.         mov r0, r0

  9.         
  10.         @e6b0
  11. bb:
  12.         b bb
  13.         mov r0, r0

  14.         
  15.         @dffa
  16.         str r4, [r7, # 0x818]
  17.         str r2, [r7, # 0x818]
  18.         
  19.         @de86
  20.         str r0, [r3]
  21.         str r2, [r3]
  22.         
  23.         @ddac
  24.         str r0, [r4]
  25.         ldr r3, [r3]
  26.         
  27.         @ddae
  28.         ldr r3, [r3]
  29.         str r3, [r4]

  30.         @dec6
  31.         str r0, [r3, # 4]
  32.         str r2, [r3, # 4]

  33.         @de16
  34.         ldr r0, [r3, # 8]
  35.         str r2, [r3, # 8]
  36.         
  37.         @de18
  38.         cmp r0, r2
  39.         cmp r2, r2
复制代码




从固件剪出密码表的方法,直接用dd命令



剪出的密码表  








本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册 微信登录

x

打赏

参与人数 3家元 +114 收起 理由
hylg + 66 老母牛不下崽----NB坏了
闻太师 + 30 锄头哥牛X
nokia5320 + 18

查看全部打赏

发表于 2024-5-11 15:23:57 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

发表于 2024-5-11 15:26:17 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

发表于 2024-5-11 15:46:27 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

发表于 2024-5-11 16:07:31 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

发表于 2024-5-11 16:08:53 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

发表于 2024-5-11 16:34:16 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-5-11 17:00:36 | 显示全部楼层
游客请登录后查看回复内容

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册 微信登录

x

打赏

参与人数 1家元 +20 收起 理由
猪小呆 + 20 謝謝分享

查看全部打赏

回复 支持 反对

使用道具 举报

发表于 2024-5-11 17:06:34 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

发表于 2024-5-11 17:07:03 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

发表于 2024-5-11 20:23:38 来自手机浏览器 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

发表于 2024-5-11 20:31:21 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

发表于 2024-5-12 13:09:58 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-5-12 16:00:19 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-5-12 16:01:22 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-5-12 16:02:30 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-5-12 16:03:13 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

发表于 2024-5-12 16:14:16 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-5-12 16:15:14 | 显示全部楼层
游客请登录后查看回复内容

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册 微信登录

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-5-12 16:21:13 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 微信登录

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2025-12-28 04:16 , Processed in 0.234000 second(s), 12 queries , Gzip On, Redis On.

Powered by Discuz!

© 2006-2025 MyDigit.Net

快速回复 返回顶部 返回列表