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++;}
- }
復(fù)制代碼
2.把讀出的ID號生成其他數(shù)據(jù)。不一定就是12字節(jié)的!并保存在內(nèi)部EEPROM。在這個模塊準備2個函數(shù).一個用于加密.一個用于解密
- 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字節(jié)生成12*N個字節(jié)
- {
- *pEE++=第1種算法,商業(yè)原因.我的算法就不公開了.大家可以準備一個數(shù)組查表
- while(FLASH_GetFlagStatus(FLASH_FLAG_EOP)== RESET);
- *pEE++=第2種算法,商業(yè)原因.我的算法就不公開了。大家可以準備一個數(shù)組查表
- while(FLASH_GetFlagStatus(FLASH_FLAG_EOP)== RESET);
- 。。。。
- 第N種算法
- }
- }
復(fù)制代碼
//解密函數(shù)
unsigned char StmCheckUniqueID(unsigned char Addr)
3.主函數(shù)里面設(shè)置一個時間最好設(shè)置長一點。半個鐘或其他,讓人家難跟蹤
- while(1)
- {
- 其他任務(wù)...............
- /////////////////////////////////////////////////////////////////////////
- if((Flag&FLAG_CHECK_ID)==FLAG_CHECK_ID)
- {
- Flag&=~FLAG_CHECK_ID;
- if(StmCheckUniqueID(UniqueIDAddress)==1){IsIDCorrect=0x01;}//正確寫入
- else{IsIDCorrect=0x00;}//錯誤寫入
- }
- /////////////////////////////////////////////////////////////////////////
- 其他任務(wù)...............
- }
- /////////////////////////////////////////////////////////////////////////
復(fù)制代碼
總結(jié):
這樣做還是能被破解的。但對方已經(jīng)很難跟蹤了.
如果破解者對芯片熟悉.他會根據(jù)ID號的地址!----畢竟芯片ID號的地址是固定的.找到對應(yīng)的調(diào)用程序.加密時用到芯片ID號的地址。解密時也有用到芯片ID號的地址
所以只有對方熟.是能很快跟蹤到加密/解密程序.而在解密程序入口就return出去!
這種方法已經(jīng)很實用了.畢竟不是太專業(yè)的很難破.
【必讀】版權(quán)免責(zé)聲明
1、本主題所有言論和內(nèi)容純屬會員個人意見,與本論壇立場無關(guān)。2、本站對所發(fā)內(nèi)容真實性、客觀性、可用性不做任何保證也不負任何責(zé)任,網(wǎng)友之間僅出于學(xué)習(xí)目的進行交流。3、對提供的數(shù)字內(nèi)容不擁有任何權(quán)利,其版權(quán)歸原著者擁有。請勿將該數(shù)字內(nèi)容進行商業(yè)交易、轉(zhuǎn)載等行為,該內(nèi)容只為學(xué)習(xí)所提供,使用后發(fā)生的一切問題與本站無關(guān)。 4、本網(wǎng)站不保證本站提供的下載資源的準確性、安全性和完整性;同時本網(wǎng)站也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的損失或傷害。 5、本網(wǎng)站所有軟件和資料均為網(wǎng)友推薦收集整理而來,僅供學(xué)習(xí)用途使用,請務(wù)必下載后兩小時內(nèi)刪除,禁止商用。6、如有侵犯你版權(quán)的,請及時聯(lián)系我們(電子郵箱1370723259@qq.com)指出,本站將立即改正。
|