我看到一些由我编写并使用ml.exe为x86组装的程序在我的Win7x64上运行良好。我相信这是因为Wow技术。但是,有些程序(不是我写的)不能运行。他们给出的错误是:此文件的版本与您运行的Windows版本不兼容。检查您的计算机系统信息,了解您是否需要x86(32位)或x64(64位)版本的程序,然后联系软件发行商有什么方法可以修改这些程序的EXE以使其在Win7x64上运行。这些程序与其他透明运行的程序有什么根本区别。 最佳答案 它们实际上是8位或16位程序。Windowsx64在长模式下运行,不支持此类程序所需的虚拟8086模
任务:我正在构建一组x86汇编逆向工程挑战,其中我已经完成了大约20个。它们只是为了娱乐/教育。当前的挑战是更高级的挑战之一,涉及一些技巧,使EP看起来像是在正常程序中,但实际上被打包在另一个PE部分中。基本流程如下:开始时就像一个普通的MSVC++应用程序。向一堆反调试器技巧中注入(inject)偷偷摸摸的调用。如果通过,内存中的DWORD值将设置为1。稍后在程序流程中,它会检查该值是否为1,如果有效,它会解密一个小的调用表。如果它失败了,它会让他们疯狂地追逐虚假的反调试技巧,最终只会崩溃。调用表指向解密实际程序代码段的真实解密例程。调用解密例程,它们使用基本的循环异或(C^k^n,
我目前正在硬编码我的应用程序的路径,如下所示:constchar*OriginCopyFile="C:\\ProgramFiles(x86)\\i-cut\\i-cut\\Origin_copy.txt";此应用程序将在32位和64位系统中运行。我如何检测没有文件名的路径,以便将其与多个文件一起重用并使其在体系结构之间可移植。 最佳答案 您可以使用GetModuleFileName获取可执行文件的路径,无论它安装在何处,甚至以后移动到哪里。然后你可以PathRemoveFileSpec删除可执行文件名称(或strchr()和frie
Thisarticle(来自Windows工程团队)说:WOA[WindowsOnARM]willnotsupportanytypeofvirtualizationoremulationapproach,andwillnotenableexistingx86/64applicationstobeportedorrun.这是否意味着我什至无法从源代码为ARM重新编译x86/64应用程序?如果是,究竟是什么阻止我这样做?我的理解是theWin32APIispresentonWindows8ARM.如果不是,那么不能将x86/64应用程序移植到ARM是什么意思?
似乎无法找到WindowsXPProfessionalx86checkedbuild的图像。但我仍然需要支持该软件并为该系统做我的工作。:(是的,我知道我只能在免费版本上安装已检查的内核,但我仍然想要一个已检查的系统,而不是两者的混合。解决方案,有人吗?更新:问题本身似乎并不清楚我正在寻找的是安装镜像本身(ISO镜像),因此我可以安装操作系统的完整检查版本。不是服务包。不是x64图像。更新2:为什么调用MS无济于事:请参阅http://msdn.microsoft.com/en-us/subscriptions/ff723773.aspx在“由于与Java相关的解决而导致产品不可用”之
我正在寻找某种库,它可以在32位和64位Windows的Intel和AMD处理器上定期为我提供准确的CPU频率值。这样做的目的是准确测量给定计算机上的CPU负载。问题是调用QueryPerformanceCounter()会返回时钟节拍(用于测量事件的持续时间),但由于SpeedStep或TurboBoost,底层CPU频率不是恒定的。我发现有几台计算机在BIOS中关闭了SpeedStep/TurboBoost,并且不会阻止基于负载的CPU频率缩放。我正在尝试查看是否有任何可用的库可用于检测CPU频率变化(很像Throttlestop/CPU-Z甚至Windows7中ResourceM
64位WindowsABI定义了一个通用的exceptionhandlingmechanism,我相信它在C++异常和结构化异常之间共享,甚至在其他语言(如C)中也可用。如果我正在编写要在nasm中编译并链接到C或C++库的x86-64汇编例程,那么在生成展开信息和等等?我不打算直接在汇编代码中生成任何异常,尽管我认为如果用户提供的缓冲区无效等,代码可能会出现访问冲突。我希望编写尽可能少的代码来让它工作,尤其是nasm似乎对生成展开信息的支持很差,而使用MASM则不是这个跨平台项目的一个选项。我确实需要使用(因此保存和恢复)非volatile寄存器。 最佳答
是否可以以这种方式设置编译器,以便为x86和x64编译可执行文件/DLL?我的意思是,一个文件适用于两个平台。我只知道一种分别选择平台的方法,但我两个都想要。这可能吗? 最佳答案 x64主机完全支持x86可执行文件。例如。您在32位模式下编译的任何EXE都可以在32位和64位主机上正常运行。如果您不知道为什么需要64位可执行文件,您可能不知道,所以仅32位可执行文件就足够了。但是,对于DLL,情况就不同了。DLL的体系结构(32位或64位)必须与将要使用DLL的可执行文件相匹配。例如。如果您正在为x64Windows编写资源管理器扩
我正在使用以下命令在各种操作系统(WindowsXP.Server2003、Server2008、Server2008R2和7)上安装SQLServerExpress2008R2,但我不确定要使用哪个帐户(以及为什么)用于SQLSVCACCOUNT参数。此SQLServer安装将成为在同一台计算机上运行的Web应用程序的一部分,并且所有这些都将使用NSIS脚本进行安装。SQLEXPRWT_x86_ENU.exe/Q/ACTION=Install/IACCEPTSQLSERVERLICENSETERMS/ROLE=AllFeatures_WithDefaults/SQLSVCACCOUN
对于win32可执行文件(x86),我们可以设置LargeAddressAware标志,以便它在x64Windows上运行时可以访问4GB(而不是仅仅2GB)的虚拟地址空间。这看起来很吸引人。但是,也存在风险。例如,请参阅:Drawbacksofusing/LARGEADDRESSAWAREfor32bitWindowsexecutables?因此,让我们继续配置正在执行一些单元测试的系统,并将系统范围的注册表开关AllocationPreference设置为MEM_TOP_DOWN。应该这样做,不是吗?没有!问题在于VisualStudio的x86“测试运行器”(执行引擎)本身未启用