我想学习Windows程序集编程。但是我在找到学习材料方面遇到了一些问题。我看到的所有材料都没有提供足够的代码来编程(它们只显示片段),太旧了,或者只是理论。
答案 0 :(得分:5)
很长一段时间,'标准'教程初学者从Windows程序集编程开始是Iczelion's tutorial。同样对于Windows汇编程序编程,最好的论坛(IMO)入门可能是MASM32。它有一个非常活跃的社区,对新手和初学者非常热情和乐于助人。它取决于你想要学习哪种汇编程序的特殊风格,但IMO,对于Windows MASM32,对于初学者来说,它拥有最好的用户群(在社区和资源方面)。
你提到你也想学习RCE(反向代码工程)。在Windows上反转的一个非常常见的起点是lena151's tutorials,如果您已经从已经完成Linux汇编程序编程的概念上了解汇编程序,这可能也是一个不错的开始。
答案 1 :(得分:3)
您要做的大多数汇编语言编程,尤其是在像Windows这样的完整操作系统环境中,无论如何都只是片段(而不是100%的汇编程序)。最简单的入门方法是将C程序编写为测试工具并让它调用汇编语言函数。这是一个简单的例子:
asm.s:
.text
.globl _asm_add
_asm_add:
mov %rdi, %rax
add %rsi, %rax
ret
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;
}
构建并运行(在我的Mac上使用clang;在Windows上修改编译器):
$ clang -o example example.c asm.s
$ ./example
12 + 6 = 18
答案 2 :(得分:3)
最重要的是英特尔手册(像AMD这样的其他厂商也会有自己的,但说明非常相似):
http://www.intel.com/products/processor/manuals/
这些都有编程的所有说明,成本和一些指南。