打印

null

[复制链接]
16893|82
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
sinanjj|  楼主 | 2010-7-19 19:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 sinanjj 于 2011-11-11 23:44 编辑

null

相关下载

沙发
chunyang| | 2010-7-19 19:41 | 只看该作者
这个思路是唯一ID芯片推出的初衷,只能防不修改原文件1:1复制的但防不了反汇编修改后再编译的,真正重要的系统需要在软件编制上下功夫,必须阻止反汇编。还有个思路就是准许或限制反汇编,但通过适当手段留取特殊的版权信息,被盗版后可以据此采取司法手段,还可以留修改再编译陷阱等,当然,多种招数也可混用,但最主要的是尽量采用不易被**的芯片,特别是对于廉价小系统而言。

使用特权

评论回复
板凳
呆板书生| | 2010-7-19 19:45 | 只看该作者
很好,听课

使用特权

评论回复
地板
jack.king| | 2010-7-19 19:47 | 只看该作者
那该怎么办呢?

使用特权

评论回复
5
chunyang| | 2010-7-19 20:50 | 只看该作者
联网认证也得先阻止反汇编修改,而且要实现联网认证得为此付出不少资源,多数电子产品是无法承受的,联网也不是随处可得,适用面很窄。

使用特权

评论回复
6
highgear| | 2010-7-19 21:09 | 只看该作者
顶chunyang。
只要不能阻挡反汇编,意义就不大。手段越复杂,可操作性越低。

使用特权

评论回复
7
ecomputer| | 2010-7-19 21:36 | 只看该作者
sinanjj似乎要把嵌入式系统中的软件做成PC机上那种强大 一样

使用特权

评论回复
8
lxyppc| | 2010-7-19 22:32 | 只看该作者
完全无法**是不可能的
只要**成本大于研发陈本就行了
或是更新周期快于现有技术下的**周期

使用特权

评论回复
9
Wxy8030| | 2010-7-19 22:55 | 只看该作者
这个帖子要做标记......

使用特权

评论回复
10
最爱01间| | 2010-7-19 22:56 | 只看该作者
呵呵!MARK!

使用特权

评论回复
11
寄语信鸽| | 2010-7-19 23:04 | 只看该作者
"通过对某些管角加压的方式来读出MCU中flash文件"
真的是这样吗?

51、PIC是能**的,AVR、freescale、MSP430还有那些32位ARM系列单片机也能**吗?

使用特权

评论回复
12
hotpower| | 2010-7-20 02:26 | 只看该作者
前天晚上与司南谈论了最新的加密方法,昨天和今天找了几位,其中有2位是**行家,一直认为方法简单易用,难以**。
其思路基于COM接口技术:
1.假使程序共有10个函数f0(),f1(),...f9(),顺序编程
2.创建2个结构体s0,s1
3.s0中有2个重要的成员,其中ptr为指向s1的结构指针,fn为函数的个数
4.s1中只有一种数据类型即函数指针,F0,F1,..F9对应指向函数f0(),f1(),...f9(),Fx指向f9()后的空函数fx()
  即f0()(),f1(),...f9()的长度为L0=f1()-f0(),L0=f2()-f1(),L3=f3()-f2(),...L9=fx()-f9(),
函数调用方式:
s0->ptr->F0(),s0->ptr->F1,...s0->ptr->F9()
Hex文件上传远程加密网站,并提供s0装载位置即首地址

远程加密过程分两个阶段
1.ISP
   每次将f0(),f1(),...f9()打乱,F0,F1,...F9顺序不变值变化(函数位置移动),即每个Hex文件每次传送都不一样
   网站记住s0,s0全部成员后填充为空!!!,这样isp过程即使拦截也无法知道s0,s1
2.IAP
   IAP运行指针在isp时也填充为空,这样isp无法知道IAP程序在何处。IAP指针只有一处
   IAP命令参数及调用地址由IAP与串口通讯动态得到,也想就恢复了s0和s1,程序后将IAP入口指针清零,防止下钩子
   IAP传送用密文传送


程序

使用特权

评论回复
13
isoar| | 2010-7-20 07:15 | 只看该作者
要复制一块PCB, **者需要知道:
2, MCU的hex文件, 就是软件部分. 这个对大部分**者来说更是小菜一碟, 通过对某些管角加压的方式来读出MCU中flash文件, 修改成hex文件.
sinanjj 发表于 2010-7-19 19:05


这条我也很怀疑,不用说高级的ARM和DSP的加密,就是高档的51芯片设置加密位以后想读出其内部的数据都是非常困难的。例如:我曾经拿着一片P89C669到处找过“**抄板专家们”,想读出其中的加密程序,未果。如果楼主知道哪些能“小菜一碟”们高手的电话,请提供。

使用特权

评论回复
14
huangqi412| | 2010-7-20 07:22 | 只看该作者
:o   现阶段,让每个单片机都联网,恐怕不现实吧...

使用特权

评论回复
15
huangqi412| | 2010-7-20 07:29 | 只看该作者
太低档的单片机,直接读汇编也木多少代码,甚至直接重写也工作量估计不会很大.  AVR**就是白菜价.
高级一点的单片机,代码量就大了,再人为的整点东西在里面,应该木这么容易反汇编吧.    听人说过他把ECU代码全部反汇编了还能任意的修改功能,任意修改功能这点貌似不太可能。

使用特权

评论回复
16
hotpower| | 2010-7-20 07:32 | 只看该作者
晕!~~~15楼俺打的是醉拳,迷糊的要命,真不知是怎样写出来的

它实际是一种防止数据拦截的方法,根本未动用任何加密算法。
其核心是“一次一密”,即同一个Hex文件,每次传输到终端的结果都是不一样的。
但它并未破坏程序的任何根基,只是“源文件”中函数之间的位置的相对调换和函数指针内容的变化,
这样做会产生两大处Hex文件内容的不同。
1.s1中函数指针F0~F9内容及绑定函数的位置即地址的变化即相对移动。
  这样Hex文件就会发生变化,它的变化是由于函数体之间的位置交换。
  s1中的成员名F0~F9并未更名,即用户函数的调用方式不会被改变
  仍然是:s0->ptr->F0(),s0->ptr->F1,...s0->ptr->F9()

2.函数体之间若发生位置之间的移动,将直接导致Hex文件的剧烈变化。
  它也牵连了绑定函数指针内容的变化,即F0~F9内容的变化。

总结:
1.其方法用2个结构体来描述函数的位置和大小。并用结构成员即函数指针互相捆绑。
2.由于捆绑的关系,函数体的位置交换必牵动捆绑它们的指针内容的变化。
3.结构成员名称并未发生变化,这样调用它们的语句也不会变化。
4.s0绑定了s1,s1又绑定了所有函数,所以只要知道s0的入口地址,则知道全部函数的位置。

从上述4条可以看出,s0的入口地址是攻击所在,但是在Hex文件上传远程网站后被做了下列变化:
1.s0->ptr被清空即填入0xffffffff,这样就无法找到s1
2.s1.F0~s1.F9被清空即填入0xffffffff,这样就无法找到f0()~f9()

可以看出,此时被虚拟改变的Hex文件即ISP传输的数据是可以公开的,是不怕拦截的,关键是s1找不到。
破译者必须从这个Hex文件中反汇编找到生成真实指针地址的代码及IAP的写入代码

本远程下载的核心和硬件支持为ISP+IAP,前者是可以公开的,而后者是解密之关键所在。
在传统的IAP程序中都大量采用了分支,即如何IAP的方法,那麽在反汇编ISP是就会被发现。
本方法的IAP没有分支,只有一个IAP方法指针,它指向每个IAP函数,在Hex文件即ISP中被初始化为0!!!
这样破译者只能认为是软件复位,因为真正的方法指针和参数(读写入地址及数据块)是IAP传输过程产生的。
所以破译者只能通过拦截IAP通讯协议来得到s1和f0()~f9().

由于f0()~f9()位置的不同,即Hex块不同,相对的校验块的和也不同,这样每个IAP过程传递的数据也就不
可能相同。

所以,工程师编写的“唯一的Hex文件”在两大传输ISP和IAP过程中都被改变为不同。

晕,本来面对面几句话能说清的,让文字来描述就这么晕沉,“交流怎么就这么难呢”???

使用特权

评论回复
17
hotpower| | 2010-7-20 07:51 | 只看该作者
顶chunyang。
只要不能阻挡反汇编,意义就不大。手段越复杂,可操作性越低。
highgear 发表于 2010-7-19 21:09


ISP过程可以公开,意味着反汇编无意义。

因为此方法规定函数的访问是通过函数指针来访问的,不知道函数指针的值
即函数的调用地址,反汇编休矣!!!

从调用方法来看:
真的f0()需要书写为:s0->ptr->F0()

在ISP中,可以反汇编出来s0,但ptr和F0都为0xffffffff,所以根本找不到f0()

而ptr和F0是在IAP中生成的,IAP采用通用函数指针,即程序散转,散转的控制
在IAP的传输流中,在ISP并未有任何流露,故反汇编ISP和IAP的架构都不能得到s1即s0->ptr

故此方法实际是反拦截的方法,告诉破译者拦截ISP无任何意义

使用特权

评论回复
18
hotpower| | 2010-7-20 07:54 | 只看该作者
太低档的单片机,直接读汇编也木多少代码,甚至直接重写也工作量估计不会很大.  AVR**就是白菜价.
高级一点的单片机,代码量就大了,再人为的整点东西在里面,应该木这么容易反汇编吧.    听人说过他把ECU代码全部反汇 ...
huangqi412 发表于 2010-7-20 07:29


反汇编其中一个目的就是可以任意添加和删除代码或数据

使用特权

评论回复
19
hotpower| | 2010-7-20 07:56 | 只看该作者
:o   现阶段,让每个单片机都联网,恐怕不现实吧...
huangqi412 发表于 2010-7-20 07:22


正确,因为它在硬件上必须满足ISP+IAP,故抵挡MCU是不可能赶上潮流的。

故俺村里人决定永远放弃低档单片机

使用特权

评论回复
20
hotpower| | 2010-7-20 07:58 | 只看该作者
这条我也很怀疑,不用说高级的ARM和DSP的加密,就是高档的51芯片设置加密位以后想读出其内部的数据都是非常困难的。例如:我曾经拿着一片P89C669到处找过“**抄板专家们”,想读出其中的加密程序,未果。如果楼 ...
isoar 发表于 2010-7-20 07:15


隔行如隔山,密界读有些MCU和读文件一样轻松,密界的难处是如何将其反汇编

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:In God We Trust 独立的个人,体赖科学技术工具提供针对个人的产品与服务,是通向幸福的唯一道路 工程师,设计师等可以个人创业的群体,将逐步瓦解官僚体制公司,成为中国中产。(重复劳动,工厂等,将逐步机械化) seacer.co

456

主题

6300

帖子

25

粉丝