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