stm32 代碼加密

1.設置讀寫保護

    設置保護:

if (FLASH_GetReadOutProtectionStatus()!=SET) 
{
    FLASH_ReadOutProtection(ENABLE); 
    FLASH_Lock();
}

    解除保護:

if (FLASH_GetReadOutProtectionStatus()==SET)
{
	FLASH_Unlock();
	FLASH_ReadOutProtection(DISABLE);
}

這種方式可以通過RAM啓動和IAP的方式解除保護,但是解除保護的同時FLASH也被擦除了。

 

2.代碼加密

    比較可靠的是這種方式,每個MCU都有唯一的ID,讀取該ID,再對該ID進行一些加密變換,假設變換之後的ID是0x12345678,然後在程序的多個關鍵部分判斷ID是否正確,否則不執行。通過此種方式加密後,破解者基本就只能通過反編譯的方式(假設他已經破解了第一層防護讀取到了你的代碼)來破解你的代碼了,對ID加密變換的目的是增加反編譯的難度,未加密變換時反編譯還是不難的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章