我有一个笨办法,供参考:<br>第一步:从正常编译完成的程序中把Procedure MyPROC;这个过程机器代码取出来,单独存成<br>一个文件;可以用UltraEdit-32或者Winhex之类的工具完成;<br>第二步:再新建一个工程,在这个程序中用Procedure encrypt;过程完成对保存的机器代码<br>的加密并保存到一个新的文件中;<br>第三步:将加密后的机器代码加到你的程序的exe文件中;<br> 方法一:如果Procedure MyPROC;这个过程在加密前后长度不变,可以用第二步所用工具<br>替换MyPROC的代码;(如变短了可以加‘90’补足);<br> 方法二:如果加密后MyPROC过程的代码长度增加了,则可以将其定义为一个常量,然后<br>做如下处理:<br>const<br> MyCode = '加密后的机器代码';<br><br>procedure DoMyPROC(ACode: string; AVar: Integer);<br>var<br> S: string;<br> P: Pointer;<br>begin<br> S := ACode;<br> //用Decrypt(S)执行解密;<br> P := @S[1];<br> asm<br> mov eax, AVar //传入口参数;<br> call P<br> end;<br>end;<br><br>调用:<br>DoMyPROC(MyCode, 0);<br><br>当然这里用串来保存机器代码是不妥的,仅用来说明原理;<br>