VBGood网站全文搜索 Google

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

VB爱好者乐园(VBGood)

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

[原创]全球首创? 再次突破VB极限!VB真正稳定多线程(第二季,可以用Msgbox了)

  [复制链接]
发表于 2010-5-6 19:37:53 | 显示全部楼层
本帖最后由 msflexgrid 于 2010-5-6 20:40 编辑
34# download

maybe I don't undestand ... vbheader is pushed to thunhrtmain (ordinal export #100), EP + 1 return address to VBheader ... vbExe allway start this way .. it is not vbheader that we w ...
izero 发表于 2010-5-6 18:51

yes. it's. but it's the same as instrb("VB5!").
the EP will be changed by packer. so that, this thread don't work when protected by exe protector.
回复 支持 反对

使用道具 举报

发表于 2010-5-6 20:05:28 | 显示全部楼层
40# msflexgrid

how do you patch it? if you use new copy of this header in memory, are you change pointer to this new copy in memory? something as varPtr(copiedheader) ...
回复 支持 反对

使用道具 举报

发表于 2010-5-6 20:09:56 | 显示全部楼层
41# msflexgrid

ok, i found another way ... get the copy about 32kb from memory starting at address returned from VBGetModuleHandle and search througth this memory for VB5 string, you got it without file operation ;) somthing like:

copymemory inputbyte, address from VBGetmodulehandle, 32768

search throught inputbyte array for VB5

izero
回复 支持 反对

使用道具 举报

发表于 2010-5-6 20:13:22 | 显示全部楼层
本帖最后由 VBProFan 于 2010-5-6 20:24 编辑
yes. it's. but it's the same about instrb("VB5!").
the EP will be change by packer. so that, this thread dost not work when protect by exe protector.
msflexgrid 发表于 2010-5-6 19:37

语法错误:
1. it is 不能缩写为“it's”;
2. same about 应为 same as;
3. will be change 被动语态,change 应该使用过去分词形式 changed;
4. so that 改为 therefore 顺一点;
5. does 打错为 dost;
6. protect 少了个 ed。


40# msflexgrid

how do you patch it? if you use new copy of this header in memory, are you change pointer to this new copy in memory? something as varPtr(copiedheader) ...
izero 发表于 2010-5-6 20:05


语法错误:"are you change" should be "do you change" / "have you changed"

我已经多年不学英语,不知道说得对不对,呵呵~
不过话说回来,语言是用来交流的,只要双方能正确理解对方的意思没有歧义即可,哈哈。

评分

参与人数 1威望 +2 人气 +1 收起 理由
msflexgrid + 2 + 1 说得好。哈哈,多谢提出,这样才好改进!我

查看全部评分

回复 支持 反对

使用道具 举报

发表于 2010-5-6 20:37:33 | 显示全部楼层
41# msflexgrid

how do you patch it?


ok, i found another way ...search throught inputbyte array for VB5
izero 发表于 2010-5-6 20:09
hi,

lpAddrForPatch=ModuleHandle+instrb("VB5!")+&H2C-1
patch with "addressof FakeMain", am I right?
but the fake-form show it again...

--download at win7
回复 支持 反对

使用道具 举报

发表于 2010-5-6 20:42:38 | 显示全部楼层
语法错误:"are you change" should be "do you change" / "have you changed"
VBProFan 发表于 2010-5-6 20:13

或许是: did you changed...

评分

参与人数 1人气 -1 收起 理由
VBProFan -1 又错了,应该是 did you change...

查看全部评分

回复 支持 反对

使用道具 举报

发表于 2010-5-6 22:10:25 | 显示全部楼层
VB又要焕发青春了?期待下文。
回复 支持 反对

使用道具 举报

发表于 2010-5-6 22:35:11 | 显示全部楼层
22# download

?……要是我主窗体有关键代码怎么办??比如说我那个,主窗体初始化一堆进程内API钩子,要是初始化2次肯定非法操作……
回复 支持 反对

使用道具 举报

发表于 2010-5-6 22:38:57 | 显示全部楼层
29# download

固定的内存不能释放,直到关闭程序...
老汉你是不是火星来的???局部的静态数组(<64K?)是在栈里面分配内存空间的,所以分配速度会明显比动态的快,而且Sub一退出内存就释放了……所以我也想不通为什么静态数组会崩溃……
回复 支持 反对

使用道具 举报

发表于 2010-5-6 22:46:17 | 显示全部楼层
45# msflexgrid

you are not right, I mean ... you must copy vbheader to new variable and pass pointer to this variable to VBDLLGetClassObject. You must use copymemory to copy 104bytes of vbheader to new variable, then patch it and by VarPtr put it to VBDLLGetClassObject ... but maybe this is not right way, I don't know. Otherwise, you can use Sub Main, get ThreadID throught GetThreadID API function and compare it with App.ThreadID. If App.ThreadID is same as GetThreadID, show start form, otherwise do nothing, or maybe make message loop. Or use this algorithm in Form_Initialize and destroy form in new thread, or declare an public variable in module and count execution in Form_Initialize ... we have more than one solution to do this ;)
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2022-7-4 20:22

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