在VB中由一个程序生成另一个应用程序,能够实现吗?

时间:2021-01-16 09:13:59
我想要一个程序A,程序A中有一个文本框(用来输入文件<肯定是这个文件肯定是*.exe文件>路径),一个确定按狃,按下确定按钮时,要求生成应用程序B,运行程序B,它执行程序A中输入的文件,就象有些木马配置参数生成木马的服务器端一样,我是想学习一下这种编程的技巧,就想了这个简单的实例。这个能在VB中实现吗?如果不能,其他语言能行吗,能行,又怎么编?

10 个解决方案

#1


.DAT 文件

#2


没看懂~~

#3


楼上的 yijiansong(不知路在何方)把这样的答案告诉我这样的菜鸟=没有说啊!

#4


---------------  
                   我希望有源代码!
                   ===============

#5


一个很简单的例子:
首先假设你的c:\下有一个W.TXT文件,等一会儿我们就打开它。

B程序的代码:
Private Sub Form_Load()
s = Command()
Shell "notepad.exe " + s, vbNormalFocus
End Sub

生成b.exe文件,记下它的大小,是准确的大小如16384字节而不是16k。

新建一个程序A,先在A中新建资源文件加入工程,在资源文件编辑器中添加自定义资源(CUSTOM),资源号使用默认的101。值得注意的是,每个资源号对应的资源项对资源大小的要求是有限制的,我记得时64K,因此如果APP-2.Exe的大小如果大于这个数的话,就要麻烦一些。如果是这样,我们的写另一个程序,把APP-2.Exe一个字节一个字节的读出来,每64K生成一个文件,然后再把这些文件分别写道资源文件的101、102......资源项中,代码也要作相应的修改。(上面这段是抄来的,见http://www.mf100.com/document/180.shtml)

然后输入代码:
Private Const FILESIZEOFAPP2 = 16384 '我生成的b.Exe大小是16384Byte
    
Private Sub Command1_Click()
Dim A() As Byte 'A是个Btye类型和数组
        Dim Counter As Long
        A = LoadResData(101, "CUSTOM") '将自定义资源中101号资源读入数组
        '注意,微软的帮助中对加载定义资源的说明有误,硬是资源标识为"CUSTOM"而非数字
        
        Open "C:\b.exe" For Binary As #1 '以二进制方式写(生成)b.Exe到c:            For Counter = 0 To FILESIZEOFAPP2 - 1 '注意因为从0 Byte开始因此以文件大小 - 1Byte 为终
                Put #1, , A(Counter)
            Next Counter
        Close #1
        doevents
        Shell "c:\b.Exe " + Text1.Text, vbNormalFocus '运行刚生成的APP-2.Exe
End Sub


Private Sub Form_Load()
Text1.Text = "c:\w.txt"
End Sub

生成a.exe,好了,现在可以删除了b.exe。运行A.EXE,点击按钮,可以看到生成了B.exe,然后w.txt就打开了。如果不是打开txt文件而是执行其他程序原理一样。

#6


请问lsftest:程序B可以独立运行吗(我开始说的有歧义,我的本意是要求这样的),就是说我通过双击它也能运行去执行程序A给它的那个文件?(木马程生成的服务器端,可以独立运行的,而不是由生成他的木马程序去运行)

#7


我开始不是太明白你的意思了,你刚才说B程序启动的程序是由A程序的textbox传递过去的,所以你如果不运行A,只想运行B,可以在开始--》运行——》中输入“C:\b.exe w.txt”一样可以,但你如果连这也嫌麻烦,那么可以把B程序的代码改成:
Private Sub Form_Load()
Shell “C:\b.exe w.txt”, vbNormalFocus
End Sub
那么它就可以独立点击运行了。不过这样做缺点是很明显的,就是不够灵活,但普通的木马运行其他程序的原理大致如此,关键是shell语句。

#8


up

#9


完全可以

#10


关注。。。

#1


.DAT 文件

#2


没看懂~~

#3


楼上的 yijiansong(不知路在何方)把这样的答案告诉我这样的菜鸟=没有说啊!

#4


---------------  
                   我希望有源代码!
                   ===============

#5


一个很简单的例子:
首先假设你的c:\下有一个W.TXT文件,等一会儿我们就打开它。

B程序的代码:
Private Sub Form_Load()
s = Command()
Shell "notepad.exe " + s, vbNormalFocus
End Sub

生成b.exe文件,记下它的大小,是准确的大小如16384字节而不是16k。

新建一个程序A,先在A中新建资源文件加入工程,在资源文件编辑器中添加自定义资源(CUSTOM),资源号使用默认的101。值得注意的是,每个资源号对应的资源项对资源大小的要求是有限制的,我记得时64K,因此如果APP-2.Exe的大小如果大于这个数的话,就要麻烦一些。如果是这样,我们的写另一个程序,把APP-2.Exe一个字节一个字节的读出来,每64K生成一个文件,然后再把这些文件分别写道资源文件的101、102......资源项中,代码也要作相应的修改。(上面这段是抄来的,见http://www.mf100.com/document/180.shtml)

然后输入代码:
Private Const FILESIZEOFAPP2 = 16384 '我生成的b.Exe大小是16384Byte
    
Private Sub Command1_Click()
Dim A() As Byte 'A是个Btye类型和数组
        Dim Counter As Long
        A = LoadResData(101, "CUSTOM") '将自定义资源中101号资源读入数组
        '注意,微软的帮助中对加载定义资源的说明有误,硬是资源标识为"CUSTOM"而非数字
        
        Open "C:\b.exe" For Binary As #1 '以二进制方式写(生成)b.Exe到c:            For Counter = 0 To FILESIZEOFAPP2 - 1 '注意因为从0 Byte开始因此以文件大小 - 1Byte 为终
                Put #1, , A(Counter)
            Next Counter
        Close #1
        doevents
        Shell "c:\b.Exe " + Text1.Text, vbNormalFocus '运行刚生成的APP-2.Exe
End Sub


Private Sub Form_Load()
Text1.Text = "c:\w.txt"
End Sub

生成a.exe,好了,现在可以删除了b.exe。运行A.EXE,点击按钮,可以看到生成了B.exe,然后w.txt就打开了。如果不是打开txt文件而是执行其他程序原理一样。

#6


请问lsftest:程序B可以独立运行吗(我开始说的有歧义,我的本意是要求这样的),就是说我通过双击它也能运行去执行程序A给它的那个文件?(木马程生成的服务器端,可以独立运行的,而不是由生成他的木马程序去运行)

#7


我开始不是太明白你的意思了,你刚才说B程序启动的程序是由A程序的textbox传递过去的,所以你如果不运行A,只想运行B,可以在开始--》运行——》中输入“C:\b.exe w.txt”一样可以,但你如果连这也嫌麻烦,那么可以把B程序的代码改成:
Private Sub Form_Load()
Shell “C:\b.exe w.txt”, vbNormalFocus
End Sub
那么它就可以独立点击运行了。不过这样做缺点是很明显的,就是不够灵活,但普通的木马运行其他程序的原理大致如此,关键是shell语句。

#8


up

#9


完全可以

#10


关注。。。