首页
社区
课程
招聘
在程序中生成exe文件(献给新手)
发表于: 2006-1-15 21:34 7111

在程序中生成exe文件(献给新手)

2006-1-15 21:34
7111

最近研究了一下这个问题
以C++ Builder 6.0为例
首先准备好你想放到程序中的exe文件
然后用C++ Builder新建一个工程
在记事本中输入以下内容
oneexe EXEFILE yourexename
保存为myres.rc
project- >Add to Project 中,加入写好的 myres.rc 文件
在程序的窗体上添加一个按纽
在Click事件中写入下面的代码
TResourceStream *myres;

myres = new TResourceStream(int(HInstance), AnsiString("oneexe"),"EXEFILE");

myres->SaveToFile("myexe.exe") ;

运行程序,单击按纽,在程序目录下就会产生myexe.exe
(最好把工程,准备的exe文件,myres.rc放在同一目录下)


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 7
支持
分享
最新回复 (6)
雪    币: 291
活跃值: (213)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
2
原理应该是使用自定义资源吧
在MASM或者是C++中可以这么弄:

在资源文件中:
#define EXEFILE 10000
#define ID_MYRES 10
//两个数值随便,只要不和已经定义的冲突就可以了
ID_MYRES EXEFILE "oneexe.exe"//你的文件名

如果是MASM,在汇编代码中:
EXEFILE EQU 10000
ID_MYRES EQU 10

;...其他代码
invoke FindResource,hInstance,ID_MYRES,EXEFILE
.if eax
  mov hRes,eax
  invoke SizeofResource,hInstance,eax;获得资源大小
  mov dwSize,eax
  invoke LoadResource,hInstance,hRes
  .if eax
    invoke LockResource,eax
    .if eax
       mov lpRes,eax
       ;现在lpRes指向资源,dwSize是资源长度,然后只要
       ;把资源内容写入文件就可以了
       ;CreateFile+WriteFile+CloseHandle就可以搞定
    .endif
  .endif
.endif

VC++也类似,各位自己去做吧
2006-1-15 22:31
0
雪    币: 208
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3

这样生成的EXE文件用在什么场合?
2006-1-16 09:04
0
雪    币: 221
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
4
用在某些程序生成客户端的时候
2006-1-16 13:05
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
可是这个有多大好处呢?不是原来的还好一些吗?
2006-1-16 15:28
0
雪    币: 415
活跃值: (34)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
6
改一下变为DLL得了,省的这么麻烦
2006-1-16 20:53
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
这个是在做木马吧
2006-1-17 16:18
0
游客
登录 | 注册 方可回帖
返回
//