代码之家  ›  专栏  ›  技术社区  ›  René Nyffenegger

是否可以从程序集代码创建Windows exe,而不链接到c库,也不使用ExitProcess()?[副本]

  •  2
  • René Nyffenegger  · 技术社区  · 7 年前

    我可以创建一个开始运行的程序(并且我可以用gdb调试),但是我不知道如何干净地退出该程序。所有教程都可以链接到标准C库并定义 main 函数或使用 ExitProcess 在DLL中定义的WinAPI调用。

    int 0x80 使用的指令 exit

    那么,有没有办法从我的程序中干净地返回呢?

    1 回复  |  直到 7 年前
        1
  •  1
  •   Peter Cordes    7 年前

    Windows有一些 system calls 一如所有(传统) operating systems . 阅读 Operating Systems: Three Easy Pieces 了解操作系统的更多信息。

    但微软Windows是专有软件。系统调用接口未由Microsoft记录,可能是特定于特定版本的,您需要花费大量时间对其进行反向工程。另见 this .

    人们已经做了逆向工程,并在 https://j00ru.vexillium.org/syscalls/nt/32/ .

    因此,直接进行系统调用是可能的,但非常不实际,除非是在自己的桌面上进行学习实验(不适用于您分发的可执行文件)。

    另一方面,避免将任何dll加载/映射到进程的虚拟地址空间,这实际上是不可能的。

    推荐文章