win8保护内存管理机制变化,执行汇编代码的方式失效了
vb.net吧
全部回复
仅看楼主
level 13
Nukepayload2 楼主
刚装windows8.1和vs2013u2,使用.Netframework 4.0
替换_MethodPtr法执行汇编代码报AccessViolationException(bex)
发生在ASM.Invoke(UInteger) As UInteger 的调用修改过的委托那一行
已测试,原本在win7能正常运行任意长度的
正确的
汇编代码。
我会试着修改一些细节试图修复Bug
如果我修改失败,我会用vb6时期使用的CallWndproc法替代这种办法。
到时候代码在原帖更新。
2014年06月25日 17点06分 1
level 10
2014年06月26日 20点06分 2
level 13
Nukepayload2 楼主
改委托失败
CreateRemoteThread失败
今天测试CallWndproc
CallWndProc在MS.Internal和MS.Win32里有声明,分析相关dll文件应该能把准确的声明反出来
--来自相机+平板电脑+手机融合成的的Lumia 1520
2014年06月27日 00点06分 3
level 13
Nukepayload2 楼主
不排除System.Delegate._methodPtr的用途改变的可能性。因为Windows8的很多系统组建是需要.net4.0的,微软可能会修改System.Delegate的代码以提高安全性
--来自相机+平板电脑+手机融合成的的Lumia 1520
2014年06月27日 00点06分 4
level 13
Nukepayload2 楼主
我把早期版本的.net framework安装了,打算测试早期版本是否仍然AccessViolation
--来自相机+平板电脑+手机融合成的的Lumia 1520
2014年06月27日 00点06分 5
level 10
其实硬给.NET嵌汇编是邪道啊,实在要用到一些高效率的函数,还不如直接用C写个DLL给.NET调用。
2014年06月27日 00点06分 6
在.net Native技术成熟之前 pinvoke折损性能比较明显,你可以用托管c++测试native方式与pinvoke的性能 --来自相机+平板电脑+手机融合成的的Lumia 1520
2014年06月27日 00点06分
写dll确实是常用的,但特殊情况下仍然要直接执行机器码 --来自相机+平板电脑+手机融合成的的Lumia 1520
2014年06月27日 00点06分
一些vb6程序嵌入了汇编代码,移植时没有对应的办法就会出现移植困难 --来自相机+平板电脑+手机融合成的的Lumia 1520
2014年06月27日 01点06分
1