标题为<自做木马服务端>)广外幽灵、冰河等软件都有一个实用的功能,根据用户配置生成相应的EXE 文件(如设置IP、端口等)。这种EXE被称为木马服务端。它是用什么原理生成的呢?用WinHEX等软件打 开这类EXE,会发现用户配置都存放在EXE的尾部。服务端EXE在运行时只要读取自身尾部的数据就可以了。 那么服务端EXE本身从何而来呢?当然是预先编译好的,放在主体软件的资源中,需要时进行释放就可以了。 好,知道了原理现在就动手做一个小程序试试。首先要做的是服务端模板,让其运行后读取自身尾部的数据。 打开VB6,新建一个工程t.vbp。因为定位指针到文件末尾需要知道编译后的模板文件t.exe的大小,而写代 码时t.exe又尚未生成,所以在代码中可以先用未定义常量FILE_SIZE来代指文件大小,最后编译成t.exe 后再将文件大小定义给FILE_SIZE。代码如下:Const FILE_SIZE = 20480 '这是编译后文件模板的大小(对文件点右键可看到) Private Sub Form_Load() Dim bAppend As Byte, lNum As Long Dim i As Long, sInfo As String
Open App.Path & "\" & App.EXEName & ".exe" For Binary Access Read As #1 Seek #1, FILE_SIZE + 1 '将读取指针定位到文件末 '读出超出模板大小的字节部分并显示
For lNum = 1 To FileLen(App.Path & "\" & App.EXEName & ".exe") - FILE_SIZE Get #1, , bAppend sInfo = sInfo + Chr(bAppend) Next lNum Close #1 MsgBox sInfo End Sub 下面再来做主体文件,让用户在其中进行配置服务端。另外新建一个工程config.vbp,添加服务端模板文件t.exe为CUSTOM类资源,资源号为101。如果您的VB没有资源编辑器,请从“外接程序/外接程序管理器”中进行添加,以后就可以从工具菜单下运行资源编辑器了。 界面上设置一个标签,一个文本框和一个按钮,如图所示。 我们要做到的是,用户配置后点击按钮,程序释放t.exe并将配置信息追加到t.exe的末尾。本工程的代码如下: Const FILE_SIZE = 20480 '这是101号资源中的服务端文件1.exe的大小 Private Sub Command1_Click() Dim bInfo As Byte Dim bFile() As Byte Dim iInfoLen As Integer Dim i As Integer, lFile As Long
iInfoLen = Len(txtInfo.Text)
If txtInfo.Text = "" Then MsgBox "请配置弹出消息!", vbCritical Exit Sub End If
'引入文件对话框部件,并命名为cdLocation cdLocation.Filter = "可执行文件(*.exe)|*.exe" cdLocation.ShowSave If cdLocation.FileName = "" Then Exit Sub
On Error GoTo myErr:
bFile = LoadResData(101, "CUSTOM") '读出101号资源 Open cdLocation.FileName For Binary Access Write As #1 For lFile = 0 To FILE_SIZE - 1 Put #1, , bFile(lFile) Next lFile For i = 1 To iInfoLen '读出配置信息并追加 bInfo = Asc(Mid(txtInfo.Text, i, 1)) Put #1, , bInfo Next i Close #1 Exit Sub myErr: Reset '如果有文件未关闭,则关闭之 MsgBox Err.Description & " 配置信息请用半角字符." 选择菜单“文件/生成config.exe”,执行编译后的config.exe,在配置框中输入“hello!”,点击“生 成EXE”按钮,选择保存位置及文件名,假设为ok.exe。执行ok.exe
根据用户配置生成EXE
标题为<自做木马服务端>)广外幽灵、冰河等软件都有一个实用的功能,根据用户配置生成相应的EXE
文件(如设置IP、端口等)。这种EXE被称为木马服务端。它是用什么原理生成的呢?用WinHEX等软件打
开这类EXE,会发现用户配置都存放在EXE的尾部。服务端EXE在运行时只要读取自身尾部的数据就可以了。
那么服务端EXE本身从何而来呢?当然是预先编译好的,放在主体软件的资源中,需要时进行释放就可以了。
好,知道了原理现在就动手做一个小程序试试。首先要做的是服务端模板,让其运行后读取自身尾部的数据。
打开VB6,新建一个工程t.vbp。因为定位指针到文件末尾需要知道编译后的模板文件t.exe的大小,而写代
码时t.exe又尚未生成,所以在代码中可以先用未定义常量FILE_SIZE来代指文件大小,最后编译成t.exe
后再将文件大小定义给FILE_SIZE。代码如下:Const FILE_SIZE = 20480 '这是编译后文件模板的大小(对文件点右键可看到)
Private Sub Form_Load()
Dim bAppend As Byte, lNum As Long
Dim i As Long, sInfo As String
Open App.Path & "\" & App.EXEName & ".exe" For Binary Access Read As #1
Seek #1, FILE_SIZE + 1 '将读取指针定位到文件末
'读出超出模板大小的字节部分并显示
For lNum = 1 To FileLen(App.Path & "\" & App.EXEName & ".exe") - FILE_SIZE
Get #1, , bAppend
sInfo = sInfo + Chr(bAppend)
Next lNum
Close #1
MsgBox sInfo
End Sub
下面再来做主体文件,让用户在其中进行配置服务端。另外新建一个工程config.vbp,添加服务端模板文件t.exe为CUSTOM类资源,资源号为101。如果您的VB没有资源编辑器,请从“外接程序/外接程序管理器”中进行添加,以后就可以从工具菜单下运行资源编辑器了。
界面上设置一个标签,一个文本框和一个按钮,如图所示。
我们要做到的是,用户配置后点击按钮,程序释放t.exe并将配置信息追加到t.exe的末尾。本工程的代码如下:
Const FILE_SIZE = 20480 '这是101号资源中的服务端文件1.exe的大小
Private Sub Command1_Click()
Dim bInfo As Byte
Dim bFile() As Byte
Dim iInfoLen As Integer
Dim i As Integer, lFile As Long
iInfoLen = Len(txtInfo.Text)
If txtInfo.Text = "" Then
MsgBox "请配置弹出消息!", vbCritical
Exit Sub
End If
'引入文件对话框部件,并命名为cdLocation
cdLocation.Filter = "可执行文件(*.exe)|*.exe"
cdLocation.ShowSave
If cdLocation.FileName = "" Then Exit Sub
On Error GoTo myErr:
bFile = LoadResData(101, "CUSTOM") '读出101号资源
Open cdLocation.FileName For Binary Access Write As #1
For lFile = 0 To FILE_SIZE - 1
Put #1, , bFile(lFile)
Next lFile
For i = 1 To iInfoLen '读出配置信息并追加
bInfo = Asc(Mid(txtInfo.Text, i, 1))
Put #1, , bInfo
Next i
Close #1
Exit Sub
myErr:
Reset '如果有文件未关闭,则关闭之
MsgBox Err.Description & " 配置信息请用半角字符."
选择菜单“文件/生成config.exe”,执行编译后的config.exe,在配置框中输入“hello!”,点击“生
成EXE”按钮,选择保存位置及文件名,假设为ok.exe。执行ok.exe