给用户写一了个类似加壳的程序, 用这个程序加密的EXE,当程序启动时会先弹出个对话框验证权限,然后判是否加载EXE真正功能
我的做法是在加密时,用自己的一个EXE(权限验证对话框)作为加载时的启动EXE,然后把用户被加密的EXE 用 BRCC32 编译成资源嵌入
到对话框的EXE里,当程序启动时,弹出自己EXE的对话框,如果权限验证通过,就 作为资源释放出被加密的EXE到硬盘,然后一个在硬盘加
载EXE的方式来启动真实的EXE文件,达到了加壳的效果,因为在硬盘上不会出现明文的EXE,EXE是在内在里先解密成流,然后再加载的
用的是 网上下载的 MemoryRunUnitTwo.pas 单元
这个加密方式一直运行得很好,可是现在用户的EXE文件里保存了一些配置参数,运行的时候要从EXE自身读取参数,由于运行是从内存加
载的,他的EXE读取自身参数时就会读不到,会报异常.
很类似这位朋友遇到的问题:  http://topic.csdn.net/t/20050518/10/4015574.html现在被加密的程序要在运行时 要从自身EXE资源里读取一些参数,由于我是用MemoryRunUnitTwo.pas 把他的EXE加载到内存再运行的
所以不能用了,有什么办法解决这个问题呢,
如果把EXE直接释放成一个临时文件,就是暴露出真实的EXE,别人只要把EXE拷走就完了,哪怕是设置成,隐藏,系统属性,也被人发现过那就简单的办法就是开个新进程来监视临时EXE,如果不用了,就立即删除,可是如果监视进程被他强行结束就还是会被考走临时EXE
或突然关机,启动也EXE也会被发现.
有什么办法把一段内存当成硬盘来保存文件,把临时EXE释放到这段内存作为普通的文件用ShellExecute的方式来加密,这样硬盘上不存在临时
文件,突然关机了,也不会残留临时文件 硬盘上
拜拖高人指点了

解决方案 »

  1.   

    但是他應該是想在代碼裏面來實現 不能用一個外部工具比如ramdisk之類的來做
    可以試試CreateFile 指定dwFlagsAndAttributes為FILE_ATTRIBUTE_TEMPORARY 做一個臨時文件, 同時指定這個臨時文件不可被共享 msdn上說 只要文件系統的緩存夠大 就不會產生磁盤操作
      

  2.   

    现在问题变通了,问题焦点是,如果把一个文件EXE资源完全附加到另一个EXE里去?