请教一个PE文件的题目:EXE文件捆绑器

247 views
Skip to first unread message

Daoyuan Wu

unread,
Sep 14, 2010, 4:01:37 AM9/14/10
to cisrg...@googlegroups.com, ph4...@googlegroups.com
学校里课程设计的题目,描述如下:

题目: EXE文件捆绑器实现

具体设计要求:

EXE捆绑器的基本功能是把两个甚至更多的EXE文件绑定在一起,看上去是一个文件,但是绑定生成的文件在执行时候会首先释放出多个EXE文件各自执行,所以在很多场合是正常功能的文件上绑定了一个恶意程序,从而达到隐蔽直线非法程序的目的,功能强大一些的捆绑机还可以加入对运行程序的控制,比如隐藏运行,定时运行,关闭后自动删除等。

要求设计一个EXE捆绑器,可以捆绑多个EXE文件,指定生成文件的名称和图标以及释放文件的路径,同时设计一个检查程序用于检查一个具体EXE程序是否为捆绑程序。

掌握PE文件格式,特别是其中资源管理部分

掌握文件的内存映射和虚拟内存访问方法。

掌握文件捆绑器的识别方法。


但是现在思路不是很清晰,轮廓有了,但还是有些细节道不明,望指教下!

我自己的想法是:要做两个程序,一个控制体程序,一个绑定的程序。通过绑定程序,把要绑定的多个EXE文件放到控制体程序的资源部分(通过自定义的资源类型),并通过自定义的数据结构来记录将来要释放文件的路径等信息。然后绑定程序再改掉控制体程序的名称和图标!

而控制体程序部分其实就是宿主程序,它自己的代码完成的功能是读取自身资源部分的特定类型资源(也就是我们之前定义的),并把它们释放出来一个个运行。

1、但这样就要有两个程序了,最好还是只需要一个程序的,即只有一个捆绑程序,直接将要绑定的第一个exe文件作为宿主程序,然后图标都不要改。可是就需要自己插入释放程序的代码了,并修改OEP使之指向自己释放部分的入口地址,最后再调用第一个exe文件。感觉这样会比较麻烦?!
p.s.感觉这个功能就跟CodeProject上的这篇文章很像了:http://www.codeproject.com/KB/system/inject2exe.aspx

2、最后的释放过程是怎么样子的?
1) 把它们以完整的PE结构释放到硬盘上,然后再用ShellExecute()或者CreateProcess()把这些exe文件执行起来?
2) 在堆上分配一块内存,然后把这些exe文件映射到内存,以进程或线程的方式运行起来?(偶感觉说这种方式时自己很迷糊…)

3、有没有这方面类似的开源程序?业界一般又是如何做的呢?

针对我以上的整个叙述,求各位大大指教一下~

Bruce(7all) Song

unread,
Sep 16, 2010, 4:21:32 AM9/16/10
to cisrg...@googlegroups.com
一般的做法就是将木马做为资源存放在木马生成器的资源文件内,
编译木马生成器成功后,木马已经包含在生成器中。
步骤可以如下:
1:释放资源文件(木马)
2:修改木马的图标资源
关于资源释放和提取,在vckbase和codeproject上有很多例子。
另外,也可参考下面的网址:
http://www.cisbsd.org/2010/05/24/releaseresource/

> 2) 在堆上分配一块内存,然后把这些exe文件映射到内存,以进程或线程的方式运行起来?(偶感觉说这种方式时自己很迷糊...)


> 3、有没有这方面类似的开源程序?业界一般又是如何做的呢?
> 针对我以上的整个叙述,求各位大大指教一下~
>

> --
> 您收到此邮件是因为您订阅了 Google 网上论坛的"CISRG Group"论坛。
> 要向此网上论坛发帖,请发送电子邮件至 cisrg...@googlegroups.com
> 要取消订阅此网上论坛,请发送电子邮件至 cisrg-group...@googlegroups.com
> 若有更多问题,请通过 http://groups.google.com/group/cisrg-group?hl=zh-CN 访问此网上论坛。
>

--
Bruce Song
岂能尽如人意,但求无愧我心。

Reply all
Reply to author
Forward
0 new messages