首页
社区
课程
招聘
标题:请教高手,如何在vb程序中扩展功能(没有源代码),比如给一个按钮
发表于: 2004-9-23 23:06 5779

标题:请教高手,如何在vb程序中扩展功能(没有源代码),比如给一个按钮

2004-9-23 23:06
5779
请教高手,如何在vb程序中扩展功能,这个VB程序是native编译方式,比如给

一个按钮添加响应,运行另外一个程序,我的解决思路就是首先在加入这个

rtcShell运行库函数的输入节,接着在一个区块中加入了“test.exe”的

Uniode字符串数据,地址为0094F090,然后在按钮的消息响应中断之后,jmp到

自己的代码,然后调用rtcShell函数,运行我预定的程序。如果是C或者汇编可

以直接将rtcShell的程序路径参数push 0094F090,但是调用VB6.0运行库很麻

烦,我的方法是:

Reference To: MSVBVM60.__vbaVarDup, Ord:0000h
            ;pushad
            mov esi, dword ptr [00401210]
            mov ebx, 00000008
            lea edx, dword ptr [ebp-7C]
            lea ecx, dword ptr [ebp-3C]

* Possible StringData Ref from Code Obj ->"t e s t . e x e"
              
            mov [ebp-74], 0094F090     ;数据地址
            mov dword ptr [ebp-7C], ebx
            call esi                   ;MSVBVM60.__vbaVarDup
            lea edx, dword ptr [ebp-6C]
            lea ecx, dword ptr [ebp-2C]
                                    
            push eax
            lea edx, dword ptr [ebp-3C]
          /*
          rtcShell的原型
          Shell( _
          ByVal Pathname As String, _
          Optional ByVal Style As AppWinStyle
          Optional ByVal Wait As Boolean = False, _
          Optional ByVal Timeout As Integer = -1 _
          */                  
            push 000003E8
            push 00000000
            push 00000001   ;AppWinStyle.NormalFocus
            push edx        ;程序文件路径

* Reference To: MSVBVM60.rtcShell, Ord:0253h
            
           Call dword ptr [0094F038]
           ;popad
           jmp 0008D86A1
/**********************************************
运行后老是说文件找不到,我用rtcMsgBox显示出来的路径的确是空,
所以我的问题就是,在VB的反汇编代码中如果一个运行库函数调用一个字符串

该怎么办呢?为什么访问的到地址总是空?如何寻址?
上述方法是我看别人VB程序的反汇编代码得出的,但是又不对,请高手指教!

跪求!!!!

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 1
支持
分享
最新回复 (9)
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
2004-9-23 23:08
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
伤心ing
2004-9-24 07:17
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
只能自己顶,免得被淹没
2004-9-24 11:14
0
雪    币: 332
活跃值: (479)
能力值: ( LV9,RANK:330 )
在线值:
发帖
回帖
粉丝
5
自己再论坛里和看雪精华里找,我记得有一篇的。
2004-9-24 12:13
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
那是关于VB native编译的么?
没有吧
2004-9-24 13:42
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
laoqian[FCG]兄:
我读过你的帖子,高人啊,请不吝指教
2004-9-24 21:47
0
雪    币: 339
活跃值: (1510)
能力值: ( LV13,RANK:970 )
在线值:
发帖
回帖
粉丝
8
先自己写一个小程序, shell(test.exe) 分析一下。
其实没必要用VB的函数库。因为不透明,光一个参数就够麻烦了。有的还涉及到其他结构。
用API的shellexecute(具体我忘了),直接嵌入就可以了。
小楼大侠专门搞VB。
2004-9-25 16:26
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
最初由 nbw 发布
先自己写一个小程序, shell(test.exe) 分析一下。
其实没必要用VB的函数库。因为不透明,光一个参数就够麻烦了。有的还涉及到其他结构。
用API的shellexecute(具体我忘了),直接嵌入就可以了。
小楼大侠专门搞VB。

先谢谢nbw大侠,我也想过,我机子上只装了.net,要不早照葫芦画瓢了
直接调用ShellExecute我也想过,我对VB的机制不是很了解,VB编译出来的好像还是需要运行库支持,我试一试吧,再次谢谢nbw大侠,以后多指教
2004-9-25 22:45
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
偶试了一下,竟然ok,看来什么事情就得自己多动手啊,
和我一样的菜鸟要引以为戒,;)
2004-9-29 17:23
0
游客
登录 | 注册 方可回帖
返回
//