问题标签 [masm]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
windows - Windows 上 PE 文件 (exe) 的最小文件大小是多少?和最小的内存分配?
Windows 上 PE 文件 (exe) 的最小文件大小是多少?以及最小的内存分配?
我组装了(使用 VS 10 附带的 MASM (ml.exe) 和 link.exe)以下代码: 我不能省略 kernel32.lib 和 ExitProcess,如果这样做,程序会崩溃。
包含睡眠命令只是为了能够在程序结束之前读取内存使用情况。
现在我测量以下内容:.exe 文件的大小正好为 2.5 KB(如果我包含 user32.lib 和 MessageBoxA,它的大小会变成 3 KB --> 块?)并且应用程序在运行时使用 136 KB RAM(Vista 32 位)。
对于这样一个简单的程序来说,这不是多少内存吗?为什么exe文件这么大,内存需求比exe文件大很多?
有一些最小的内存大小吗?文件呢?看起来它是以 0.5 KB 大小的块组织的,但对于这个可能最短的程序来说,它不是 0.5 KB 吗?
我在哪里可以阅读到这方面的信息(除了http://msdn.microsoft.com/en-us/magazine/cc301805.aspx,我将查看它)?
谢谢(我在这里的第一个问题)
windows - 装配问题
我正在尝试在 Windows 命令提示符下使用 DEBUG 将 5 位小数相乘,但我担心我已经很遥远了。我的程序得到十进制值 1303。什么时候应该是 4320。小数点是 15、12、4、2、3。
dos - 无法运行dos MBR
伙计们。我从 C 盘读取 MBR 到内存,例如 0:0200H,然后调试它。但是,当我到达 0:7c18H REPZ 0:7c19H MOVSB 时,我收到一条消息“CPU 错误:操作码不正确。杀死进程。 ' 我不知道如何处理它。任何帮助将不胜感激。谢谢。
winapi - WriteFile String Byte Length 导致崩溃
问题
我一直在尝试各种字节计数,试图让WriteFile工作。问题是它在写入文件后立即崩溃。所有文本都在文件中,但“程序已崩溃,发送给 Microsoft??” 弹出错误对话框。
当注释掉调用 WriteFile 及其下面的所有内容时,程序运行良好并且不会崩溃。但是,当我只是取消注释 WriteFile 并将其下面的所有代码都注释掉时,它再次抬起了它的丑陋脑袋。代码如下,如果有人能看到我错过的东西,非常感谢:-)
我试过的字节长度。
我尝试了 23、24(字符串长度 + null)、25(也许我忘记了一个字节)的字节长度,并且也只使用了 SIZEOF WriteText,但它们都失败了:-(。
代码
c# - MASM 汇编语言和 ILASM 的关系(如果有的话)是什么?
MASM 汇编语言和 ILASM 的关系(如果有的话)是什么。有一对一的转换吗?我试图将 Quantum GIS 整合到一个程序中,我一边写一边写!我的计算机上有 GIS,我有 RedGate Reflector,它和 Visual Studio 2008 的对象浏览器都无法打开 Quantum 中的 .dll 的一个(其中几个我对它们的行为方式没有明确的线索)。我使用了 MASM 程序集编辑器并“打开”了同一个 dll,它吐出了一些我一开始没想到一定会理解的东西。我如何/如何将相同的“代码”转换为我可以在 ILASM 中与之交互的东西,并且我因此假设在 Csharp 中?非常感谢您阅读以及对早期问题的所有回复......请记住我对 Csharp 编程相对较新,
memory - 在同一个内存地址存储多个值。分隔符?
我正在修改 Read- 和 WriteProcessMemory 以及我发现的一个旧平台游戏。每当玩家进入新关卡时,都会创建敌人并设置每个敌人的生命值、坐标等:
(EAX 是结构的地址,138 是它们的健康偏移量)
假设有空闲内存可以写,有什么办法可以将每个 EAX 的值存储在一个相同的位置?喜欢使用各种分隔符?
干杯
winapi - 使用 WIN32 函数在 MASM 中输出 Hello World
内容
- 介绍
- 代码
- 组装和运行
- 各种各样的
- 问题
1. 介绍
这本身不是一个问题(尽管底部有一个),而是一个供 StackOverflow 上的人们试验的 HelloWorld 应用程序。
当我第一次尝试在 MASM 中编程时,我试图找到一个使用 WIN32 API 调用(因此不链接到 C 库)但找不到一个(在 MASM 语法中)的工作 HelloWorld 应用程序。所以现在我有了一些经验,我已经为其他想要学习汇编的人写了一个来摆弄。
2.代码
3. 组装和运行
我假设您在 C:\MASM32 目录中安装了 MASM32。
如果您没有安装 MASM,请访问 http://masm32.com/install.htm 并按照说明进行操作。
如果 MASM32 安装在不同的目录中,请相应地更改说明。
通过单击桌面快捷方式打开 MASM32 编辑器 (QEditor),如果没有快捷方式,请转到 C:\MASM32\ 并双击 qeditor.exe
复制代码部分的代码(只有灰色背景的文本)并粘贴到MASM32编辑器(QEditor)中并保存。
保存代码后,单击 Project 菜单并选择 Console Assemble and Link ( NOT Assemble and Link (see Miscellaneous))
转到开始并单击运行,然后键入 cmd 并按 ENTER 应出现一个带有灰色文本的黑框
使用资源管理器导航到您在第 3 步中保存代码的位置。现在应该有一个与您的源文件(第 3 步)同名的文件,但它是一个 exe。将exe文件从资源管理器窗口拖放到cmd框中(第4步黑框)
选择黑框并按回车键,文本“Hello World!” 应该出现。
4. 杂项
为什么我必须单击控制台组装和运行,而不仅仅是在项目菜单中的组装和运行?
您必须单击 Console Assemble and Run 的原因是因为有两种类型的应用程序,一种是 GUI,另一种是文本基本控制台 (DOS) 应用程序。Hello Will 应用程序是基于文本的应用程序,因此在组装时必须具有基于控制台的应用程序而不是 GUI 的设置。
有关更详细的说明,请参阅此链接中备注下的第三段。
5. 问题
好的,现在的问题是,这里是否有人看到此代码的任何问题、错误或一般问题或有任何建议
assembly - 尔湾 32 和 MASM
我需要一些帮助来为我的 asm 程序添加 Irvine32 inc/lib 支持。我将 inc/lib 添加到他们的文件夹并添加了 include Irvine32.inc includeLib Irvine32.lib 但是在与 Irvine32.lib 链接时出现错误。
有没有一个地方我可以下载一个可以运行 lib 的一体化软件包。
谢谢
assembly - 被感染的编译器,还是故障?
我遇到了一些非常奇怪的事情,事情就是不加起来。首先,我在这里发布这个是因为我不确定这是否与计算机病毒有关。如果是这样,你能指导我到一个地方寻求帮助吗?
所以现在:
我在这里遇到了一些奇怪的问题,我的防病毒和恶意软件字节标志代码*都是用 masm 和 masm 示例作为病毒编译的。我用谷歌搜索过,发现这个问题以前也发生过,所以我没有太认真,起初认为这是一个误报。
但是我编译了你在这篇文章底部看到的代码来测试我的其他一些东西。我通过 ollydbg 运行它(同时忽略了我的 comodo 防病毒软件),然后我看到了这个:
下面的代码不可能编译成那个跳转,所以我正在单步执行代码。过了一会儿,我看到奇怪的代码开始通过 ntdll.dll 库中的 api 进行枚举。发生了什么?如果这确实是病毒到哪里寻求帮助?
但我仍然不确定,comodo 和malwarebytes 都只将示例标记为病毒,而不将文件(test.exe)标记为病毒
我用来测试的测试代码...
*: 包括 \masm32\include\masm32rt.inc
更新:
代码不在磁盘上,而是在内存中,所以它可能是某种库:
而且我已经删除了调用退出过程,它仍然存在
file-io - 从 ASM 中的文件中读取浮点数
我一直在解决The Binary Auditor中的 c++ 和 asm 问题。我通过 c++ 的东西没问题,但是程序集给我带来了一些麻烦。我在 Windows 7 上使用 masm32。
第一个汇编问题本质上要求您计算存储在文本文件中的一系列浮点值的平均值,每行一个值。到目前为止,我已经能够从文件中读取数据并将其作为一系列字符存储在数组中。
所以,我的问题是,要从数组中提取浮点值,我需要物理查看每个字节,检测换行符和'.',然后构造浮点数吗?有没有更简单的方法?!
谢谢