首页
社区
课程
招聘
[原创][下载]轩辕EXE捆绑机
发表于: 2006-6-14 10:26 19506

[原创][下载]轩辕EXE捆绑机

2006-6-14 10:26
19506

.386
.model flat, stdcall
option casemap:none

include
windows.inc
include user32.inc
includelib user32.lib
include kernel32.inc
includelib kernel32.lib
include shell32.inc
includelib shell32.lib


.const
szFormat db "%d", 0
szErr1 db "打开文件出错!", 0
szErr2 db "读取文件出错!", 0
szErr3 db "分配内存出错!", 0
szDontRunMe db "此文件是EXE捆绑机的宿主文件,请不要单独运行!", 0
szNameFormat db "c:\windows\temp\temp%d.exe", 0
.code
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

_RunProcess proc
LOCAL
@szFileName[MAX_PATH]:byte ;存放文件名
LOCAL @hFileHandle ;文件句柄
LOCAL @dwFileSize ;文件大小
LOCAL @dwNumOfBytes ;实际影响的字节数
LOCAL @lpMemAddress ;分配内在基址
LOCAL @hFileWriteTo ;要写入文件句柄
LOCAL @si:SYSTEM_INFO ;系统信息结构
LOCAL @i ;处理第几个文件
LOCAL @szTempFileName[128]:byte ;生成的临时文件名

invoke GetSystemInfo, addr @si ;获取系统信息
mov @i, 1

;获得自身文件大小,并判断是否已经捆绑了其他文件
invoke GetModuleFileName, NULL, addr @szFileName, MAX_PATH
invoke CreateFile, addr @szFileName, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL
mov @hFileHandle, eax
.if eax == INVALID_HANDLE_VALUE
invoke MessageBox, NULL, offset szErr1, 0, MB_ICONERROR
jmp exit
.endif
invoke
GetFileSize, @hFileHandle, NULL
.if eax == 3584 ;如果没捆绑其他文件则退出
invoke MessageBox, NULL, offset szDontRunMe, 0, MB_ICONERROR
jmp exit
.endif

invoke
SetFilePointer, @hFileHandle, 8888, 0, FILE_BEGIN ;文件指针移到捆绑文件开始处(具体位置需要在文件捆绑后重新设置)
;从文件尾部依次获取文件数据,写入临时文件并运行
@@: invoke ReadFile, @hFileHandle, addr @dwFileSize, 4, addr @dwNumOfBytes, NULL
.if @dwNumOfBytes == 0
jmp exit ;没有更多的捆绑文件了
.endif

;invoke wsprintf, addr @szFileName, offset szFormat, @dwFileSize
;invoke MessageBox, 0, addr @szFileName, 0, MB_OK ;显示文件大小

invoke VirtualAlloc, NULL, @dwFileSize, MEM_COMMIT, PAGE_EXECUTE_READWRITE ;分配内存以存放文件数据
mov @lpMemAddress, eax
.if eax == NULL
invoke MessageBox, NULL, offset szErr3, 0, MB_ICONERROR
jmp exit
.endif
invoke
ReadFile, @hFileHandle, @lpMemAddress, @dwFileSize, addr @dwNumOfBytes, NULL ;读入EXE文件数据
invoke wsprintf, addr @szTempFileName, offset szNameFormat, @i; ;临时文件名,格式为temp1.exe, temp2.exe ...
invoke CreateFile, addr @szTempFileName, GENERIC_WRITE, NULL, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL
mov @hFileWriteTo, eax
.if eax == INVALID_HANDLE_VALUE
invoke MessageBox, NULL, offset szErr1, 0, MB_ICONERROR
jmp exit
.endif
invoke
WriteFile, @hFileWriteTo, @lpMemAddress, @dwFileSize, addr @dwNumOfBytes, NULL ;写入文件数据
invoke CloseHandle, @hFileWriteTo
invoke VirtualFree, @lpMemAddress, 0, MEM_RELEASE ;释放内存
invoke ShellExecute, 0, 0, addr @szTempFileName, 0, 0, SW_SHOW

inc @i
jmp @b
exit:
invoke
CloseHandle, @hFileHandle
ret

_RunProcess endp
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

start:
call
_RunProcess
invoke ExitProcess, NULL
end start

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

上传的附件:
收藏
免费 7
支持
分享
最新回复 (15)
雪    币: 1852
活跃值: (504)
能力值: (RANK:1010 )
在线值:
发帖
回帖
粉丝
2
不错的东西
不过本版定位于程序设计,
所以发布软件最好能有源码
不然只能以工具对待
如果没有源码的话,过几天我会把这个工具转到工具版,见量!!
2006-6-14 11:27
0
雪    币: 207
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
楼主能给出源码吗?这个就是捆绑木马的在exe文件的东东吧?我一直想知道他的原理
2006-6-14 11:50
0
雪    币: 179
活跃值: (131)
能力值: ( LV12,RANK:290 )
在线值:
发帖
回帖
粉丝
4
过两天会把宿主源码发上来,主程序源码比较烂就不丢人了

TO: 北极星版版
在写一篇文章,包括EXE捆绑机的制作原理和更换图标的操作
工具先放上来给大家尝个鲜~
2006-6-14 11:57
0
雪    币: 1852
活跃值: (504)
能力值: (RANK:1010 )
在线值:
发帖
回帖
粉丝
5
Originally posted by WAKU
过两天会把宿主源码发上来,主程序源码比较烂就不丢人了

TO: 北极星版版
在写一篇文章,包括EXE捆绑机的制作原理和更换图标的操作
工具先放上来给大家尝个鲜~


支持
2006-6-14 12:01
0
雪    币: 236
活跃值: (35)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
6
支持,开放源码是最高兴的
2006-6-14 12:54
0
雪    币: 179
活跃值: (131)
能力值: ( LV12,RANK:290 )
在线值:
发帖
回帖
粉丝
7
加入了制作原理
2006-6-14 14:35
0
雪    币: 2384
活跃值: (766)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
8
最初由 WAKU 发布
EXE捆绑机制作原理

【作者】WAKU(转载请保留署名)
【来源】看雪技术论坛(bbs.pediy.com)
【时间】2006年6月14日
........

支持,最好能将这一篇文章合并到第一贴上。
2006-6-14 15:05
0
雪    币: 1852
活跃值: (504)
能力值: (RANK:1010 )
在线值:
发帖
回帖
粉丝
9
Originally posted by WAKU
运行方式:一般都是创建成一个新的EXE文件,并运行.不知道能不能直接读入内存运行,我功力太差就只能写文件了.功能强大一些的捆绑机还可以加入对运行程序的控制,比如隐藏运行,定时运行,关闭后自动删除等.


或许可以这样来写:
对于每一次捆绑过程,首先生成一个固定的可执行文件,就暂时称为宿主.
然后把几个需要捆绑在一起的可执行文件附加到宿主的尾部,其中的组装方法就用你的方法来实现.
分解过程:跟你一样
执行过程:首先把所有文件都释放,然后通过宿主进程实现对捆绑进程的控制
宿主进程的伪代码如下:
HostProcess_WinMain()
{
       // 释放文件
     //取得文件释放的路径
     // 通过CreateProcess 执行进程
     // 实现对进程的控制,或者调试,隐藏等额外的控制功能
     .......
       // 删除释放的文件
}

说明:对于这个思路,没有实践过,如果有兴趣的话,你可以试一下
2006-6-14 16:15
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
2006-6-15 12:34
0
雪    币: 253
活跃值: (25)
能力值: ( LV9,RANK:290 )
在线值:
发帖
回帖
粉丝
11
真不错,试了一下好!
2006-6-16 21:18
0
雪    币: 204
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
很好,挺不错的
2006-7-3 23:11
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
非常好...支持
2006-7-4 13:30
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
楼主真厉害,我正好需要这样的软件呢。先回复后下载看看好用不
2006-8-20 02:35
0
雪    币: 249
活跃值: (10)
能力值: ( LV12,RANK:250 )
在线值:
发帖
回帖
粉丝
15
菜鸟帮忙顶!

似乎可能会出点问题。
比如不在当前目录下运行,而是转移到temp,可能会带来一点麻烦。记得codeproject里有个模拟加载exe的捆绑机,什么时候也把代码细节拿来看看
2006-8-20 12:32
0
雪    币: 257
活跃值: (56)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
16
检验捆绑工具:

有人写的过得了这个,

过这个就牛了
上传的附件:
2006-8-20 23:03
0
游客
登录 | 注册 方可回帖
返回