VBGood网站全文搜索 Google

搜索VBGood全站网页(全文搜索)

VB爱好者乐园(VBGood)

 找回密码
 立即注册
搜索
楼主: 19900603

Vb内嵌汇编+标准Dll插件 开源

  [复制链接]
发表于 2012-5-3 12:27:38 | 显示全部楼层
19900603 发表于 2012-5-3 00:43
忙了一晚上 修复了两处Bug  加入了 内嵌C代码  各位给点鼓励啊。。。。。
1《修改Asm标签后编译无效》
2《 ...

新建一个EXE工程,点击获取汇编代码按钮,就会发生很有趣的事情..
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-5-3 12:42:37 | 显示全部楼层
本帖最后由 19900603 于 2012-5-3 12:43 编辑

试了下Vb的崩溃时错误提示函数 挺有趣的。。。

'返回变量X
Public Function GetX(X As Long, Y As Long) As Long
   '#ASM call    DWORD PTR __imp____vbaErrorOverflow
    '#ASM mov eax, DWORD PTR _X$[esp-4]
    '#ASM mov eax, DWORD PTR [eax]
    GetX = Y - X
End Function
                  
汇编代码里声明的
EXTRN        __imp____vbaErrorOverflow:NEAR

原来红色部分等于下图  看来替换Lib函数有望啊

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

点评

EXTRN 这个不叫替换,是叫引用。。  发表于 2012-7-25 15:44
嗯 是呢。。。Vb几乎在每个函数的结尾都 加了句这个 可能是报错的吧  发表于 2012-5-3 23:22
不是很了解情况,vbaErrorOverflow不是VB的运行库DLL里带的函数么...  发表于 2012-5-3 14:00
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-5-3 19:46:16 | 显示全部楼层
本帖最后由 19900603 于 2012-5-3 19:47 编辑

啊 刚改上调用CMD来编译代码这样可以获取结果
但是 因为Hook了 CreateProcessA 所以在创建CMD的地方困住了。。
使用普通的创建进程又不能创建管道。。 求方法

使用 CreateProcessW来创建老是崩溃。。郁闷啊

点评

擦 我怒了。 CreateProcessW创建成功后调用Ml无反映 BCC可以使用 巨汗  发表于 2012-5-3 21:11
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-5-3 21:59:48 | 显示全部楼层
本帖最后由 19900603 于 2012-5-3 22:00 编辑

用了很傻瓜的方式搞定了。。


如下ASM Code, C Code  编译错误提示功能

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

点评

啊!说错了!!貌似Vc的I编译器不能生成中间代码!只能生成Obj  发表于 2012-5-5 14:20
我也没看懂什么叫做单个 cpp 编译,我觉得当然可以,把所有的 #include 都内联进来不就行咯~  发表于 2012-5-4 22:26
呃 我是说C++的编译器能像Bcc这么用么?表示怀疑。。。网上没C++编译器资料  发表于 2012-5-4 22:12
[quote]支持单个Cpp编译么? 貌似只能编译Cpp[/quote]没看懂你的问题……  发表于 2012-5-4 22:10
话说C++的编译器支持单个Cpp编译么? 貌似只能编译Cpp  发表于 2012-5-4 17:48

评分

参与人数 1威望 +16 人气 +3 收起 理由
菜鸟学飞 + 16 + 3 很给力!

查看全部评分

回复 支持 反对

使用道具 举报

发表于 2012-5-3 22:54:11 | 显示全部楼层
本帖最后由 菜鸟学飞 于 2012-5-3 22:55 编辑
19900603 发表于 2012-5-3 12:42
试了下Vb的崩溃时错误提示函数 挺有趣的。。。

'返回变量X


想到替换vblib的方法 不知道行不行

'#ASM call    DWORD PTR __imp____vbaErrorOverflow
改为  
'#ASM call    __imp____MyvbaErrorOverflow
然后自己在定义一个 __imp____MyvbaErrorOverflow

酱子行不行?

如果可以替换的话那建议楼主搞个开源项目 把vb所有内置函数都换了,这样子就可以完美解决vb多线程问题了

我靠 酱子感觉很牛逼啊...
vb要被大家改的面目全非了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-5-3 23:15:07 | 显示全部楼层
本帖最后由 19900603 于 2012-5-3 23:15 编辑

Ok 又改的差不多了 优化了好几个地方 编译的时候尽量不会出错了 当然还增加了编译错误提示
图在24楼 就不发了
因为Hook了 CreateProcessA 所以 获取编译器结果的方法很雷。。。莫笑。
加了两个例子。。 位移操作 和 调用其他模块的函数(这个Call 有点Bug 不太懂汇编。返回时崩溃了。求高手优化)


下面 例子  具体功能请自己测试  因Dll太大 下载后请自己编译。。






本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-5-3 23:18:00 | 显示全部楼层
本帖最后由 19900603 于 2012-5-3 23:20 编辑
菜鸟学飞 发表于 2012-5-3 22:54
想到替换vblib的方法 不知道行不行

'#ASM call    DWORD PTR __imp____vbaErrorOverflow


嗯 但是在汇编模块中必须得声明的   如下模拟的 Call ModuleFun中的MessageBox函数
直接Call 没事  后来加了个参数加崩溃了   但是 Call成功了 可能是返回的时候 没处理好

    '#ASM EXTRN   ?MessageBox@ModuleFun@@AAGXXZ:NEAR      ; ModuleFun::MessageBox
    '#ASM _Xn$ = -4
    '#ASM lea eax, DWORD PTR _Xn$[esp+4]
    '#ASM mov DWORD PTR _Xn$[esp+4], 123456 ; 0001e240H
    '#ASM push eax
    '#ASM Call ?MessageBox@ModuleFun@@AAGXXZ
    '#ASM pop ecx

点评

自己实现 PUSH EBP/MOV EBP,ESP, 然后结束后, LEAVE 恢复栈堆...  发表于 2012-5-14 15:44
回复 支持 反对

使用道具 举报

发表于 2012-5-4 00:15:50 | 显示全部楼层
移位直接写32位dword的好了
Public Function Text(byval Num As long,byval Blt As long) As long
                mov eax,dword ptr ss:[ebp+8]
                mov ecx,dword ptr ss:[ebp+12]
                shr eax,cl
                ret 8
我觉得这样就够用了。。。
回复 支持 反对

使用道具 举报

发表于 2012-5-4 15:42:48 | 显示全部楼层
已经很久没有见到这样的好帖了,先研究一下再发表评论……
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-5-4 21:57:58 | 显示全部楼层
本帖最后由 19900603 于 2012-5-5 00:25 编辑

插件更新这里已经不知道再加什么好了。。。

这次更新主要是把插件的选项设置勾勒出来(看下图)。。
还可以更换C代码的编译器 在选项中 勾掉[启动IDE时自动释放编译器]然后修改C编译器的名字和参数即可 但是编译器必须是生成ASM文件的
增加了代码着色颜色的管理  
增加了Vb6的安装路径 (精简版的VB 加载插件后 把VB86的路径填进去保存重启即可使用)
在顶部一级菜单增加了全编译后运行(方便测试代码 ) 和 VbAuX管理(看下图)
继续研究其他IDE功能去。。。。。
求鲜花 求火爆
PS:因bcc32 太大 自己生成Dll即可
PS:如发现Bug请跟帖回复说明原因,最好带截图
PS:如果各位还有比较实用的功能的话可以跟帖提出来或者点评提出 我会继续更新




'
'
'
'

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

评分

参与人数 1威望 +5 人气 +1 收起 理由
ey134 + 5 + 1 很给力!希望楼主出个简单的教程

查看全部评分

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

文字版|手机版|小黑屋|VBGood  

GMT+8, 2022-5-29 04:59

VB爱好者乐园(VBGood)
快速回复 返回顶部 返回列表