OSX 上的线程注入

逆向工程 操作系统
2021-07-04 03:54:30

多年来,在 Windows 上进行了大量逆向工程,导致了大量未记录的功能,例如NtCreateThreadEx用于跨会话注入线程。

在 OSX 上,线程注入的话题似乎相对未知。由于操作系统如此之大,我可以从哪里开始寻找以发现我想要的功能?

例如,如果有人问我有关 Windows 的问题,我希望得到一个答案,告诉我开始逆向工程CreateRemoteThread或开始研究内核如何创建用户线程并将它们指向ntoskrnl.exe.

3个回答

诚然,我不太了解 OSX,甚至 Linux。但我建议查看GDB源代码。GDB 以某种方式能够附加到正在运行的进程以调试它们。我想这至少会提供您正在寻找的类似功能,并证明这是一个不错的起点。

如果您正在寻找系统调用,那么ptraceGDB似乎就是这样做的。此外,这里有一个关于调试器如何工作的很好的概述。

更新

实际上,Uninformed 似乎写了一篇文章,涵盖了这个主题。他们在文章中讨论:

很多人似乎从 Linux 或 BSD 背景转向 Mac OS X,因此期望 ptrace() 系统调用有用。然而,不幸的是,在 Mac OSX 上情况并非如此。出于某种不敬虔的原因,Apple 决定让 ptrace() 不完整,除了对反调试机制进行微弱的尝试或单步执行该过程外,它无能为力。

同样从那篇文章中,它看起来thread_create_running可能是您正在寻找的功能。 链接到手册页。

对于 OS X 注入,我会查看 mach_star 项目(mach_override 和 mach_inject)

https://github.com/rentzsch/mach_star

此外,Pin 现在有 os x 支持

http://software.intel.com/en-us/articles/pin-a-binary-instrumentation-tool-downloads

你可能会发现这很有用——我最近写了一篇关于这个的教程,因为,正如你所注意到的,这些东西的文档总是那么粗略而且经常过时。

http://soundly.me/osx-injection-override-tutorial-hello-world/