我有一个x64 (64位) COM。当尝试在Windows7上向Regsvr32注册时- Regsvr32崩溃。
Regsvr32是在cmd下以管理员权限运行的(“以管理员身份运行”),我尝试了32位和64位cmd.exe和regsvr.exe,甚至是两台不同的PC,但总是一样的。
调试崩溃的Regsvr32报告发生缓冲区溢出,可能是什么问题?
尽管如此,但编译为Win32 (32位)运行良好,并且在注册时没有任何问题
发布于 2010-09-08 16:46:03
当编译为64位时,该动态链接库中的DllRegisterServer()实现最有可能崩溃。
如果您有DLL的源代码,最好的办法是在实现代码执行时对其进行调试,并解决问题的根本原因。这可以是当代码不是以位不可知(32位/64位可移植)的方式编写时通常发生的任何错误。
发布于 2010-09-08 16:37:51
显然,问题是你有一个缓冲区溢出。现在,Win32和Win64进程的内存布局将有所不同,特别是使用ASLR。因此,您不能肯定地说缓冲区溢出将对Win32产生相同的影响。对于像Regsvr32这样的东西来说尤其如此,它会调用DLL中的一个函数并退出。这限制了缓冲区溢出损坏数据的时间。
当然,解决方案就是修复缓冲区溢出。
https://stackoverflow.com/questions/3665736
复制相似问题