久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標(biāo)題:
stm32芯片利用唯一ID對(duì)程序進(jìn)行加密的一種方法
[打印本頁]
作者:
irisice008
時(shí)間:
2021-5-27 15:14
標(biāo)題:
stm32芯片利用唯一ID對(duì)程序進(jìn)行加密的一種方法
#define STM32_ID_D 352525 //任意的一個(gè)數(shù)
//stm32芯片的ID地址,把地址減去一個(gè)數(shù),避免匯編里面直接出現(xiàn)ID的地址,不然很容易暴露加密與ID號(hào)有關(guān)
volatile u32 STM32_ID_addr[3]={0x1ffff7e8 - STM32_ID_D,0x1ffff7ec + STM32_ID_D,0x1ffff7f0 - STM32_ID_D};
/********************************************************************
函數(shù)功能:讀出stm32的ID,12字節(jié)
入口參數(shù):p
返 回:
備 注:把ID的地址做一下處理,加密性更好
********************************************************************/
volatile void STM32_Read_ID(volatile u32 *p)
{
volatile u32 Addr;
// 因?yàn)椴幌胱尦绦蛟诜磪R編后直接找到這個(gè)地址,所以這個(gè)地址是運(yùn)算出來的,
// 跟STM32_ID_addr反運(yùn)算,當(dāng)然了也可以用高級(jí)的算法,注意不能讓編譯器優(yōu)化這個(gè)地址
Addr = STM32_ID_addr[0] + STM32_ID_D;
p[0] = *(vu32*)(Addr);
Addr = STM32_ID_addr[1] - STM32_ID_D;
p[1] = *(vu32*)(Addr);
Addr = STM32_ID_addr[2] + STM32_ID_D;
p[2] = *(vu32*)(Addr);
}
/********************************************************************
函數(shù)功能:加密ID并保存
入口參數(shù):
返 回:
備 注:
********************************************************************/
void STM32_Encrypted_ID(void)
{
u32 stm32ID[4],dat;
STM32_Read_ID(stm32ID);
//這里可以用其它一些高級(jí)的算法,但解和加要一樣
//把ID號(hào)處理成一個(gè)32位數(shù),也可以用自己的算法,處理成其他數(shù)據(jù),多少位都行
stm32ID[3] = STM32_ID_D;
dat = stm32ID[0] + stm32ID[1] - (stm32ID[2]/stm32ID[3]); //處理成一個(gè)32位數(shù)
FLASH_Unlock();
FLASH_ErasePage (STM32FLASH_EN_ID_START_ADDR); //
FLASH_ProgramWord(STM32FLASH_EN_ID_START_ADDR,dat); //保存這個(gè)數(shù),寫進(jìn)32位
FLASH_Lock();
}
/********************************************************************
函數(shù)功能:比較加密ID,正確返回0
入口參數(shù):
返 回:1:不正確,0:正確
備 注:
********************************************************************/
u32 STM32_CMP_Encrypted_ID(void)
{
u32 stm32ID[4],dat,dat2;
STM32_Read_ID(stm32ID);
// 這里可以用其它一些高級(jí)的算法,但解和加要一樣
stm32ID[3] = STM32_ID_D;
dat = stm32ID[0] + stm32ID[1] - (stm32ID[2]/stm32ID[3]);
dat2 = *(u32*)(STM32FLASH_EN_ID_START_ADDR); //讀出加密時(shí),保存在flash中的數(shù)
if(dat == dat2){return 0;} // 相同
else {return 1;} // 不同
}
//好了,有了上面那個(gè)程序,那下再繼續(xù)
//===================ID加密控制=====================================================================
if(STM32_CMP_Encrypted_ID())
{
//量產(chǎn)時(shí)給一些條件,條件滿足就對(duì)ID加密,然后把加密結(jié)果保存到flash中,把該程序與芯片的ID,唯一對(duì)應(yīng)起來,加密完后,你也可以讓它自宮。
if(XXXXXX)
{
STM32_Encrypted_ID(); //加密ID
自宮 //即把加密這段代碼從flash里面擦除,直接跳出去繼續(xù)執(zhí)行
}
}
//===================正常運(yùn)行時(shí)==================================
// 校驗(yàn)一下ID是否正確,
if(STM32_CMP_Encrypted_ID())
{
/*
來到這里嘛,當(dāng)然不正確咯,你別讓程序死在這哦,太明顯了,很容易找到是你干的,
那么,一個(gè)系統(tǒng)肯定有一些參數(shù)才能運(yùn)行的,你可以改變一些參數(shù),這可以讓系統(tǒng)
有時(shí)正常有時(shí)不正常,,呵呵,要查也不是那么容易的事了
*/
}
}
作者:
meifan2010
時(shí)間:
2021-8-31 15:38
設(shè)計(jì)好的程序,如果擔(dān)心被破解,最好id軟件加密先給我免費(fèi)破破看
歡迎光臨 (http://m.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
夜夜操夜夜爽
|
手机看片久久
|
亚洲激情偷拍
|
欧美日韩不卡
|
avxxxxx
|
亚洲午夜久久
|
欧美精品久久久久久
|
日日爱视频
|
中文在线免费看视频
|
国产wwwwww
|
国产精品美女毛片真酒店
|
日韩一区二区三区在线播放
|
精品国产乱码久久久久久蜜臀网站
|
欧美有码视频
|
久久精品欧美一区
|
成人免费在线观看
|
亚洲免费在线视频
|
日韩欧美三区
|
一区二区三区在线观看免费
|
四虎8848精品成人免费网站
|
国产精品av在线
|
欧美激情小视频
|
国产91清纯白嫩初高中在线观看
|
99视频精品
|
天堂中文资源在线
|
四虎黄色网址
|
中文字幕不卡在线观看
|
国产成人在线免费视频
|
日韩免费成人
|
日韩色av
|
亚洲一级二级三级
|
日韩免费在线观看视频
|
日皮视频在线观看
|
国产盗摄一区二区三区
|
超碰av在线播放
|
永久免费精品视频
|
99久久综合
|
欧美午夜精品一区二区三区
|
一区两区小视频
|
日韩网站免费观看
|
日韩精品国产精品
|