我想学习Windows程序集编程.但是我在找到学习材料方面遇到了一些问题.我看到的所有材料都没有提供足够的代码来编程(它们只显示片段),太旧了,或者只是理论.
您将要执行的大多数汇编语言编程(尤其是在Windows等全操作系统环境中)无论如何都是片段(而不是100%汇编程序)。最简单的入门方法是编写C程序作为测试工具,并使其调用汇编语言函数。这是一个简单的例子:
组件:
.text
.globl _asm_add
_asm_add:
mov %rdi, %rax
add %rsi, %rax
ret
Run Code Online (Sandbox Code Playgroud)
example.c:
#include <stdio.h>
int asm_add(int, int);
int main(int argc, char **argv)
{
int a = 12;
int b = 6;
int c = asm_add(a, b);
printf("%d + %d = %d\n", a, b, c);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
生成并运行(在使用clang的Mac上;在Windows上针对编译器进行修改):
$ clang -o example example.c asm.s
$ ./example
12 + 6 = 18
Run Code Online (Sandbox Code Playgroud)
长期以来,Iczelion的教程是Windows汇编编程的“标准”入门指南。同样对于Windows汇编程序编程而言,最好的入门论坛(IMO)可能是MASM32。它有一个非常活跃的社区,对新手和初学者都非常欢迎和帮助。这取决于您要学习哪种特殊的汇编程序,但是IMO(对于Windows MASM32)对于初学者来说拥有最佳的用户基础(无论是社区还是周围的资源)。
您提到您还想学习RCE(反向代码工程)。lena151的教程是在Windows上进行反转的一个非常常见的起点,如果您已经从完成Linux汇编程序编程的概念上了解汇编程序,那么这可能也是一个不错的开始。