有些木马在解压缩之后只会有一个客户端程序,用户可以通过在客户端的一些设置工作来自动生成针对性比较强的服务端程序,例如特定的端口、击键木马的邮件地址、密码、smtp服务器等等。在本文中,我将简要地探讨这一技术的实现。
事实上,这一技术并无神秘性可言,因为说穿了这一技术不过是对可执行文件的自定义资源进行操作罢了。也就是说,客户端程序本身绑有一段自定义的二进制数据,这段二进制数据实质上就是一个服务端的模板。在用户进行了设置工作之后,客户端就会将设置完成的这些特定数据填充到这个模板之中,然后再通过写文件的操作将这段已经配置完毕的二进制数据模板生成一个特定的服务端程序。 【相关文章:使用Java实现对dbf文件的简单读写】 【扩展阅读:MDI应用中的单实例(singleton】 比如,邮局有很多空白的信封。你在买下一个信封之后,在信封上填写邮政编码、收件人地址与姓名,然后再将你的信件装入信封糊好,这就成为了你所特有的一封信件了。——希望我这么解释能够让你明白我下面将要在操作的大致过程。 【扩展信息:OOA/D的统一构建(UP)过程之二:需】 下面我要实现一个名为“msgbox生成器”的演示程序,你可以在客户端进行messagebox的标题与文本的设置,然后程序就会在c:\下生成一个名为msgbox.exe的“hello, world”程序,这个弹出的messagebox就是你先前在客户端所设置的那样。运行界面如下图: 好了,那么我先来设计这个服务端的模板。为了十足地模仿木马程序,我使用win32 asm来编写这个模板,程序如下: .386 .model flat, stdcall option casemap:none include \masm32\include\windows.inc include \masm32\include\kernel32.inc includelib \masm32\lib\kernel32.lib include \masm32\include\user32.inc includelib \masm32\lib\user32.lib .data sztitle db 100 dup(´a´) sztext db 100 dup(´b´) .code start: invoke messagebox, null, addr sztext, addr sztitle, mb_ok or mb_iconinformation invoke exitprocess, null end start 如你所见,正是iczelion在他的win32汇编教程中编写的那个“hello, world”,我只做了一点改动: .data sztitle db 100 dup(´a´) sztext db 100 dup(´b´) 这两行代码可能会令你颇为不解,那么就让我将它留到以后再解释吧。现在你可以将这个源代码编译链接,生成一个msgbox.exe文件——这个模板留到后边备用。 下面我来解说自定义资源的使用。... 下一页