回 帖 发 新 帖 刷新版面

主题:如何将一个exe文件和VB生成的exe文件封装在一起?

我想设计一个VB程序,通过它打开一些已有的EXE文件,但是最后只生成一个exe文件,请问如何实现?谢谢!

回复列表 (共4个回复)

沙发

如果要执行一些已有的Exe不一定要打包到调用exe中,可以用ShellExecute。

如果想在主调用exe1运行过程中动态产生一个exe2(多数出于加密考虑),可以先将exe2编译出来,然后将它的二进制代码以资源文件的方式加到exe1中,运行时将资源文件中的二进制数据存为一个后缀名为".exe"的文件即可,一些安装程序就是这样做的。

如果用这种方法加密只能骗过外行,有经验的(有很多专门的工具)不用运行就知道,因为PE文件中的可执行部分的长度在文件头偏移0002h和0004h中有标示出来,这个长度以后到文件实际长度之间就是附加的数据。另外,运行时通过文件监控也能监测出来。

板凳

谢谢您的提示,我已经用资源文件的的形式实现了,另外请问一下,以这种形式加载的exe文件在运行时还是需要释放到硬盘上,能不能直接在内存上执行这个文件而不释放到临时目录呢?谢谢!

3 楼

当然要释放到硬盘,如果直接在内存运行,那么当初就没有必要做成资源文件,直接将功能放到同一个执行文件里就行。

直接在内存里解压运行用的是另一种方法,也是加密中比较高一级的方法。就是将代码加密放在执行文件中,然后在运行过程中过了第一关,就解密第二关的文件,如果有需要,可以很多级地边执行边解密,这种方法对付静态反编译(比如W32DASM)和爆破(bit hack或者bit patch)非常有效,术语叫SMC(Self modified code),不过用VB可能难以实现,绝大部分的SMC是汇编下实现的,极少数用C/C++实现。

4 楼

谢谢,学习了 [em5][em3]

我来回复

您尚未登录,请登录后再回复。点此登录或注册