C是否能指定函數在特定記憶體 執行後抹除?

作者: lazyblack (懶黑)   2018-03-16 12:57:21
用eclipse編譯 stm32 希望增加反編譯難度 請問是否能指定特定位址給函數 以便單次執
行後抹除?聽某些人說修改linker檔可達成有前輩知道大概要怎麼做嗎?
另外也想問算出來的密鑰儲存的記憶體位址,會對反編譯難度造成影響嗎?
還是說以上作法都是自嗨,無法根本提升破解困難度?
還望各位給予各種建議或方向,謝謝。
作者: Lipraxde (Lipraxde)   2018-03-16 16:09:00
不是應該會有硬體的鎖讓debugger不能讀嗎?
作者: m490521 (阿青)   2018-03-16 16:28:00
關鍵字stm32 PCROP AN4701其中RDP可以設成lv2, 直接把jtag腳fuse燒斷
作者: lazyblack (懶黑)   2018-03-16 18:08:00
讀取保護就算到lv2還是能透過bootloader去探裡面的內容的樣子 所以意圖在軟體裡面做誤導增加破解成本
作者: cs8425 (cs)   2018-03-16 19:36:00
改link檔只能把特定東西放到特定位址但是不能做到"執行後刪除"這事情另外你想要保障code不被理解/修改?還是不要被copy拿去用(只要會動)?前者用obfuscate技巧(無意義指令、VM類的) google上很多後者的話要用硬體相關的 例如晶片unique id去計算有的沒的
作者: Lipraxde (Lipraxde)   2018-03-16 22:35:00
bootloader可以讀出來喔...一般不是應該只能更新或讀某些特定的資訊嗎看你要不要加密放到flash,執行時讀出來解密放到ram裡面。或是比較間接的方式編譯一個Lua的直譯器,把腳本加密有個eLua的移植版本可以放在stm32上跑
作者: m490521 (阿青)   2018-03-16 23:40:00
bootloader不是也是你燒的嗎?可以改linker,把某段程式指定某個區塊內,但清除就是自己要去判斷了
作者: lazyblack (懶黑)   2018-03-17 11:16:00
感謝!筆記一下再去網上找改link的教學

Links booklink

Contact Us: admin [ a t ] ucptt.com