我和我的团队正在使用GitHub Extension和我们的Visual Studio Team服务.最近,我们决定使用IncrediBuild提高开发生命周期速度.
有谁知道如何将IncrediBuild与Visual Studio Team Services构建服务器集成?
所以直截了当地问我:如何用32位ASM编译器编译我的ASM文件,将它包含在我的64位项目中并使用ASM文件的函数名访问编译后的代码?
如果有点不清楚,我可以详细说明:
我正在将我的一个项目从32位转换为64位,我遇到了技术问题.我的项目编译一个ASM文件,并使用编译后的二进制文件作为其用法的输入.
当我的项目是32位时,它很容易.我在项目中包含了ASM文件并添加了一个构建规则来编译它们Microsoft Macro Assembler- 然后我可以从我的32位项目中访问已编译的代码,将我想要从ASM访问的每个函数导出.h到头文件并使用它来访问它函数名称(我能够这样做,因为它被编译为obj,链接器知道符号,因为我将原型导出到.h文件中).
现在,我需要将此代码转换为64位,但我仍然需要将ASM编译为32位代码,并且仍然可以执行相同的操作(从我的64位程序访问已编译的32位代码) ).但是,当我尝试编译它时,它显然无法识别指令,因为现在整个项目被编译为64位代码.
提前致谢.
我试图从EFLAGS寄存器中获取DF的值.我尝试使用该LAHF指令,但根据Intel X86文档,该指令仅加载SF, ZF, AF, PF, CF标志.但是,我试图找到一条能给我DF寄存器值的指令.
提前致谢.
我尝试从另一个位置加载DLL文件“ bcryptprimitives.dll”(在我的情况下,该文件最初位于“ C:\ Windows \ syswow64 \ bcryptprimitives.dll”下),带有以下代码段:
LoadLibraryW(L"<altered path>\\bcryptprimitives.dll");
Run Code Online (Sandbox Code Playgroud)
但是,在执行这一行代码后,我得到了以下错误:
C:\ Program Files(x86)\ Notepad ++ \ bcryptprimitives.dll并非旨在在Windows上运行,或者包含错误。尝试使用原始安装媒体再次安装程序,或与系统管理员或软件供应商联系以获取支持。错误状态为0xc0000428。
我在以下字典中搜索了0xc0000428 NTSTATUS:https ://msdn.microsoft.com/en-us/library/cc704588.aspx
,显然此状态是STATUS_INVALID_IMAGE_HASH。
最初的错误是有道理的,因为我将图像PE标头中的“ LoaderFlags”字段从0x00000000更改为0x00000001(由于此字段已弃用,因此不需要任何影响),但是即使我更改了该字段,我也已修复PE校验和。
但是,LoadLibrary仍然拒绝加载DLL。深入研究ntdll发现错误是从内核返回的:
这让我认为DLL已通过某种方式签名,并且内核检查DLL是否被更改。因此,就我而言,无论如何我如何从另一个位置加载此DLL并删除符号检查?
windows ×4
assembly ×3
c ×3
debugging ×2
x86 ×2
azure-devops ×1
ida ×1
incredibuild ×1
internals ×1
winapi ×1