标签: masm

强制visual studio在调试时始终"重建所有"

编辑:基本上我需要的是Visual Studio在我调试时总是重建所有内容.


我目前正在使用visual studio来编译我的汇编程序,使用MASM,一般来说它工作正常.

但是我遇到了一个恼人的问题:

如果我包含这样的文件(比如带有函数的文件)

Include functions.inc
Run Code Online (Sandbox Code Playgroud)

并编译它,它最初工作正常.但是,如果我然后更改 functions.inc的内容,则无法识别,并且编译器会跳过functions.inc并在更改之前使用旧版本.

我找不到项目属性下的任何选项来解决这个问题.但是我确定它与链接器选项或其他东西有关 - 如果我在项目属性下进行任何更改(即使我更改了某些内容并将其更改回来,然后按OK),它确实可以使用新版本的functions.inc.

有任何想法吗?

assembly compilation masm visual-studio-2010 visual-studio

11
推荐指数
2
解决办法
1万
查看次数

受感染的编译器,还是故障?

我遇到了一些非常奇怪的事情,事情就是不加起来.首先,我在这里发布了这个,因为我不确定这是否与计算机病毒有任何关系.如果确实如此,请你指点我到一个寻求帮助的地方?

所以现在:

我在这里有一些奇怪的问题,我的反病毒和恶意软件标记代码*用masm和masm示例编译为病毒.我用谷歌搜索,发现这个问题已经发生过,所以我没有太认真对待这个问题,起初认为这是假阳性.

但是我编译了你在这篇文章底部看到的代码来测试我的其他一些东西.我通过ollydbg运行它(同时忽略了我的comodo反病毒)然后我看到了这个:

00401000 >  -E9 FBEF6F71    JMP 71B00000  ; this is a weird jump I did not put there
00401005     90             NOP
00401006     8BC0           MOV EAX,EAX
00401008   . 8BD8           MOV EBX,EAX
0040100A   . 33D9           XOR EBX,ECX
0040100C   . 8BC3           MOV EAX,EBX
0040100E   . 03CB           ADD ECX,EBX
00401010   . 33C3           XOR EAX,EBX
00401012   . 2BC1           SUB EAX,ECX
00401014   . 8BCB           MOV ECX,EBX
00401016   . 33D9           XOR EBX,ECX
Run Code Online (Sandbox Code Playgroud)

下面的代码不可能编译成跳转,所以我正在踩到代码.过了一会儿,我看到奇怪的代码开始通过ntdll.dll库中的api进行枚举.发生了什么?如果这确实是病毒在哪里得到帮助?

但我仍然不确定,comodo和malwarebytes都只将示例标记为病毒,而不将文件(test.exe)标记为病毒

我用来测试的测试代码......

*:include\masm32\include\masm32rt.inc

.data

.code

Start:

nop
nop
nop
nop
nop …
Run Code Online (Sandbox Code Playgroud)

assembly virus masm masm32

10
推荐指数
1
解决办法
495
查看次数

NASM是纯粹的装配,但MASM是高级装配?

我正在学习装配,能够进行逆向工程的动力.我正在尝试找到我应该开始的汇编程序,以便我可以找到教程并开始编写一些程序集.

我开始知道MASM有很多内置结构,因此我将主要使用它们而不是编码它们,如果我选择NASM,我将不得不这样做.

我的问题是......是真的吗?如果是的话,你建议从逆向工程师的角度学习装配的汇编程序和一些好的教程.

另外,如果您有关于倒车的其他建议?替代方法还是什么?

PS:我在这里看过很多文章和问题,但我仍然感到困惑.

x86 assembly reverse-engineering masm nasm

10
推荐指数
1
解决办法
8023
查看次数

汇编编程 - WinAsm 与 Visual Studio 2017

我是来问你一些关于 VS2017 的东西的。
过去,我曾将 WinAsm 用于 MASM,但从未遇到过问题。

然而,当我尝试在 VS2017 中使用 MASM 做一些事情时,我总是会遇到问题和东西......
我已经检查了整个互联网关于“如何为 MASM 设置 VS”,但没有任何帮助我,因为我总是遇到麻烦...

有没有什么方法可以将 Visual Studio 2017 用于 MASM32/64 位而不会感到头疼?

有人可以给我设置 VS2017 进行汇编编程的终极指南吗?

非常感谢您,并为我的英语不好而感到抱歉。

ide assembly masm instructions visual-studio-2017

10
推荐指数
1
解决办法
4242
查看次数

masm师溢出

我正在尝试在汇编中划分两个数字.我正在为英特尔计算机书的欧文大会工作,我无法为我的生活做分工.

这是我的代码

.code
main PROC
    call division
    exit
main ENDP

division PROC
    mov eax, 4
    mov ebx, 2
    div ebx
    call WriteDec
    ret
divison ENDP

END main
Run Code Online (Sandbox Code Playgroud)

WriteDec应写入eax寄存器中的任何数字(应在除法调用后设置为商).相反,每当我运行它时,visual studio崩溃(程序确实会编译).

x86 assembly masm

9
推荐指数
1
解决办法
2万
查看次数

将_M12过程中的__m128d返回给C调用者

我正在将一个函数从内联汇编移植到Visual Studio 2013中的MASM,并且无法从中获取返回值.

这是C调用者和汇编函数原型:

extern "C" void AbsMax(__m128d* samples, int len, __m128d* pResult);

__m128d AbsMax(__m128d* samples, int len)
{
    __m128d absMax = { 0, 0 };
    AbsMax(samples, len, &absMax);
    return absMax;
}
Run Code Online (Sandbox Code Playgroud)

和组装功能:

.686              ;Target processor.  Use instructions for Pentium class machines
.xmm

.model flat, c    ;Use the flat memory model. Use C calling conventions
.code             ;Indicates the start of a code segment.

AbsMax proc samples:PTR DWORD, len:DWORD, result:PTR XMMWORD
    ;; Load up registers. xmm0 is min, xmm1 is max. …
Run Code Online (Sandbox Code Playgroud)

sse masm visual-c++-2013

9
推荐指数
1
解决办法
432
查看次数

参加装配课程,陷入DOS!

我正在学习微处理器编程课程,作为我的电子工程学位的一部分.不幸的是,在实验室中,我们必须使用MASM在DOS中工作.

现在,我并没有真正发现DOS是一个障碍,但我只是在家里的电脑上没有它(而且没有我有软盘驱动器的电脑),所以我无法练习编写程序.我在Windows下尝试过,但它没有组装(我猜这是因为保护模式).

关于我该怎么做的任何建议?我应该学会在保护模式下编程吗?这对我的课程有帮助吗?课程重点是8086.

也许虚拟机可以提供帮助?如果是这样,我在哪里可以获得DOS和MASM?

assembly dos masm

8
推荐指数
3
解决办法
2180
查看次数

快速,初学的MASM注册问题 - DX:AX

我目前正在攻读x86组装的考试.

我没有太多运气谷歌搜索":",太常见的标点符号:/

IDIV - 签署的整数部门

用法:IDIV src

修改标志:(AF,CF,OF,PF,SF,ZF未定义)

按源分配累加器的二进制除法.如果source是字节值,则AX除以"src",商存储在AL中,余数存储在AH中.如果source是一个字值,则DX:AX除以"src",并且商存储在AL中,余数存储在DX中.

摘自"Intel Opcodes and Mnemonics"

DX:AX是什么意思?

非常感谢你的时间:)

assembly masm cpu-registers

8
推荐指数
2
解决办法
4606
查看次数

汇编语言 - 堆栈机器

我在业余时间学习汇编语言,成为一名更好的开发人员.

我理解基于堆栈的机器和基于寄存器的机器在概念层面上的区别,但我想知道基于堆栈的机器是如何实际实现的.如果虚拟机(例如JVM或.NET)在基于寄存器的体系结构(例如x86或x64)上运行,那么它必须在汇编级别使用寄存器(就我而言).我显然在这里遗漏了一些东西.因此,我不确定汇编语言的区别.

我在这里阅读过文章,例如基于堆栈的机器依赖于基于寄存器的机器?以及维基百科,但我不相信他们会直接回答我的问题.

x86 assembly masm

8
推荐指数
3
解决办法
1443
查看次数

为什么MS-DOS不初始化DS和ES寄存器?

为什么DSES寄存器的初始化必须由程序员手动完成?

例如:

MOV AX, DTSEG
MOV DS, AX
Run Code Online (Sandbox Code Playgroud)

另一方面,CSSS寄存器由操作系统(in MS-DOS)初始化.为什么会这样?

assembly dos intel masm x86-16

8
推荐指数
1
解决办法
1471
查看次数