我个人的做法,供楼主参考。
1、对于一个程序来说,其实,用winhex打开后,你会发现其头部有很多部位是无关紧要的,比如This program must be run under Win32字串后一些紧接着的8个"00",你爱改不改,而我们所见的多数未加壳的程序的这部分都是很相似的,所以,你完全可以把程序的MD5码的值写在此处。
2、正如上面朋友所说,把整个程序的MD5算出来然后写入程序在原则上是很难办到的,会进入一个死环,除非你有预见性或预见算法(我是办不到的)。
3、所以,只要你从This program must be run under Win32字串后一些紧接着的8个"00"后开始计算程序的MD5码,你的任务就能轻松实现了。
4、不过,这个方法,对于高手或知情人来说也许就容易破解了。同理,你可以把MD5码藏在更难找的地方,如自个定义的字串预留空间中,只要你计算时不计算这个空间的变化就可以了。(这个方法实现起来难一些,但完全可以办到)。