fasm相关内容
..
我刚开始使用 fasm/x86 编程,我从 64 位样本开始作为我项目的目标,在该项目中我需要一些汇编程序是 64 位至强. 我从 PE64DEMO 开始并对其进行了修改以添加一个循环,但是在第一次迭代后它失败了,因为(从我可以在线收集的信息)Windows api 函数可以更改寄存器而不是恢复它们.我还读到我应该保存我需要自己从堆栈中推送和弹出的内容,我评论了推送和弹出,如果我取消注释它们
..
“修正"在应用于某个部分时究竟有什么作用?在 fasm 示例中,我发现了以下部分声明,但我真的不确定 fixups 属性的作用,我在 fasm 文档中找不到太多相关信息. section '.reloc' fixups data 可读可丢弃如果 $=$$dd 0,8 ;如果没有修正,则生成虚拟条目万一 解决方案 这似乎是 FASM 如何生成 PECOFF DLL 的错误..reloc 部分仅
..
考虑以下示例: mov al, [variable1] 这是有道理的,因为您在寄存器 al 中保存了变量 1 的内容(因此取消了对它的引用). 现在考虑这个例子: mov dword L6, 1 这是不正确的;正确的形式是 mov dword [L6], 1 如果我们将 1 移动到内存中,我应该告诉它存储在那个地址而不是内容中.假设您要告诉某人去某个地方参
..
我正在尝试使用“克隆"系统调用创建一个线程……我搜索得太多了!例如, link1 link2 现在这是我的 linux x64 汇编源代码: 格式化 ELF64 可执行文件进入 thread_linux_x64THREAD_MEM_SIZE = 1024定义 PROT_READ 0x1定义 PROT_WRITE 0x2定义 PROT_EXEC 0x4定义 MAP_PRIVATE 0x0
..
我见过 如何在Windows下用汇编程序编写hello world? 和 使用 DOS 在 Fasm 中编写 hello,world 到控制台 如何在 fasm 中写入控制台? 我已经尝试/看到过这样的代码,例如来自 这个答案 ;---ASM Hello World Win64 MessageBox外部消息框A:PROCextrn 退出进程:PROC.数据标题数据库
..
我提取了 windows/meterpreter/reverse_tcp 有效载荷的汇编代码,其中lhost设置为 127.0.0.1 ,lport设置为 443 ,但是,在使用 fasm 构建汇编程序之后,该程序崩溃了,为什么会有任何想法? 汇编代码: format PE控制台使用32进入开始开始:amov ebp,esp异或mov edx,[fs:edx + 0x30]mov edx
..
在某些x86汇编方言中,可以使用@@:放置匿名本地标签,并像jmp @F这样在跳转中引用它们,其中@F表示“下一个@@",而@B表示“上一个@@". 以下是我在网上搜索时发现的来自Microsoft的描述: Q33067:匿名标签跳转说明 我使用预处理器的宏工具今天,我对MASM在处理匿名本地标签方面的差异(如果有的话)感到好奇.但是,我找不到任何明确表明MASM支持多步引用的信息.我
..
我的代码: .MODEL SMALL .CODE ORG 100H Label1 : JMP Label2 +---------------------+ | TEMPAT DATA PROGRAM | +---------------------+ Label2 : +---------------------+ | TEMPAT PROGRAM | +-----------
..
在将参数传递到主ASM文件之外的过程时遇到麻烦.这是我的代码.它显示了一个主要过程_main(在main.asm中),该过程在另一个源文件(sub.asm)中调用子过程_sub.子过程将打印由主过程指定的字符串. main.asm: ;subprocedure test- main.asm org 100h include 'sub.asm' ;file of sub-procedur
..
这个问题非常简单,但是我似乎找不到解决方法:如何在Windows/FASM中写入StdOut? 似乎没有任何在线文档.想法? 解决方案 有一些选择... 1)使用WinAPI.这是 WriteConsole 或通过使用CreateFile,文件名为CON,然后使用 WriteFile 2)使用msvcrt和 printf ,就像在ac程序中一样.
..
我试图在FASM上编写我的第一个.exe程序.当我使用org 100h时,它可以正常工作,但是我想编译.exe文件.当我用"format PE GUI 4.0格式"替换第一行并尝试对其进行编译时,发生了错误:“值超出范围"(行:mov dx,msg). ORG 100h ;format PE GUI 4.0 mov dx,msg mov ah,9h int 21h mov ah
..
我试图调用sprintf格式化字符串并将结果存储在堆栈变量中.但是,我的尝试惨遭失败,并立即崩溃. sub esp, 0x100 ;Allocate 256 bytes on the stack. push dword[RequestedFile] ;push string2 pus
..
我有以下FASM代码: msg1: db "hello", 0 msg1_len equ $ - msg1 ; should be 6 随后在代码中,mov edx, msg1_len将其值存储在寄存器中. 虽然msg1_len应该是6,当我调试它时,它返回一个奇怪的大数字,例如4570.也就是说,"msg1_len"等于4570 在其他应
..
我尝试在FASM中编译以下代码: mov DWORD PTR [ebp - 4], 1234567 它给了我一个“无效的表达式"错误.但是,以下代码有效: mov DWORD [ebp - 4], 1234567 FASM是否使用Intel语法(我假设第一行代码符合Intel语法)? 解决方案 它给了我一个“无效的表达式"错误. 与MASM(和其他)不同
..
我在32位Windows XP的平面汇编程序中编写了一些汇编程序.但是,由于我现在拥有64位Windows 8,因此我无法运行.com文件,因为它们似乎与64位版本不兼容(程序为32位). 我如何转换它以便也可以在win8中运行它?也许使用其他汇编程序? 我想避免使用仿真器和虚拟机. 解决方案 .com文件为16位.您可以使用32位指令和寄存器,但这是16位代码.一旦将64位C
..
我正在尝试将DWORD变量作为指针参数发送给函数 variable1 dd 1 ... push [variable1] ; push variable adress call _InitPoiner ... _InitPoiner: ; push ebp mov ebp, esp ; lea eax, [ebp+8] ; load ad
..
我学会了使用基于DOS的简单Bootloader切换到保护模式.该加载程序将kernel.bin加载到缓冲区中,并将缓冲区复制到100000h(内核为8KiB).然后将控制权转移到内核.当我从内核返回并尝试切换到实模式时,我遇到了问题. 我的FASM汇编代码(类似于我以前的 Stackoverflow问题)如下: format MZ push cs pop ds mov eax,cs
..
我已经完成了ARM汇编编程,并且想学习Intel Assembler.我一直在听所有提到的所有这些F/M/N/ASM,但是我不确定它们与我想要实现的目标之间有什么联系? 有人可以帮助我确定学习如何在Intel架构上进行低级编程所需的知识吗?我不太了解“不同的汇编程序"之间的关系,甚至与x86,IA64,AMD64/x86-64等之间的关系如何? 如果有帮助,我最喜欢Eclipse和Vi
..
我正在学习amd64汇编程序,并试图实现一个简单的Unix过滤器.由于未知的原因,甚至简化为最低的最低版本(下面的代码),它也会随机崩溃. 我试图在GNU调试器(gdb)中调试该程序.在gdb的默认配置中,该程序运行良好,但是如果启用地址随机化(set disable-randomization off),该程序将开始崩溃(SIGSEGV).清单中标记了有问题的说明: format E
..