搜索
bottom↓
回复: 57

ATtiny13自宫程序

[复制链接]

出0入0汤圆

发表于 2010-3-17 19:16:36 | 显示全部楼层 |阅读模式
在看数据手册的时候发现ATtiny13也有LPM和SPM指令,说明ATtiny13可以自编程。

于是就写了这个程序,用于防破解应该不错,不过是自宫型的,哈哈,是比较狠的方法。

此程序可以删除整个FLASH空间,包括这个删除程序本身。(删除程序后面的无法删除,因为程序没了,无法运行了,

所以要将程序放在最后,但够用了,稍加修改就可以全删除整个FLASH)。

#include<iot13v.h>
#include<data.h>
//#include<data.h> 里面全是数据,用于填充FLASH空间
void delayms(unsigned int z)   //4.8MHz 1-6553mS
{         unsigned int x;
         unsigned char y;
         z=z*10;
         for(x=0;x<z;x++)
         for(y=0;y<117;y++);}

void DELFLASH(void);  //删除FLASH程序

void main(void)
{
DDRB=(1<<4);   //PB4口为输出
PORTB|=(1<<4); //点亮LED

DELFLASH();   //删除FLASH程序

while(1)
                {
                 PORTB^=(1<<4);  //LED闪烁
                 delayms(555);
                 }
}

void DELFLASH(void)     //删除FLASH程序
{ unsigned char Dzh,Dzl=0,n;
   for(n=0;n<32;n++)
     {Dzh=n/8;
      asm("MOV R31,%Dzh");  //ZH  Flash地址
      asm("MOV R30,%Dzl");  //ZL
      SPMCSR=(1<<1)|(1<<0);
      asm("SPM");
      Dzl+=32;}
}



(要设置这个熔丝)


(写入的数据)


(读出的数据)


(读出的数据)

点击此处下载 ourdev_538903.rar(文件大小:16K) (原文件名:ATtiny13DelFlash.rar(原工程))

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

发表于 2010-3-17 19:37:51 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-3-17 21:04:06 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-3-17 21:24:58 | 显示全部楼层
mark

出300入0汤圆

发表于 2010-3-18 02:00:57 | 显示全部楼层
支持楼主!
这个我前年关于有个破解的帖子就是这个内容,不光是SPM,还有如何加密的部分。不过是汇编写的,可以精确的控制位置,加密的时候需要起始段在读取加密字、运算后后,执行自删除
http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=1226305&bbs_page_no=1&search_mode=3&search_text=whtom&bbs_id=9999

出300入0汤圆

发表于 2010-3-18 02:14:08 | 显示全部楼层
不过我还可以告诉lz一个事情:如果有人能够设法读取你加密flash的代码,无需改动太多:

只需要改掉2个字内容,你这个删除程序就是废物一个:

在你的第二张图的0X0DE、0X0DF字节以及0x108、0x109,如果内容改为0xff,你这个SPM程序就是废物,这是我研究的结果,所以这也是后来我不在提起用osscal加密的想法原因。与楼主共勉!

出0入0汤圆

 楼主| 发表于 2010-3-18 02:36:20 | 显示全部楼层
哈哈,现在才看到你那个贴啊

我正在研究AVR的自编程,数据手册这方面的介绍确实太少了,我也是写测试代码摸索出来的。

最终要实现读修改写,把剩余的FLASH空间当EEPROM用。

也可以适当修改程序本身。

不过现在最头大的是用C语言很难定位FLASH空间。不像汇编.org就解决了。

不知道有没好的方法用C定位FLASH空间?

出0入0汤圆

 楼主| 发表于 2010-3-18 02:50:41 | 显示全部楼层
其实像ATtiny13这样的芯片应该没什么去破解吧?

解密不如自己开发,也就1K的FLASH的空间应该好搞定吧?

这个删除程序要看怎么用了,比如判断引脚电平,要解密就要把芯片拿下来,

要先将熔丝解开吧?这样就可以判断引脚电平了,比如就芯片离了板,只加电源,引脚电平不对就可以删程序了。

这样破解者跟本就拿不到源代码了,不用说改什么了。

如果真的拿到源代码了,确实是可以将SPM(E895)改成(0000)就行了。(最后一张图的0x380对应的数据)

出0入0汤圆

发表于 2010-3-18 08:07:28 | 显示全部楼层
gcc有 __attribute__ (section(".sectionname")) 定位程序存储位置

出0入0汤圆

 楼主| 发表于 2010-3-18 15:06:30 | 显示全部楼层
有ICCAVR的定位方法吗?

出0入0汤圆

 楼主| 发表于 2010-3-19 00:40:20 | 显示全部楼层
将n的值改成128可以用在ATmega48上

void DELFLASH(void)     //删除FLASH程序
{ unsigned char Dzh,Dzl=0,n;
   for(n=0;n<128;n++)
     {Dzh=n/8;
      asm("MOV R31,%Dzh");  //ZH  Flash地址
      asm("MOV R30,%Dzl");  //ZL
      SPMCSR=(1<<1)|(1<<0);
      asm("SPM");
      Dzl+=32;}
}

出0入0汤圆

发表于 2010-3-19 02:09:20 | 显示全部楼层
高手

出0入0汤圆

 楼主| 发表于 2010-3-19 03:38:56 | 显示全部楼层
看了ICCAVR的说明,找到了定位方法,哈哈

#pragma abs_address:0xFC0      //这里写想要放的位置
void DELFLASH(void)     //删除FLASH程序  
{ unsigned char Dzh,Dzl=0,n;  
   for(n=0;n<128;n++)  
     {Dzh=n/8;  
      asm("MOV R31,%Dzh");  //ZH  Flash地址  
      asm("MOV R30,%Dzl");  //ZL  
      SPMCSR=(1<<1)|(1<<0);  
      asm("SPM");  
      Dzl+=32;}  
}  
#pragma end_abs_address

出0入0汤圆

 楼主| 发表于 2010-3-19 03:46:13 | 显示全部楼层
...将这段程序放在FLASH的最后,M48对应的0xFC0,我日,擦的一干二净。

ATmega48的整个FLASH空间都变0xFF

出0入0汤圆

发表于 2010-3-19 06:46:22 | 显示全部楼层
mk

出0入0汤圆

发表于 2010-3-19 08:05:36 | 显示全部楼层
高手,做下记号

出0入0汤圆

发表于 2010-3-19 09:04:41 | 显示全部楼层
马克

出0入0汤圆

发表于 2010-3-19 13:03:54 | 显示全部楼层
特别提示:您使用的是非智峰软件的编程器或下载器,智峰软件不提供技术支持。

出0入0汤圆

发表于 2010-3-19 13:21:19 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-3-19 17:32:16 | 显示全部楼层
1、特别提示:您使用的是非智峰软件的编程器或下载器,智峰软件不提供技术支持。


2、这种方法太危险了 意外擦除怎么办??  XX医院3分钟解除烦恼。。。。

出0入0汤圆

发表于 2010-3-19 20:51:30 | 显示全部楼层
mark

出0入0汤圆

 楼主| 发表于 2010-3-19 23:07:56 | 显示全部楼层
http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=3927784&bbs_id=9999

FLASH可以当EEPROM用了哈

出0入0汤圆

发表于 2010-3-19 23:51:07 | 显示全部楼层
mark

出0入42汤圆

发表于 2010-3-20 07:49:45 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-3-20 08:18:03 | 显示全部楼层
MARK

出0入0汤圆

发表于 2010-3-20 09:34:23 | 显示全部楼层
应该是有开放IAP功能的mcu,都可以用户写自擦除程序吧,

没有研究。。看看lz帖子不错!

出0入0汤圆

发表于 2010-3-20 09:42:18 | 显示全部楼层
不错,研究一下

出0入0汤圆

发表于 2010-3-20 09:51:45 | 显示全部楼层
mark too...

出0入0汤圆

发表于 2010-3-20 10:04:28 | 显示全部楼层
好贴,顶哇!

出0入0汤圆

发表于 2010-3-20 10:10:57 | 显示全部楼层
哈哈,有意思。

出0入0汤圆

发表于 2010-3-20 10:38:20 | 显示全部楼层
MARK一下。

出0入0汤圆

发表于 2010-3-20 11:45:39 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-3-20 12:10:05 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-5-14 01:22:43 | 显示全部楼层
记号~~

出0入0汤圆

发表于 2010-5-15 13:37:15 | 显示全部楼层
厉害

出0入0汤圆

发表于 2010-5-15 17:30:34 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-5-19 18:24:10 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-12-2 21:01:22 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-12-28 11:08:47 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-12-28 12:02:00 | 显示全部楼层
好东西,给自己的程序搞点防卫啊,哈哈!

出0入22汤圆

发表于 2010-12-28 13:34:17 | 显示全部楼层
关注

出0入4汤圆

发表于 2010-12-28 14:20:00 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-3-8 18:02:54 | 显示全部楼层
很好!

出0入0汤圆

发表于 2012-3-8 18:38:17 | 显示全部楼层
不错,先记号了。

出0入0汤圆

发表于 2012-3-8 19:02:32 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-3-8 19:14:17 | 显示全部楼层
mark

出0入0汤圆

发表于 2013-2-17 19:53:12 | 显示全部楼层
不错,不过应该用几种方式结合才比较好
还好我做的程序都没有必要加密!

出0入0汤圆

发表于 2013-2-19 16:15:41 来自手机 | 显示全部楼层
学习一下....

出0入4汤圆

发表于 2013-3-2 03:32:45 | 显示全部楼层
mark  iccavr

出0入0汤圆

发表于 2013-3-2 07:54:33 | 显示全部楼层
mark too
字不够,我补啊补。

出0入0汤圆

发表于 2013-3-2 18:58:29 | 显示全部楼层
看人家怎么自宫

出0入0汤圆

发表于 2013-3-2 19:27:12 来自手机 | 显示全部楼层
记号,自宫程序写法

出0入0汤圆

发表于 2013-3-2 20:21:34 | 显示全部楼层
学习了!

出0入4汤圆

发表于 2013-3-3 23:16:39 | 显示全部楼层
刚买了tiny13,哈哈,试试

出0入0汤圆

发表于 2014-9-10 17:05:13 | 显示全部楼层
flash擦除程序,mark

出0入0汤圆

发表于 2014-9-14 15:06:39 | 显示全部楼层

MARK一下。

出0入0汤圆

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

本版积分规则

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

GMT+8, 2024-6-3 00:15

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

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