非专业的解决办法:
1)做一个 STUB.EXE 程序,功能是解密/解压缩;它本身保存了自己大小的信息(如,int nStubSize);
2)另作一个包装程序(如,PACK.EXE),把已经加密/压缩的数据 Append 到 STUB.EXE 后面;
3)STUB.EXE 执行时,打开自己(只读方式);把文件指针定位到 nStubSize 后,如果出错(文件本身 <= nStubSize),退出。
4)把你所需要的功能做进 STUB.EXE 里面;
5)每次改动 STUB 源程序,一般要编译两次;第一次,确定其 EXE 文件大小;第二次,修改源程序,把 nStubSize = nnnn 纠正过来(这次不会引起生成的 EXE 文件的大小);
6)现在你就可以有自己的自解密或自解压的 EXE 文件了。说明:此方法在 DOS 下行得通,在 Windows 下应该也行。图例:STUB.EXE
--------------------------------> nStubSize
Encrypted Data/Compressed Data