• Skip to primary navigation
  • Skip to main content
  • Skip to primary sidebar
  • Skip to footer

War Room

Shells From Above

RSM logo

  • Home
  • About
  • Blog
  • Talks/Whitepapers
  • Tools
  • Recreation
Home > R&D > Research > I Like Syscalls (And I Cannot Lie)

I Like Syscalls (And I Cannot Lie)

August 20, 2015 By Spencer

So with the release of Windows 10 I (like many before me) decided to look into what new syscalls have been added. Syscalls are the means by which code running in the context of a user can request the functionality provided by the kernel be executed. This includes many basic operations such as opening and reading from files. Collecting this information will allow us to identify new functionality provided by the Windows 10 kernel.

In order to get the information in which I was interested, I needed a way to programmatically identify the exported syscall wrappers and extract their respective numbers. Simone Margaritelli explains how this can be accomplished in his excellent blog “On Windows syscall mechanism and syscall numbers extraction methods”. At the end of the blog, he includes a proof of concept for demonstrating his technique of matching the assembly stub to extract the syscall number. This code however would not support analysis of 64-bit binaries which is what I would prefer to inspect.

To address this I added a new tool to the mayhem project which will analyze both 32-bit and 64-bit PE files. Much in the same way outlined in the material referenced above, the script will search the PE file for exported functions and attempt to identify syscall stubs and extract the numbers which they are calling.

Now, equipped with a way to quickly and easily extract syscalls from PE files, I started analyzing ntdll.dll & user32.dll on a Windows 8.1 x64 Professional system. Using these as a baseline, I also analyzed the same files on Windows 10 x64 Tech Preview and Windows 10 x64 to identify new syscalls that are exported between the three.

* Added between Tech Preview and Final
** Removed between Tech Preview and Final

Finally this information shows that 39 syscall wrappers have been added between Windows 8.1 and Windows 10. Some of the wrappers do provide duplicate functionality as can be seen in the Nt* and Zw* functions. With this information in hand, we can start focus on the newly added Windows 10 kernel functionality. The same steps can also be applied to additional DLLs such as kernel32.dll and gdi32.dll.

Number RVA Name Ordinal
4976 0x180033320 DwmKernelShutdown 1727
4977 0x180033330 DwmKernelStartup 1728
4979 0x180033350 EnableChildWindowDpiMessage 1733
5005 0x1800334f0 GetDpiMetrics 1834
5029 0x180033670 GetPointerFrameArrivalTimes 1899
5068 0x1800338e0 InitializeInputDeviceInjection 2006
5069 0x1800338f0 InitializePointerDeviceInjection 2008
5071 0x180033910 InjectDeviceInput 2011
5073 0x180033930 InjectKeyboardInput 2012
5074 0x180033940 InjectMouseInput 2013
5075 0x180033950 InjectPointerInput 2014
5079 0x180033990 IsChildWindowDpiMessageEnabled 2035
5084 0x1800339e0 IsWindowBroadcastingDpiToChildren 2059
129 0x180093d50 NtAlpcImpersonateClientContainerOfPort 226
149 0x180093e90 NtCompareObjects 253
170 0x180093fe0 NtCreatePartition 278
229 0x180094390 NtGetCurrentProcessorNumberEx* 350
255 0x180094530 NtManagePartition 379
274 0x180094660 NtOpenPartition 404
354 0x180094b60 NtRevertContainerImpersonation 523
382 0x180094d20 NtSetInformationSymbolicLink* 556
5122 0x180033c40 RegisterManipulationThread 2207
5133 0x180033cf0 ReleaseDwmHitTestWaiters 2226
5157 0x180033e70 SetFeatureReportResponse 2275
5165 0x1800352e0 SetManipulationInputTarget** 2289
129 0x180093d50 ZwAlpcImpersonateClientContainerOfPort 1643
149 0x180093e90 ZwCompareObjects 1670
170 0x180093fe0 ZwCreatePartition 1695
229 0x180094390 ZwGetCurrentProcessorNumberEx* 1767
255 0x180094530 ZwManagePartition 1795
274 0x180094660 ZwOpenPartition 1820
354 0x180094b60 ZwRevertContainerImpersonation 1939
382 0x180094d20 ZwSetInformationSymbolicLink* 1972
5128 0x180033ca0 N/A (Ordinal Export) 2542
5181 0x180033ff0 N/A (Ordinal Export) 2566
5150 0x180033e00 N/A (Ordinal Export) 2571
5151 0x180033e10 N/A (Ordinal Export) 2576
5100 0x180033ae0 N/A (Ordinal Export)* 2578
5188 0x180034060 N/A (Ordinal Export)* 2579

Spencer

Primary Sidebar

Categories

  • Defense
  • Forensics
  • Offense
  • Physical
  • R&D

Most Viewed Posts

  • DLL Injection Part 1: SetWindowsHookEx 11.1k views
  • Sophos UTM Home Edition – 3 – The Setup 10.9k views
  • Leveraging MS16-032 with PowerShell Empire 10.1k views
  • Bypassing Gmail’s Malicious Macro Signatures 10k views
  • How to Bypass SEP with Admin Access 9.1k views

Footer

  • Facebook
  • LinkedIn
  • Twitter
  • Tools
  • About
  • RSM US LLP

(312) 634-3400

30 S. Wacker Drive Suite 3300
Chicago, IL 60606

Copyright © 2026 RSM US LLP. All rights reserved. RSM US LLP is a limited liability partnership and the U.S. member firm of RSM International, a global network of independent audit, tax and consulting firms. The member firms of RSM International collaborate to provide services to global clients, but are separate and distinct legal entities that cannot obligate each other. Each member firm is responsible only for its own acts and omissions, and not those of any other party. Visit for more information regarding RSM US LLP and RSM International.