问题标签 [fasm]

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.

0 投票
1 回答
683 浏览

string - FASM - 简单:lstrcpy & lstrcat - 结果字符串不正确

我正在尝试在 FASM 中完成一项简单的任务,我已经为此苦苦挣扎了大约两个小时。

我已经用目标和问题评论了代码,但我会解释。

我正在尝试将特定文件的路径存储到变量中。该文件位于临时目录中。所以我必须先获取临时路径,然后将文件名附加到临时路径的末尾。

我正在尝试按顺序执行两次。但由于某种原因,我得到的字符串最终“搞砸了”。

我目前的代码如下:

任何解决此问题的帮助将不胜感激。谢谢!

0 投票
2 回答
4909 浏览

winapi - FASM - 如果文件存在 - 使用 GetFileAttributes - INVALID_FILE_ATTRIBUTES 值?

我在 FASM 中使用 GetFileAttributesA 来确定文件是否存在。我知道如果文件不存在,则返回值将是 INVALID_FILE_ATTRIBUTES,但我不确定如何检查该值。

我的代码:

看到编译器无法将 INVALID_FILE_ATTRIBUTES 识别为值:

不管用。

有谁知道这个常量的值,以便我可以手动输入它?

任何帮助表示赞赏。谢谢


在 Jens Björnhager 回复后,以下是其他感兴趣的人的工作代码:

甚至:

再次感谢 Jens Björnhager!

0 投票
1 回答
1050 浏览

if-statement - FASM - x64 与 x86

我在使用 windows vista x86 时在 FASM 中做了一个简单的应用程序。该应用程序编译并运行良好,没有任何错误。

然后,我将相同的源代码(实际上是相同的文件)移动到我的另一台运行 windows vista x64 的 PC 上。在编译源代码时,我收到了错误。

在 x86 上,我可以简单地开始:

在 x64 上编译时,我必须使用类似于以下内容的内容:


另一个问题(我主要关心的)是在 x86 上我可以使用:

但是在 x64 上编译相同的代码时,我得到“非法指令”,并突出显示以下行:

在 x64 上执行此操作是否有不同的方法?

另外,我如何编码到两者都兼容的地方?我想,如果我在 x86 上编译,那么结果输出会在 x64 上运行良好吗?

最后,这可能与架构之外的其他事情有关吗?

0 投票
1 回答
332 浏览

api - FASM - 添加启动 HKCU

我正在尝试通过在“SOFTWARE\Microsoft\Windows\CurrentVersion\Run”中添加一个条目来使我的 FASM 应用程序将自身添加到系统启动中

我正在使用以下 API:

RegOpenKeyExA

RegSetValueExA

RegCloseKey

在 advapi32.dll

运行我的代码时,永远不会创建该条目。这是我的代码:

我不明白为什么我的条目没有被添加到注册表中。对此问题的任何帮助将不胜感激。


尝试使用 OllyDbg 并提出以下建议:

在此处输入图像描述

不知道为什么我会收到拒绝访问错误。RegOpenKeyExA 返回 ERROR_SUCCESS


原来它正在将自己添加到启动中,但在 RegEdit 中不可见,仅在 MSConfig..weird..?

0 投票
1 回答
307 浏览

64-bit - FASM - IsWow64Process - 检查布尔结果

我正在尝试确定运行我的应用程序的 PC 是 x64 还是 x86。

这是我当前的代码:

它只是在执行时崩溃。

检查布尔值的正确方法是什么,我是否正确执行了该部分?

感谢您为解决此问题提供的任何帮助。

0 投票
1 回答
1239 浏览

assembly - 环境变量 - 启动文件夹

启动文件夹是否有环境变量。

在 XP 上它位于 C:\Documents and Settings(user)\Start Menu\Programs\Startup 下,而在 vista 7 下它位于 Appdata\Microsoft\Windows\Start Menu\Programs\Startup\

所以我想知道这个文件夹是否有 EnVar?

0 投票
3 回答
2550 浏览

delphi - FASM - 将字符串传递给 Delphi DLL

我有一个用 Delphi XE2 编码的 dll,代码如下:

现在,我在 FASM 应用程序中导入这个函数,如下所示:

使用方式如下:

但是生成的消息框出现扭曲的字符,如下所示:

在此处输入图像描述

这是函数调用的确切结果。

我该如何解决这个问题?

0 投票
3 回答
2856 浏览

assembly - 如何使用 FASM 控制台进行编译

我正在尝试制作一个程序集 IDE,它允许用户输入代码并使用 NASM、FASM、YASM 等进行编译。但是,由于 FASM 带有 IDE,因此我找不到任何有关使用控制台编译的信息。例如,如果我有一个程序 test.asm,我会这样编译:

如果我这样做了,fasm.exe 必须与我假设的命令提示符运行在同一目录中。谢谢你的帮助。

0 投票
2 回答
848 浏览

windows - 从程序集中调用 Windows API 但没有硬编码地址

我在阅读 fasm 源代码时在 windows XP 环境中学习 fasm,我发现调用宏

并导入宏。

但我找不到 MessageBoxA 的任何硬编码地址,也找不到在汇编代码中加载 user32.dll 。只有宏定义标记字符串而不是地址。

我的假设是这样

  1. 有代码加载 user32.dll 并返回加载的 dll 的起始地址 => 这里,让我们调用返回的地址到位置 A

  2. 有硬编码地址和标签对(例如 MessageBoxA = 0x00000000)

  3. 所以指令'call'可以调用MessageBoxA标签(将转换为位置A + MessageBoxA偏移量)

我的假设错了吗?我想知道如何调用 API。

谢谢

0 投票
1 回答
191 浏览

winapi - FASM 中的 GdiGradientFill 存在问题

我正在尝试编写我最近开发的 Java 应用程序的 ASM 版本,作为 Win32 ASM 中的一个项目,但正如标题所述,我遇到了 GdiGradientFill 问题;目前,我更喜欢使用 FASM,并避免使用更高级别的 ASM 构造,例如 INVOKE 和使用 WIN32 包含。

我有什么,atm:

但是,代码只返回一个 FALSE,并且在通过两个 MSDN ( http://msdn.microsoft.com/en-us/library/windows/desktop/dd373585(v=vs.85).aspx )

和其他一些例子(http://www.asmcommunity.net/board/index.php?topic=4100.0),我仍然看不到我做错了什么,谁能看到这里的缺陷?

另一个问题是我尝试使用 Msimg32 的 GradientFill,因为这总是会导致崩溃,但是,我看到一些报告说 Win2K+ 操作系统只是将参数从 Msimg32 传递到 GDI32;这是准确的,还是有其他人遇到过这种表格的问题?

整个代码的 Pastebin 链接:http: //pastebin.com/GEHDw6Qe

谢谢你的帮助,SS

编辑:代码现在正在工作,老实说,我不知道发生了什么变化,除了将 PUSH / POP 序列更改为 MOV EAX,[rectClient.left] 之外,我看不出以前和现在的工作数据之间有什么不同,等(PUSH / POP 方法也有效) - 非常感谢那些提供帮助的人!