在Windows中学习汇编编程的任何资源?

Vic*_*tor 8 assembly

我想学习Windows程序集编程.但是我在找到学习材料方面遇到了一些问题.我看到的所有材料都没有提供足够的代码来编程(它们只显示片段),太旧了,或者只是理论.

Car*_*rum 5

您将要执行的大多数汇编语言编程(尤其是在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)

  • @Victor,您可以从汇编程序中调用与在C程序中相同的函数。听起来更像是您需要了解Win32 API,而不是汇编语言。也许我误会了你的问题? (3认同)
  • 我说“用于Windows”。我已经知道Linux程序集。 (2认同)

Mik*_*wan 5

长期以来,Iczelion的教程是Windows汇编编程的“标准”入门指南。同样对于Windows汇编程序编程而言,最好的入门论坛(IMO)可能是MASM32。它有一个非常活跃的社区,对新手和初学者都非常欢迎和帮助。这取决于您要学习哪种特殊的汇编程序,但是IMO(对于Windows MASM32)对于初学者来说拥有最佳的用户基础(无论是社区还是周围的资源)。

您提到您还想学习RCE(反向代码工程)。lena151的教程是在Windows上进行反转的一个非常常见的起点,如果您已经从完成Linux汇编程序编程的概念上了解汇编程序,那么这可能也是一个不错的开始。