1.读出ID号
- #if defined(STM8S103)
- #define ID_BaseAddress (0x4865)
- #else// defined(STM8S105)
- #define ID_BaseAddress (0x48CD)
- #endif
- void GetUniqueID(unsigned char *p)
- {
- unsigned char i;
- unsigned char *pIDStart=(unsigned char *)(ID_BaseAddress);
- for(i=0;i!=12;i++){*p++=*pIDStart++;}
- }
复制代码
2.把读出的ID号生成其他数据。不一定就是12字节的!并保存在内部EEPROM。在这个模块准备2个函数.一个用于加密.一个用于解密
- void StmWriteUniqueID(unsigned char Addr)
- {
- unsigned char i;
- FLASH_SetProgrammingTime(FLASH_PROGRAMTIME_STANDARD);
- while (FLASH_GetFlagStatus(FLASH_FLAG_DUL) == RESET)FLASH_Unlock(FLASH_MEMTYPE_DATA);
- unsigned char *pEE=(unsigned char *)(FLASH_DATA_START_PHYSICAL_ADDRESS+(u32)Addr);
- unsigned char *pIDStart=(unsigned char *)(ID_BaseAddress);
- for(i=0;i!=6;i++)//由12字节生成12*N个字节
- {
- *pEE++=第1种算法,商业原因.我的算法就不公开了.大家可以准备一个数组查表
- while(FLASH_GetFlagStatus(FLASH_FLAG_EOP)== RESET);
- *pEE++=第2种算法,商业原因.我的算法就不公开了。大家可以准备一个数组查表
- while(FLASH_GetFlagStatus(FLASH_FLAG_EOP)== RESET);
- 。。。。
- 第N种算法
- }
- }
复制代码
//解密函数
unsigned char StmCheckUniqueID(unsigned char Addr)
3.主函数里面设置一个时间最好设置长一点。半个钟或其他,让人家难跟踪
- while(1)
- {
- 其他任务...............
- /////////////////////////////////////////////////////////////////////////
- if((Flag&FLAG_CHECK_ID)==FLAG_CHECK_ID)
- {
- Flag&=~FLAG_CHECK_ID;
- if(StmCheckUniqueID(UniqueIDAddress)==1){IsIDCorrect=0x01;}//正确写入
- else{IsIDCorrect=0x00;}//错误写入
- }
- /////////////////////////////////////////////////////////////////////////
- 其他任务...............
- }
- /////////////////////////////////////////////////////////////////////////
复制代码
总结:
这样做还是能被破解的。但对方已经很难跟踪了.
如果破解者对芯片熟悉.他会根据ID号的地址!----毕竟芯片ID号的地址是固定的.找到对应的调用程序.加密时用到芯片ID号的地址。解密时也有用到芯片ID号的地址
所以只有对方熟.是能很快跟踪到加密/解密程序.而在解密程序入口就return出去!
这种方法已经很实用了.毕竟不是太专业的很难破.
【必读】版权免责声明
1、本主题所有言论和内容纯属会员个人意见,与本论坛立场无关。2、本站对所发内容真实性、客观性、可用性不做任何保证也不负任何责任,网友之间仅出于学习目的进行交流。3、对提供的数字内容不拥有任何权利,其版权归原著者拥有。请勿将该数字内容进行商业交易、转载等行为,该内容只为学习所提供,使用后发生的一切问题与本站无关。 4、本网站不保证本站提供的下载资源的准确性、安全性和完整性;同时本网站也不承担用户因使用这些下载资源对自己和他人造成任何形式的损失或伤害。 5、本网站所有软件和资料均为网友推荐收集整理而来,仅供学习用途使用,请务必下载后两小时内删除,禁止商用。6、如有侵犯你版权的,请及时联系我们(电子邮箱1370723259@qq.com)指出,本站将立即改正。
|