學(xué)習(xí)啦 > 學(xué)習(xí)電腦 > 電腦安全 > 網(wǎng)絡(luò)安全知識 > stm32防破解方法

stm32防破解方法

時間: 權(quán)威724 分享

stm32防破解方法

  STM32系列從問世以來就以優(yōu)異的性能和便宜的價格深得人心,但是不幸的是樹大招風(fēng),問世不就久就被解密公司破了,從12年的12萬的解密價格,到13年的6萬,14年一萬,再到現(xiàn)在的五千,相信不用兩年就會像51一樣淪為幾百塊的白菜價,所以軟加密對未來的STM32的工程師來說異常重要,以下正式對各種方式的軟加密和破解方法做一個總結(jié),以便各位朋友在日后設(shè)計軟加密的時候不要給破解的人留下漏洞。

  stm32防破解方法1:最簡單的軟加密不用反匯編,直接在機(jī)器碼中就可以先到FF1FE8F7,因為STM32機(jī)器碼是小端格式,這個地址實際就是芯片ID地址,破解的人只需要在程序中找到一塊空白的位置,然后將解密的那個芯片的ID復(fù)制到這里,再將程序中出現(xiàn)的那個1FFFF7E8改為存放母片的那個ID就破解了,這種方法和你程序采用的什么算法加密毫無關(guān)系,防破解處理方法是在程序加密的時候不要直接讀芯片ID,應(yīng)采用幾個變量運(yùn)算合成ID地址再間接的去讀,注意不能用立即數(shù)合成,因為那樣編譯器還是會給你優(yōu)化成一個立即數(shù)的。

  stm32防破解方法2:就算在程序中找不到明顯的讀ID指令也是可以破解的,方法就是仿真跟蹤,仿真跟蹤前需要反匯編,THUMB2的文檔中每條指令生成的機(jī)器碼有詳細(xì)的說明,隨便都可以找個做上位機(jī)的寫個自動反匯編工具,之后再人工修改下就可以了,其實還有一種更簡單的方法,就是將機(jī)器碼定義成DCI XXXXH這樣的格式,導(dǎo)入KEIL編譯能通過,然后仿真,KEIL會自動的幫你反匯編,接下來就是單步執(zhí)行,延時類函數(shù)跳過,這時候要密切注視R0到R15,不管你用什么方法得到的ID地址,最終一定會出現(xiàn)再這幾個寄存器中,防破解的方法一個是檢驗ID號的時候不要在開機(jī)就檢驗,要在特定的硬件條件下才檢驗ID,然后如果不合法程序就自毀,這樣就只能通過JTAG硬件仿真了。所以產(chǎn)品上市的時候切記將其它IO口轉(zhuǎn)到JTAG口,這樣就占用了JTAG,仿真就不行了

  stm32防破解方法3:是不是這樣就安全了?不是的,你可以禁用JTAG,人家同樣可以修改指令開啟JTAG,最好的方式是在程序關(guān)鍵的代碼塊做CRC檢驗,這樣只要關(guān)鍵指令被修改過,就可以發(fā)現(xiàn),剩下的自己看著辦……

  stm32防破解方法4:其實沒有破不了的軟加密,只是一個時間和成本的問題,但是也不能讓人家那么輕易的就破解了,除了上面的防破解的方法之外還可以在程序中特定條件下做多次檢驗,檢驗的時候不要用簡單的判斷真假跳轉(zhuǎn),應(yīng)該用檢驗的結(jié)果做程序下一步執(zhí)行的參數(shù),這樣別人破出來的產(chǎn)品原以為沒問題了,但是用起來不穩(wěn)定,或者性能差,或者老死機(jī)等。除了這些還可以外掛加密芯片,以增加破解的成本,更多防破解的方法

510955