搜索
bottom↓
回复: 184

唯一ID号原来这样破解!啊哈哈哈哈

  [复制链接]

出0入0汤圆

发表于 2016-5-8 17:34:24 | 显示全部楼层 |阅读模式


2012年AVR被破解
2013用STM8
stm8 唯一ID号加密方法.思路
http://www.amobbs.com/thread-5540720-1-1.html

2016年唯一ID被破解(烦!被聊城鑫*连破解抄袭3个产品.恶心!STM8ID)
http://www.amobbs.com/thread-5647898-1-1.html

之前一直听人家说无用完的FLASH空间有多危险.一直都不知道。今天发现问题了.吓死人

2016-05-08再一次加密!
我看几年后再有人来破!








本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2016-5-8 17:37:34 | 显示全部楼层
不明觉厉!

出0入0汤圆

发表于 2016-5-8 17:39:48 | 显示全部楼层
没看明白

出20入0汤圆

发表于 2016-5-8 17:48:22 | 显示全部楼层
看来是不明文出现ID的地址,而是利用一个空闲的FLASH地址,通过加密算法,间接算出地址,也就是说整个hex不出现ID的地址信息. 是这样子吗?

出0入0汤圆

发表于 2016-5-8 17:56:53 来自手机 | 显示全部楼层
楼主牛逼!

出0入0汤圆

发表于 2016-5-8 18:00:28 | 显示全部楼层
应该大约知道楼主要说什么
要防止此问题也很简单,code中不要出现唯一ID的地址即可

这个方式我也常用,是用来挖洞给破解人的陷阱,让他一时以为破完了而以为没有其它的保护

出0入0汤圆

发表于 2016-5-8 18:00:29 | 显示全部楼层
本帖最后由 WEIZ666 于 2016-5-8 18:04 编辑

不明白还是没明白楼主能不能再详细介绍下吗,并且怎样才能比较有效的防破解方法

出0入0汤圆

发表于 2016-5-8 18:13:15 | 显示全部楼层


楼主说的问题其实很容易防

读地址不要用固定地址,

而是用运算法,用变量去读取.

这样就无法用查找法找到所谓的uid地址了

出0入0汤圆

 楼主| 发表于 2016-5-8 18:20:24 | 显示全部楼层
1.
8K  FLASH不可能全部用完吧?总会有些空间剩的.好吧。只要有12字节就够了.这12字节就保存母片的ID
2.读唯一ID时,是先向一个指针初始化,然后连续读ID对吧?如下
    unsigned char *pIDStart=(unsigned char *)(ID_BaseAddress);   
    for(i=0;i!=12;i++){*p++=*pIDStart++;}
这样的程序---编译--生成HEX文件了。
这个HEX文件烧录到芯片.---成产品卖出去-------------这就是母片!

3.客户拿到母片总能读出HEX的。技术难度高点。总能读出HEX的
问题来了。客户在这个HEX文件里面。能不能查到(unsigned char *)(ID_BaseAddress);    ????
以STM8S102为例ID_BaseAddress=0x4865
那么这个HEX中就肯定能查找到0x4865如第一张图片
母片的ID号也能读出的!而且母片FLASH是有空余的
就把母片的ID写入0x7E00这地址吧!如图1的第3步


最后!把HEX文件所有的0x4865 改成0x7E00

烧录到新的芯片里面


这样会发生什么?
    unsigned char *pIDStart=(unsigned char *)(ID_BaseAddress);   
    for(i=0;i!=12;i++){*p++=*pIDStart++;}
这里读的是母片的ID,不是芯片自己的ID
这里不存在4865只有7E00

解决方法就是不要明文出现ID号的地址!



出0入0汤圆

发表于 2016-5-8 18:25:17 | 显示全部楼层
国内人现在都不认真研究做产品,都是先研究加密。

出0入0汤圆

发表于 2016-5-8 19:26:13 | 显示全部楼层
不明觉厉

出0入0汤圆

发表于 2016-5-8 19:35:49 | 显示全部楼层
无衣师伊 发表于 2016-5-8 18:20
1.
8K  FLASH不可能全部用完吧?总会有些空间剩的.好吧。只要有12字节就够了.这12字节就保存母片的ID
2.读唯 ...

我管你三七二十一,我也不管你明文不明文,上来就读这个ID,因为大家都知道这个ID地址是固定的,我不管你出现不出现,上来就开读,然后...何解?

出0入0汤圆

发表于 2016-5-8 19:41:25 | 显示全部楼层
学习了,收藏慢慢看

出0入10汤圆

发表于 2016-5-8 19:57:25 | 显示全部楼层
放一个明的读当诱饵,再来个暗的读做校验。

出0入0汤圆

发表于 2016-5-8 20:04:42 来自手机 | 显示全部楼层
把一组重要数据用唯一Id做密钥加密,程序运行时将数据解密。爱怎么破解怎么破解吧。只是上位机烧写再写一段程序罢了。

出0入4汤圆

发表于 2016-5-8 20:05:21 | 显示全部楼层
可以在程序读一下没用的FLSAH有没有被使用的情况。

出0入0汤圆

发表于 2016-5-8 20:15:03 | 显示全部楼层
赶紧收藏了,目前所有程序还没做过加密。

出0入618汤圆

发表于 2016-5-8 20:21:31 | 显示全部楼层
没用的,LZ难道不知道有内存读写断点这个功能?无论你怎么绕都能抓到你读0x004865那条指令。

出0入0汤圆

发表于 2016-5-8 20:25:26 | 显示全部楼层
学习下。

出0入0汤圆

发表于 2016-5-8 20:31:59 | 显示全部楼层
学习,慢慢研究

出0入0汤圆

发表于 2016-5-8 20:33:52 来自手机 | 显示全部楼层
是个办法

出0入0汤圆

发表于 2016-5-8 20:43:55 来自手机 | 显示全部楼层
内存断点很容易就抓到,而且好像stm唯一id可以改

出0入476汤圆

发表于 2016-5-8 20:48:46 | 显示全部楼层
能要能跟踪进去,高手一看就明白。

出0入0汤圆

发表于 2016-5-8 21:11:21 | 显示全部楼层
能破的也属高手了,学习

出0入0汤圆

发表于 2016-5-8 21:17:14 | 显示全部楼层
好像很厉害的样子

出0入0汤圆

发表于 2016-5-8 21:23:11 | 显示全部楼层
表示没看懂

出0入0汤圆

发表于 2016-5-8 21:31:52 来自手机 | 显示全部楼层
防不胜防啊

出0入0汤圆

发表于 2016-5-8 21:48:21 | 显示全部楼层
什么是唯一的id,那个加密的算法是什么作用,是为了让别人看不懂而设计的吗

出0入0汤圆

发表于 2016-5-8 21:51:28 | 显示全部楼层
对楼主做什么产品比较感兴趣

产品能远程“控制”?

出0入0汤圆

发表于 2016-5-8 21:55:19 来自手机 | 显示全部楼层
内存断点无用过,明天试试

出0入0汤圆

发表于 2016-5-8 21:56:36 | 显示全部楼层
芯片的程序都被读了,还指望能防止反汇编,只是增加破解之人2、3天的工作量而已。

出0入0汤圆

发表于 2016-5-8 22:01:30 | 显示全部楼层
技术高超,佩服

出0入0汤圆

发表于 2016-5-8 22:05:52 | 显示全部楼层
gzhuli 发表于 2016-5-8 20:21
没用的,LZ难道不知道有内存读写断点这个功能?无论你怎么绕都能抓到你读0x004865那条指令。 ...

这里只有大师是明白人,哈哈。

ID加密只能防什么都不懂,只会读片烧片的人,对于那些有分析能力的没什么用。

出0入0汤圆

发表于 2016-5-8 22:24:11 来自手机 | 显示全部楼层
调试器断点功能干什么吃的

出0入0汤圆

发表于 2016-5-8 22:25:29 来自手机 | 显示全部楼层
有高级断点功能 数据访问   如果硬件关联性不太复杂  还能跑虚拟机

出0入0汤圆

发表于 2016-5-8 22:26:37 来自手机 | 显示全部楼层
那个叫ida的反汇编神器也不得了吧

出0入0汤圆

发表于 2016-5-8 22:28:47 来自手机 | 显示全部楼层
最无语应该是单机单芯片的 芯片还能改id的 哈 直接原样复制  stm32多年前不就能改uid了么

出0入0汤圆

发表于 2016-5-8 22:30:08 | 显示全部楼层
楼主牛。。。

出0入0汤圆

发表于 2016-5-8 22:37:39 来自手机 | 显示全部楼层
一般做法应该是读uid检验外加rom段检验  uid验证芯片 rom段检验防止修改固件就是楼主说的直接修改指针值  加密问题应该请那位破解link的大神来给大伙上课比较好  

出0入0汤圆

发表于 2016-5-8 22:39:06 来自手机 | 显示全部楼层
会破解的人才会反破解  

出0入0汤圆

发表于 2016-5-8 22:52:10 来自手机 | 显示全部楼层
要反破解的大湿父快来学习

出0入0汤圆

发表于 2016-5-8 23:11:43 | 显示全部楼层
gzhuli 发表于 2016-5-8 20:21
没用的,LZ难道不知道有内存读写断点这个功能?无论你怎么绕都能抓到你读0x004865那条指令。 ...

请教一下大师,假如不直接使用UID作为最终的UID,而是将包含UID的一大片地址内的数据内容计算MD5摘要,将MD5摘要作为最终的ID,比如将STM32的内置Bootloader以及UID一起计算MD5,或者更进一步,先根据读取UID一个字节作为偏移量,然后从内置Bootloader+偏移量开始计算MD5,这样每片单片机的起始计算地址都不一样了。如此这般,能否通过读写断点轻易绕过UID的保护?
头像被屏蔽

出0入0汤圆

发表于 2016-5-8 23:58:19 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

出0入618汤圆

发表于 2016-5-9 00:47:30 | 显示全部楼层
本帖最后由 gzhuli 于 2016-5-9 00:53 编辑
senjet 发表于 2016-5-8 23:11
请教一下大师,假如不直接使用UID作为最终的UID,而是将包含UID的一大片地址内的数据内容计算MD5摘要,将 ...


稍微增加了一点破解难度,不过如果你的判断点还是一条比较指令加一条跳转指令的话,那其实帮助也不是特别大。
除非你在很多地方都插入了判断代码,而且还不能是指向同一个函数调用,最好是一些混淆过的代码片段,特别是在一些进入几率很低的分支里面做判断,甚至随机触发,这样破解起来就会比较麻烦。
其实靠UID加密理论上是无法完全防止复制的,只能增加破解难度,最终使破解所花的时间成本接近重写一个,这样就算达到目的了。

出0入0汤圆

发表于 2016-5-9 07:42:56 来自手机 | 显示全部楼层
看来唯一iD码不能用了

出0入0汤圆

发表于 2016-5-9 08:50:47 | 显示全部楼层
楼主牛逼!

出0入0汤圆

发表于 2016-5-9 08:58:48 | 显示全部楼层
懂了,这方法可以,得避免这一点。

出0入0汤圆

发表于 2016-5-9 09:01:33 | 显示全部楼层
哈哈,不觉明历

出0入0汤圆

发表于 2016-5-9 09:10:20 | 显示全部楼层
如果用jlink调试可以有内存断点
可以设置当访问某一特定地址的时候停止。。
所以用内存断点可以直接get这个玩样

要不用dma直接读取一片内存 这片内存里面有 唯一ID
然后再进行运算 这样应该可以绕开内核的断点检测

出0入0汤圆

发表于 2016-5-9 09:10:34 | 显示全部楼层
如果用jlink调试可以有内存断点
可以设置当访问某一特定地址的时候停止。。
所以用内存断点可以直接get这个玩样

要不用dma直接读取一片内存 这片内存里面有 唯一ID
然后再进行运算 这样应该可以绕开内核的断点检测

出0入0汤圆

发表于 2016-5-9 09:11:27 | 显示全部楼层
国内人现在都不认真研究做产品,都是先研究加密。

出0入0汤圆

发表于 2016-5-9 09:13:17 | 显示全部楼层
   没看懂,还样子还得继续努力学习

出0入0汤圆

发表于 2016-5-9 09:18:57 | 显示全部楼层
动态跟踪时一样然并卵.

出0入0汤圆

发表于 2016-5-9 09:21:30 | 显示全部楼层
不明觉厉  mark            

出0入0汤圆

发表于 2016-5-9 09:25:28 | 显示全部楼层
用的ID地址一直是经过异或临时算出来的

出50入0汤圆

发表于 2016-5-9 09:29:50 | 显示全部楼层
没看明白,描述的够简洁

出0入0汤圆

发表于 2016-5-9 09:35:14 | 显示全部楼层
一直这么做,但听说有单片机ID能改写,破解的只要用对方提供改写好ID片子就可以了,

出0入0汤圆

发表于 2016-5-9 09:40:46 | 显示全部楼层
只要唯一ID能复制,加密都是浮云,

出0入0汤圆

发表于 2016-5-9 09:48:10 来自手机 | 显示全部楼层
可以利用烧录器,在烧录的时候把代码跟唯一id一起生成一个校验码写到空白flash内,在程序中进行自校验!如果破解后有改程序,校验会失败的

出0入0汤圆

发表于 2016-5-9 09:53:02 | 显示全部楼层
gzhuli 发表于 2016-5-9 00:47
稍微增加了一点破解难度,不过如果你的判断点还是一条比较指令加一条跳转指令的话,那其实帮助也不是特别 ...

大师,我觉得搞破解的人应该对常用系列芯片都有虚拟机或者叫模拟器吧。像KEIL的软仿那个虚拟机在51时代就是能加插件仿真单片机+外部器件的。MDK虚拟机还是不够方便的,比如STM32的时钟配置,打开HSE,RDy_FLAG并不会像物理芯片一样置位,如果死等就绪标志会原地一直死等下去。破解者的虚拟机可以做的更强更灵活,当然虚拟机和物理芯片肯定不可能一模一样。比如先用仿真器+硬件跑,找到问题点,将内存和寄存器全部导出到虚拟机,相当游戏保存进度,可以在电脑上反复从导入点处开始分析。

出0入0汤圆

发表于 2016-5-9 09:55:45 | 显示全部楼层
stm8s10x 发表于 2016-5-9 09:39
没这么高级吧,STM8没JLINK,另外破解方只能拿HEX反编译,所以能反的也是高手
STM8也没DMA,
ID ...

stm8 有stlink也是可以内存断点的
hex都拿到了直接软件调试都可以啊。。
没有dma就更简单了
做破解的第一个直觉不是给uid打上断点么

出0入13汤圆

发表于 2016-5-9 09:57:34 | 显示全部楼层
没用过加密的进来学习

出0入0汤圆

发表于 2016-5-9 09:58:07 | 显示全部楼层

LZ 是大侠,其实LZ 说的很明白,关键点
1、把HEX文件所有的0x4865 改成0x7E00,这样的话读UID 的程序都会被更改为读“虚拟UID” 了
2、用烧录器,把母片的UID 读出来,然后大批量的、和修改过的HEX一起、将母片UID写入到0X7E00,这样就成功了,这个的好处是,你用什么的UID算法都可以成功。

PS:STM8 的UID 是无法更改的,市面上的UID破解方法就是用了这个方法,而且解密者都是严格保密的,对外都说是更改UID来破解的以便混淆视听,其实用的就是这种虚拟UID 的办法。

出0入0汤圆

发表于 2016-5-9 09:59:44 | 显示全部楼层
不明觉厉啊

出0入0汤圆

发表于 2016-5-9 10:17:46 | 显示全部楼层
标记!备用。

出0入0汤圆

发表于 2016-5-9 10:37:56 | 显示全部楼层
楼主做法是对的, 隐藏 唯一ID的明文;
接着 把生成ID地址的函数 和 读ID的函数写成 强制inline, 再在多个地方做ID读取,

再加多一点, 在某个地方故意使用这个 地址值, 然后, 再存一个补码做校验, 让丫去改这个值, 直接判断是被破解的,  然后就 彩蛋, 彩蛋 + 彩蛋,.....

出0入0汤圆

发表于 2016-5-9 11:03:57 | 显示全部楼层
不用指令读取,再怎么变也是能通过数据断点抓到的。用dma搬运

出0入0汤圆

发表于 2016-5-9 17:21:11 | 显示全部楼层
这个值得收藏,要下班了明天看

出0入0汤圆

发表于 2016-5-9 18:27:49 | 显示全部楼层
高手太多了,还是不懂

出0入0汤圆

发表于 2016-5-9 18:33:51 | 显示全部楼层
无衣师伊 发表于 2016-5-8 18:20
1.
8K  FLASH不可能全部用完吧?总会有些空间剩的.好吧。只要有12字节就够了.这12字节就保存母片的ID
2.读唯 ...

这种不明文出现读取ID的地址我一直在用啊~楼主现在才想到?OUT了~
我一直都是先把ID地址加密后,然后放在一个地方,然后程序运行的时候在将其读回来解密成实际地址,然后在读取ID~
破解的人假如知道你是ID加密的,那么首先肯定是要找到你读取ID的地方~那么肯定是找有读取ID地址的那段代码~所以~~咋们绕一个圈子~吧地址隐藏一下~这回又增加了破解者的难度~

出0入0汤圆

发表于 2016-5-9 20:04:01 | 显示全部楼层
道高一尺,魔高一丈。

出0入0汤圆

发表于 2016-5-9 21:03:01 | 显示全部楼层
原来破解这么简单。。。

出0入0汤圆

发表于 2016-5-9 21:17:23 | 显示全部楼层
原来如此,学习了,唯一ID看似真的不保险。

出0入0汤圆

发表于 2016-5-9 22:24:52 | 显示全部楼层
都不是一般的人啊

出0入0汤圆

发表于 2016-5-9 22:50:17 | 显示全部楼层
鄙人浅薄,收藏慢慢体会

出0入0汤圆

发表于 2016-5-10 00:30:54 来自手机 | 显示全部楼层
营养帖。读ID后用白盒算法加密存储解决。

出0入0汤圆

发表于 2016-5-10 16:05:46 | 显示全部楼层
boboo 发表于 2016-5-8 20:04
把一组重要数据用唯一Id做密钥加密,程序运行时将数据解密。爱怎么破解怎么破解吧。只是上位机烧写再写一段 ...

这是好办法,没有跳转和判断,大大增加破解难度,除非他把加密算法高透
不过如果他有调试手段能看到母版的内存,那也很容易破

出0入0汤圆

发表于 2016-5-10 16:31:05 | 显示全部楼层
stm8s10x 发表于 2016-5-9 08:47
我一般都是绕一段代码,让变量得到4865,这样破解的人也能快速找到这段代码?    ...

下好内存读写断点,不管怎么绕只要读4865这个地址就会被检测到的

出0入0汤圆

发表于 2016-5-10 16:43:17 来自手机 | 显示全部楼层
学习下,每个码农都应该有套自己的加密算法。

出0入0汤圆

发表于 2016-5-10 17:39:02 | 显示全部楼层
无力,只能学习!!

出0入0汤圆

发表于 2016-5-10 18:09:18 | 显示全部楼层
我也搞不懂,有时给客户发HEX文件调试,只是限制了自动关机的时间,是不是很容易破解呀

出0入0汤圆

发表于 2016-5-10 18:36:36 | 显示全部楼层
新手,没看懂

出0入0汤圆

发表于 2016-5-10 20:51:20 | 显示全部楼层
Jason022 发表于 2016-5-10 16:31
下好内存读写断点,不管怎么绕只要读4865这个地址就会被检测到的

一个月检测一次就可以了,再搞个一年检测一次的

出0入0汤圆

发表于 2016-5-10 21:57:19 | 显示全部楼层
进来学习一下

出0入0汤圆

发表于 2016-5-10 22:19:34 | 显示全部楼层

不明觉厉!

出20入118汤圆

发表于 2016-5-10 23:12:29 来自手机 | 显示全部楼层
好东西,mark

出0入0汤圆

发表于 2016-5-11 08:12:56 | 显示全部楼层
15802770321 发表于 2016-5-10 20:51
一个月检测一次就可以了,再搞个一年检测一次的

我原来也这么搞过,开始使用不出问题,累计使用200小时或者开关机200次才检测id,如果是盗版再采取措施,不过好像我的东西没人盗版

出0入0汤圆

发表于 2016-5-11 08:59:33 | 显示全部楼层
唯一ID能修改的。。。

出0入0汤圆

发表于 2016-5-11 09:05:20 | 显示全部楼层
淘宝上卖的stm8脱机烧录器,那种加密怎么样?

出0入0汤圆

发表于 2016-5-11 14:13:50 | 显示全部楼层
好东西,mark,謝謝!

出10入0汤圆

发表于 2016-5-11 22:08:33 | 显示全部楼层
你们的产品有多难?
没有包括一些后台的设置吗?
如果有,那破解难度就大很多了吧。

出0入0汤圆

发表于 2016-5-11 22:23:32 | 显示全部楼层
不明觉厉。

出0入0汤圆

发表于 2016-5-11 22:43:44 | 显示全部楼层
了解少了,没看明白

出0入0汤圆

发表于 2016-5-11 23:49:38 | 显示全部楼层
不明觉厉,记号留着学习。

出0入0汤圆

发表于 2016-5-12 08:31:01 | 显示全部楼层
认真学习

出0入0汤圆

发表于 2016-5-12 09:23:11 | 显示全部楼层
get到,感谢啊

出0入8汤圆

发表于 2016-7-8 20:21:31 来自手机 | 显示全部楼层
可以结合一些按键或者拨码在出厂前按一定顺序按后才激活,然后激活之后产生自己的唯一ID和随机数分多个地址加密保存,然后

出0入0汤圆

发表于 2016-7-8 20:27:42 | 显示全部楼层
gzhuli 发表于 2016-5-8 20:21
没用的,LZ难道不知道有内存读写断点这个功能?无论你怎么绕都能抓到你读0x004865那条指令。 ...

可以判断出是否正在仿真, 然后跳过读取UID.

SWIM复位是有复位标志的, 软件仿真的话可以判断一些特殊寄存器的初值来判断

出0入0汤圆

发表于 2016-7-8 20:32:39 | 显示全部楼层
恭喜楼主。领教了

出0入0汤圆

发表于 2016-7-8 20:38:43 | 显示全部楼层
onepower 发表于 2016-5-9 10:37
楼主做法是对的, 隐藏 唯一ID的明文;
接着 把生成ID地址的函数 和 读ID的函数写成 强制inline, 再在多个地 ...

不是很懂,好好想想
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-19 17:48

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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