最近又复习了一下flexlm ecc pubkey,发现如果目标程序的pubkey中,如果有一个pubkey值恰好是0,那么这一个pubkey是替换不了的。等于0的那个,编译器编译后,不在.data数据区,程序执行的时候再初始化为0,除非你自己生成的pubkey,刚好那个值也是0,这基本不可能。
这个问题曾经困扰很久,后来就没管了,最近又研究,终于搞明白了。
实际上,针对特定的软件,只会用到一组pubkey,只用替换这一组pubkey就可以了,这样最多只用替换0x10或0x16或0x1f个pubkey就可以了,其余的不用全部替换掉。
这样即使有某一个pubkey=0,只要这个pubkey不在用到的那一组里,还是可以的。
多年前我在这里提到过:
https://bbs.pediy.com/thread-193369-2.htm
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课