OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 9885|回复: 24

你辛苦做出来的id软件加密就这么轻松被改了

[复制链接]

2

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
170
金钱
170
注册时间
2018-5-30
在线时间
36 小时
发表于 2019-11-5 08:49:34 | 显示全部楼层 |阅读模式
1金钱
本帖最后由 meijc119 于 2021-10-20 15:36 编辑

破解方法.png

最佳答案

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2019-11-5 08:49:35 | 显示全部楼层
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

109

主题

5564

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
10571
金钱
10571
注册时间
2017-2-18
在线时间
1914 小时
发表于 2019-11-5 12:59:53 | 显示全部楼层
多谢分享
回复

使用道具 举报

2

主题

64

帖子

0

精华

高级会员

Rank: 4

积分
954
金钱
954
注册时间
2014-11-2
在线时间
369 小时
发表于 2019-11-6 05:28:26 来自手机 | 显示全部楼层
一般我会在Bootloader初始运行是,把唯一码读出并加密写入到其他指定位置,并做了一段解密后在动态分配的ram中读取唯一码,而这个在ram读取唯一码的程序只在特定情况下调用,平时读唯一码就用指定加密的那个代替,Bootloader生成加密的数据后,这部分加密程序自动销毁
回复

使用道具 举报

3

主题

51

帖子

0

精华

高级会员

Rank: 4

积分
530
金钱
530
注册时间
2017-7-25
在线时间
188 小时
发表于 2019-11-6 08:56:41 | 显示全部楼层
长见识了
回复

使用道具 举报

64

主题

446

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1032
金钱
1032
注册时间
2017-7-26
在线时间
275 小时
发表于 2019-11-7 09:17:46 | 显示全部楼层
不错的方法,谢谢
回复

使用道具 举报

2

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
170
金钱
170
注册时间
2018-5-30
在线时间
36 小时
 楼主| 发表于 2019-11-7 17:18:42 | 显示全部楼层
way2888 发表于 2019-11-6 05:28
一般我会在Bootloader初始运行是,把唯一码读出并加密写入到其他指定位置,并做了一段解密后在动态分配的ra ...

你看懂我上面说的吗,不管在哪里读取,只要你直接出现id地址,1分钟就被破解了
回复

使用道具 举报

12

主题

330

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2294
金钱
2294
注册时间
2016-5-21
在线时间
954 小时
发表于 2019-11-7 17:53:19 | 显示全部楼层
也就是说,唯一ID变成不是唯一ID了?
回复

使用道具 举报

51

主题

2166

帖子

2

精华

论坛元老

Rank: 8Rank: 8

积分
10653
金钱
10653
注册时间
2017-4-14
在线时间
2780 小时
发表于 2019-11-7 18:54:58 | 显示全部楼层
xxssl 发表于 2019-11-7 17:53
也就是说,唯一ID变成不是唯一ID了?

都是这么搞 2用1+1替代 存两个1 就看不出是2了  不然看到0X1FFFF7E8就知道啥回事了
回复

使用道具 举报

2

主题

64

帖子

0

精华

高级会员

Rank: 4

积分
954
金钱
954
注册时间
2014-11-2
在线时间
369 小时
发表于 2019-11-7 19:45:47 | 显示全部楼层
meijc119 发表于 2019-11-7 17:18
你看懂我上面说的吗,不管在哪里读取,只要你直接出现id地址,1分钟就被破解了

你没看懂我在说什么,你的方法都说查不出,我的方法那就更安全
回复

使用道具 举报

2

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
170
金钱
170
注册时间
2018-5-30
在线时间
36 小时
 楼主| 发表于 2019-11-8 09:43:47 | 显示全部楼层
xxssl 发表于 2019-11-7 17:53
也就是说,唯一ID变成不是唯一ID了?

就是告诉你,读id时,不要直接用明码地址,例如stm32的0x1ffff7e8,stm8的0x4865,不然很容易破解
回复

使用道具 举报

2

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
170
金钱
170
注册时间
2018-5-30
在线时间
36 小时
 楼主| 发表于 2019-11-8 09:45:13 | 显示全部楼层
nashui_sx 发表于 2019-11-7 18:54
都是这么搞 2用1+1替代 存两个1 就看不出是2了  不然看到0X1FFFF7E8就知道啥回事了

对的,就是这个意思,不要直接出现地址,bin文件如果能查到0X1FFFF7E8,就太简单了
回复

使用道具 举报

2

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
170
金钱
170
注册时间
2018-5-30
在线时间
36 小时
 楼主| 发表于 2019-11-8 09:46:34 | 显示全部楼层
way2888 发表于 2019-11-7 19:45
你没看懂我在说什么,你的方法都说查不出,我的方法那就更安全

明白了,是的,你这个方法好,在ram里面,在解密出来的bin程序里面找不到地址
回复

使用道具 举报

0

主题

70

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
206
金钱
206
注册时间
2019-12-3
在线时间
27 小时
发表于 2019-12-4 17:48:12 | 显示全部楼层
破解者拿到代码后,上仿真器,直接在读0X1FFFF7E8内存地址上设断点,就知道你在读ID了.所以这个方法只是阻止在文本文件中直接搜索0X1FFFF7E8,阻止不了仿真跟踪.
回复

使用道具 举报

2

主题

64

帖子

0

精华

高级会员

Rank: 4

积分
954
金钱
954
注册时间
2014-11-2
在线时间
369 小时
发表于 2019-12-5 03:08:40 来自手机 | 显示全部楼层
M8Sh0tn0 发表于 2019-12-4 17:48
破解者拿到代码后,上仿真器,直接在读0X1FFFF7E8内存地址上设断点,就知道你在读ID了.所以这个方法只是阻止在 ...

如果是3个月才读一次,你是不是连上仿真器连续检测3个月?
回复

使用道具 举报

2

主题

64

帖子

0

精华

高级会员

Rank: 4

积分
954
金钱
954
注册时间
2014-11-2
在线时间
369 小时
发表于 2019-12-5 07:19:16 来自手机 | 显示全部楼层
M8Sh0tn0 发表于 2019-12-4 17:48
破解者拿到代码后,上仿真器,直接在读0X1FFFF7E8内存地址上设断点,就知道你在读ID了.所以这个方法只是阻止在 ...

把程序解密后在动态分配的ram运行读取唯一码,读完立即把ram程序清零,即使你知道他在读,你也无法修改地址指针,还有,可以把其他程序与这段加密了的代码运算方式关联,来计算其他子程序执行的地址,你一旦修改,就会产生意想不到的后果,除非你把这段加密的代码分析透切,不然是很难暴力破解的
回复

使用道具 举报

0

主题

70

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
206
金钱
206
注册时间
2019-12-3
在线时间
27 小时
发表于 2019-12-5 12:57:46 | 显示全部楼层
way2888 发表于 2019-12-5 07:19
把程序解密后在动态分配的ram运行读取唯一码,读完立即把ram程序清零,即使你知道他在读,你也无法修改地 ...

请教一下, 如何来做代码运算关联?
回复

使用道具 举报

2

主题

64

帖子

0

精华

高级会员

Rank: 4

积分
954
金钱
954
注册时间
2014-11-2
在线时间
369 小时
发表于 2019-12-5 18:30:56 来自手机 | 显示全部楼层
M8Sh0tn0 发表于 2019-12-5 12:57
请教一下, 如何来做代码运算关联?

调用其他子程序使用函数指针,你把加密后的代码当做密匙,把其他子程序的地址加密,如果要调用子程序则先解密并计算函数的地址,然后调用,不要使用比较语句,总之即使地址计算错误也照样跳转,所以如果修改绑定的代码,一旦修改则很难预测运行结果
回复

使用道具 举报

0

主题

70

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
206
金钱
206
注册时间
2019-12-3
在线时间
27 小时
发表于 2019-12-5 20:30:56 | 显示全部楼层
way2888 发表于 2019-12-5 18:30
调用其他子程序使用函数指针,你把加密后的代码当做密匙,把其他子程序的地址加密,如果要调用子程序则先 ...

先谢过,再仔细琢磨一下
回复

使用道具 举报

0

主题

3

帖子

0

精华

新手入门

积分
16
金钱
16
注册时间
2019-6-27
在线时间
4 小时
发表于 2020-6-18 08:30:59 | 显示全部楼层
way2888 发表于 2019-12-5 03:08
如果是3个月才读一次,你是不是连上仿真器连续检测3个月?

请问如何编程,才能设置成3个月读一次!
回复

使用道具 举报

6

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
105
金钱
105
注册时间
2015-7-28
在线时间
16 小时
发表于 2020-11-14 16:41:17 | 显示全部楼层
way2888 发表于 2019-12-5 07:19
把程序解密后在动态分配的ram运行读取唯一码,读完立即把ram程序清零,即使你知道他在读,你也无法修改地 ...

是把解密后的数据放到ram中,还是把解密程序放到ram中
回复

使用道具 举报

3

主题

1907

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4106
金钱
4106
注册时间
2018-8-14
在线时间
696 小时
发表于 2020-11-15 20:45:08 | 显示全部楼层
本帖最后由 edmund1234 于 2020-11-15 20:48 编辑

目前知道最有效的方法有两个
一是Level 2 (这应该是半年前的消息, 现在是否已经可以破解真不了解)
二是, reset vector 指向 定位在reset vector的同一个sector的核对代码, 复位后之后啥也不做, 只做flash checksum校对, 一单checksum出问题, 就进入死循环或自杀行为, 别跳出此sector, 更不要开中断。

检查uid的方法是肯定不行的。
回复

使用道具 举报

2

主题

64

帖子

0

精华

高级会员

Rank: 4

积分
954
金钱
954
注册时间
2014-11-2
在线时间
369 小时
发表于 2020-11-16 08:09:12 来自手机 | 显示全部楼层
wenqing 发表于 2020-11-14 16:41
是把解密后的数据放到ram中,还是把解密程序放到ram中

在需要的时候,动态申请一份ram,把解码后的程序放在里面执行
回复

使用道具 举报

2

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
170
金钱
170
注册时间
2018-5-30
在线时间
36 小时
 楼主| 发表于 2021-8-31 15:30:09 | 显示全部楼层
设计好的程序,如果担心被破解,最好id软件加密先给我免费破破看  Q5225016
回复

使用道具 举报

2

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
170
金钱
170
注册时间
2018-5-30
在线时间
36 小时
 楼主| 发表于 2021-10-20 15:35:43 | 显示全部楼层
破解方法.png
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-9 04:19

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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