深夜超级喊救命,如何把一块内在虚拟成硬盘并把EXE保存在上面启动运行

myhert001 2008-03-14 12:20:20

给用户写一了个类似加壳的程序, 用这个程序加密的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的方式来加密,这样硬盘上不存在临时
文件,突然关机了,也不会残留临时文件 硬盘上
拜拖高人指点了

没分了,如会的在其它贴子给分
http://topic.csdn.net/u/20080314/00/27c894b1-3cbe-4259-8cf9-ff3452b352bd.html
http://topic.csdn.net/u/20080314/00/5d7d9daa-4cc9-4bf1-9200-6c1a18f362f7.html
http://topic.csdn.net/u/20080314/00/38974ab9-afd8-4592-a5c0-75e8549797d6.html
http://topic.csdn.net/u/20080314/00/c12c72e1-69ce-4864-b3f7-a45c46363760.html
...全文
34 点赞 收藏 3
写回复
3 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
yueyeli 2008-03-21
mark
回复
ahjoe 2008-03-16
猜想:将EXE还是写入到硬盘,但破坏其代码,也就是写到硬盘上的EXE是不可能运行的,执行的EXE还是从内存执行。这样就是要分析EXE的结构,找出其代码段并破坏。
回复
1cctv 2008-03-15
很高
回复
相关推荐
发帖
Windows SDK/API
创建于2007-08-02

1208

社区成员

C++ Builder Windows SDK/API
申请成为版主
帖子事件
创建了帖子
2008-03-14 12:20
社区公告
暂无公告