【发布时间】:2017-02-11 05:27:37
【问题描述】:
作为一个安全大学项目,我应该编写一个 PE 感染器。但是我是汇编初学者,所以由于我不知道如何处理变量而导致多次崩溃。
我知道在常规程序中,我们有一个用于初始化变量的 .data 部分,以及一个用于未初始化变量的 .data?。
但在这种情况下,每个教程似乎都同意应该在 .code 部分中定义变量。
这会导致这样的事情:
.386
.model flat, stdcall
option casemap:none
include \masm32\include\masm32rt.inc
.code
start:
mov stuff, 1
ret
stuff dd ?
end start
不幸的是,这会导致分段错误,我不知道为什么。
再举一个例子:
.386
.model flat, stdcall
option casemap:none
include \masm32\include\masm32rt.inc
.code
start:
invoke MessageBoxA, 0, offset hello, offset hello, MB_OK
ret
hello db "Hello buddy", 0
end start
这个不能编译,因为 hello 变量在编译(assemble :p)时是未知的,这对我来说似乎是合法的,但是......那是什么方法?
【问题讨论】: