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

  • 主题发起人 主题发起人 sunjunfeng3
  • 开始时间 开始时间
S

sunjunfeng3

Unregistered / Unconfirmed
GUEST, unregistred user!
给用户写一了个类似加壳的程序, 用这个程序加密的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
 
劝你还是不要搞得这么复杂。
破解你的程序有两种办法:
1.破解第一个(权限验证对话框)exe文件,使它无论权限验证是否通过,都从资源释放出被加密的第二个exe文件。
2.直接从第一个exe中提取资源文件,写成第二个exe文件。
 
释放到内存直接运行啊,
不过还没有试到读取参数,我先试试
 
已经作了了内存加载,但是exe要读自身中嵌入的资源配置信息,就挂了
 
我已经试了,没有问题,如果需要,我整理一哈把代码发上来
不过还是如 kadai 所说,没有用的
 
你以为用了MEMORY RUN别人就得不到你完整的EXE文件么,根本没需要去破你的东西。
 
1、ramdisk 之类的就可以把一块内存虚拟成硬盘,需要驱动支持,这个有开源的 C 代码
2、这些参数可以由你的 loader 读取,写入一个内存映像文件中,然后 loader 通过 memoryrun 运行最终程序,最终程序通过读取内存映像文件获取信息啊
3、呵呵,貌似楼主在写木马 ?
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部