51再怎么搞,也玩不出什么名堂来,由其内核体系决定了一切。
以上原理示好像是:花指令+垃圾代码,可能还用到了跳转地址的动态生成(代码没详看), 由于51一些芯片对于flash写操作的限制,所以代码在flash中在程序烧写完成后,就是静态的,不会改变。 如果在MCU工作电压下,可以对flash进行写操作,也可以采用更厉害的反汇编方法:
程序代码用某加密算法加密,存放在flash中,另外写一引导程序,在运行时,这一引导程序读出加密的代码,再还原成原来未加密程序运行。 由于程序加密存放在flash中,在反汇编时,反汇编器根本认不出这是指令(机器码可能不对),当然弱点就是那段引导程序还可能被反汇编,此时再加上花指令,垃圾代码,等手段对这段引导程序进行变形,那强度更加强了。
若有可能,写一个虚拟机则更厉害了。 |