{"id":67773,"date":"2023-06-06T16:40:57","date_gmt":"2023-06-06T08:40:57","guid":{"rendered":"https:\/\/version-2.com\/?p=67773"},"modified":"2023-06-06T16:55:49","modified_gmt":"2023-06-06T08:55:49","slug":"binary-memory-protection-measures-on-windows-os","status":"publish","type":"post","link":"https:\/\/version-2.com\/en\/2023\/06\/binary-memory-protection-measures-on-windows-os\/","title":{"rendered":"Binary memory protection measures on Windows OS"},"content":{"rendered":"<div data-elementor-type=\"wp-post\" data-elementor-id=\"67773\" class=\"elementor elementor-67773\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-35fe5dd post-content elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"35fe5dd\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;jet_parallax_layout_list&quot;:[{&quot;jet_parallax_layout_image&quot;:{&quot;url&quot;:&quot;&quot;,&quot;id&quot;:&quot;&quot;,&quot;size&quot;:&quot;&quot;},&quot;_id&quot;:&quot;cef08c3&quot;,&quot;jet_parallax_layout_image_tablet&quot;:{&quot;url&quot;:&quot;&quot;,&quot;id&quot;:&quot;&quot;,&quot;size&quot;:&quot;&quot;},&quot;jet_parallax_layout_image_mobile&quot;:{&quot;url&quot;:&quot;&quot;,&quot;id&quot;:&quot;&quot;,&quot;size&quot;:&quot;&quot;},&quot;jet_parallax_layout_speed&quot;:{&quot;unit&quot;:&quot;%&quot;,&quot;size&quot;:50,&quot;sizes&quot;:[]},&quot;jet_parallax_layout_type&quot;:&quot;scroll&quot;,&quot;jet_parallax_layout_direction&quot;:&quot;1&quot;,&quot;jet_parallax_layout_fx_direction&quot;:null,&quot;jet_parallax_layout_z_index&quot;:&quot;&quot;,&quot;jet_parallax_layout_bg_x&quot;:50,&quot;jet_parallax_layout_bg_x_tablet&quot;:&quot;&quot;,&quot;jet_parallax_layout_bg_x_mobile&quot;:&quot;&quot;,&quot;jet_parallax_layout_bg_y&quot;:50,&quot;jet_parallax_layout_bg_y_tablet&quot;:&quot;&quot;,&quot;jet_parallax_layout_bg_y_mobile&quot;:&quot;&quot;,&quot;jet_parallax_layout_bg_size&quot;:&quot;auto&quot;,&quot;jet_parallax_layout_bg_size_tablet&quot;:&quot;&quot;,&quot;jet_parallax_layout_bg_size_mobile&quot;:&quot;&quot;,&quot;jet_parallax_layout_animation_prop&quot;:&quot;transform&quot;,&quot;jet_parallax_layout_on&quot;:[&quot;desktop&quot;,&quot;tablet&quot;]}]}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-409a2e9a\" data-id=\"409a2e9a\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-5a8be8f elementor-widget elementor-widget-text-editor\" data-id=\"5a8be8f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"max-w-post-content\">\n<p class=\"text-base leading-normal text-left text-h3 text-black\">Binary memory protection is a core part of cybersecurity, but there are many different options for implementing it. In this article, we explore common mechanisms and protection measures for Windows OS.<\/p>\n<img fetchpriority=\"high\" decoding=\"async\" class=\"alignnone size-full\" src=\"https:\/\/res.cloudinary.com\/nordsec\/f_auto,c_limit,w_1200,q_auto\/v1\/nord-security-web\/blog\/categories\/engineering\/2023\/05\/binary-memory-protection-windows-os\/featured-image.jpg\" width=\"1200\" height=\"800\" \/>\n<div class=\"my-64 text-center\">\n\n<\/div>\n<div class=\"style_postContent__uJLGT text-black break-words\" data-content-type-blog=\"true\">\n<div class=\"Article_wrapper__YyQ2_\">\n<h2 id=\"Why is binary memory protection important?\" class=\"text-h2 leading-none text-left\"><b>Why is binary memory protection important?<\/b><\/h2>\n<p class=\"text-base leading-normal\">You may remember when the Blaster worm struck the internet, or more recently when WannaCry caused global havoc using a leaked EternalBlue Windows OS exploit. Both are examples of malware that used buffer overflow memory corruption vulnerabilities, causing remote code execution and infecting millions of machines worldwide.<\/p>\n<p class=\"text-base leading-normal\">Most operating systems, written in C or C++, have limited memory protection, allowing these attacks to occur. Malware like Blaster and WannaCry manipulate the environment, instructions, and memory layout of a program or operating system to gain control over it.<\/p>\n<p class=\"text-base leading-normal\">Security professionals have implemented mechanisms to prevent software exploitation and minimize damage caused by memory corruption bugs. A &#8220;silver bullet&#8221; solution would be a mechanism that makes it challenging and unreliable for attackers to exploit vulnerabilities, allowing developers to leave buggy code in place while they work on fixing or rewriting it in memory-safe languages.<\/p>\n\n<h2 id=\"Common mechanisms and protection measures\" class=\"text-h2 leading-none text-left\"><b>Common mechanisms and protection measures<\/b><\/h2>\n<p class=\"text-base leading-normal\">Let\u2019s review some of the most common mechanisms and protection measures provided inside Windows OS from Windows XP to Windows 11.<\/p>\n\n<h2 id=\"ASLR\" class=\"text-h2 leading-none text-left\"><b>ASLR<\/b><\/h2>\n<p class=\"text-base leading-normal\">Address space layout randomization (ASLR) is a computer security technique that prevents an attacker from reliably jumping to, for example, a particular exploited function in a program\u2019s memory. ASLR randomly arranges the address space positions of a process\u2019s key data areas, including the base of the executable and the positions of the stack, heap, and libraries. The effectiveness of ASLR depends on the entropy of the process\u2019s address space (simply put, the probability of finding a random local variable).<\/p>\n<p class=\"text-base leading-normal\">Because of this protection, exploit payloads must be uniquely tailored to a specific process address space.<\/p>\n<p class=\"text-base leading-normal\">Vista and Windows Server 2008 were the first operating systems in the Windows family to provide ASLR natively, though this system was first developed back in 2001. Prior to these releases, there were several <a class=\"cursor-pointer outline-none transition-colors duration-250 ease-out text-blue-500 hover:text-blue-600 focus:text-blue-400\" href=\"https:\/\/github.com\/0x9dec1980\/WehnTrust1.2\" target=\"_blank\" rel=\"noopener noreferrer\">third-party solutions like WehnTrust<\/a> available that provided ASLR functionality to varying degrees.<\/p>\n<p class=\"text-base leading-normal\">When Symantec conducted <a class=\"cursor-pointer outline-none transition-colors duration-250 ease-out text-blue-500 hover:text-blue-600 focus:text-blue-400\" href=\"https:\/\/www.researchgate.net\/publication\/228569932_An_analysis_of_address_space_layout_randomization_on_Windows_Vista\" target=\"_blank\" rel=\"noopener noreferrer\">research on ASLR in Windows Vista<\/a>, they found that ASLR had a significant effect when implemented in Windows 8 (or Windows 8.1). It provided higher entropy for address space layouts. The larger address space for 64-bit processes also increased the entropy of the ASLR for any given process.<\/p>\n<img decoding=\"async\" class=\"alignnone size-full\" src=\"https:\/\/res.cloudinary.com\/nordsec\/f_auto,c_limit,w_1200,q_auto\/v1\/nord-security-web\/blog\/categories\/engineering\/2023\/05\/binary-memory-protection-windows-os\/BLOG_visuals_1.png\" width=\"1200\" height=\"556\" \/>\n<div class=\"my-64 text-center\">\n\n&nbsp;\n\nExploit mitigation improvements in Windows 8\n\n<\/div>\n<p class=\"text-base leading-normal\">Windows 8 added randomization for all BottomUp and TopDown memory allocations, increasing the effectiveness of ASLR, which was not available in Windows 7.<\/p>\n\n<div class=\"my-64 text-center\">\n\n<span style=\"box-sizing: border-box; display: inline-block; overflow: hidden; width: initial; height: initial; background: none; opacity: 1; border: 0px; margin: 0px; padding: 0px; position: relative; max-width: 100%;\"><span style=\"box-sizing: border-box; display: block; width: initial; height: initial; background: none; opacity: 1; border: 0px; margin: 0px; padding: 0px; max-width: 100%;\"><img style=\"display: block; max-width: 100%; width: initial; height: initial; background: none; opacity: 1; border: 0px; margin: 0px; padding: 0px;\" alt=\"\" aria-hidden=\"true\" \/><\/span><img decoding=\"async\" style=\"position: absolute; inset: 0px; box-sizing: border-box; padding: 0px; border: none; margin: auto; display: block; width: 0px; height: 0px; min-width: 100%; max-width: 100%; min-height: 100%; max-height: 100%; object-fit: contain; background-size: contain; background-position: 0% 0%; filter: blur(20px); background-image: url('https:\/\/res.cloudinary.com\/nordsec\/image\/upload\/q_auto:low,f_auto,c_scale,w_100\/v1\/nord-security-web\/blog\/categories\/engineering\/2023\/05\/binary-memory-protection-windows-os\/BLOG_visuals_2.png');\" src=\"data:image\/gif;base64,R0lGODlhAQABAIAAAAAAAP\/\/\/yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" alt=\"Exploit mitigation improvements in Windows 8\" data-nimg=\"intrinsic\" \/><\/span>\n\n<img decoding=\"async\" class=\"alignnone size-full\" src=\"https:\/\/res.cloudinary.com\/nordsec\/f_auto,c_limit,w_1200,q_auto\/v1\/nord-security-web\/blog\/categories\/engineering\/2023\/05\/binary-memory-protection-windows-os\/BLOG_visuals_2.png\" width=\"1200\" height=\"338\" \/>\n\n&nbsp;\n\nExploit mitigation improvements in Windows 8\n\n<\/div>\n<p class=\"text-base leading-normal\">In Windows 8, Microsoft introduced operating system support to force EXEs\/DLLs to be rebased at runtime if they did not opt-in to ASLR. This mitigation can be enabled system-wide or on a per-process basis. You can modify the settings of mandatory ASLR through the Windows Security app.<\/p>\n<p class=\"text-base leading-normal\">ASLR, like any other security technique, has its weaknesses and attack vectors (<a class=\"cursor-pointer outline-none transition-colors duration-250 ease-out text-blue-500 hover:text-blue-600 focus:text-blue-400\" href=\"https:\/\/en.wikipedia.org\/wiki\/Heap_spraying\" target=\"_blank\" rel=\"noopener noreferrer\">heap spray<\/a>, <a class=\"cursor-pointer outline-none transition-colors duration-250 ease-out text-blue-500 hover:text-blue-600 focus:text-blue-400\" href=\"https:\/\/hmarco.org\/cyber-security\/attacks\/bypass64bitsASLRLinux\/offset2lib-attack.html\" target=\"_blank\" rel=\"noopener noreferrer\">offset2libc<\/a>, <a class=\"cursor-pointer outline-none transition-colors duration-250 ease-out text-blue-500 hover:text-blue-600 focus:text-blue-400\" href=\"https:\/\/dl.acm.org\/doi\/abs\/10.5555\/3195638.3195686?download=true\" target=\"_blank\" rel=\"noopener noreferrer\">Jump Over ASLR<\/a>, and others). Even one memory disclosure can completely defeat ASLR and provide an attacker with a significant opportunity. In addition to this, ASLR is only efficient when all executables and shared libraries loaded in the address space of a process are randomized. For example, <a class=\"cursor-pointer outline-none transition-colors duration-250 ease-out text-blue-500 hover:text-blue-600 focus:text-blue-400\" href=\"https:\/\/www.blackhat.com\/docs\/asia-17\/materials\/asia-17-Li-Cross-The-Wall-Bypass-All-Modern-Mitigations-Of-Microsoft-Edge.pdf\" target=\"_blank\" rel=\"noopener noreferrer\">research by Trend Micro<\/a> researchers showed that Microsoft Edge browser exploit mitigations, including ASLR, could be bypassed. You can watch a <a class=\"cursor-pointer outline-none transition-colors duration-250 ease-out text-blue-500 hover:text-blue-600 focus:text-blue-400\" href=\"https:\/\/www.youtube.com\/watch?v=pH6qocUEor0&amp;ab_channel=BlackHat\" target=\"_blank\" rel=\"noopener noreferrer\">video from the BlackHat conference<\/a> to learn more.<\/p>\n\n<h2 id=\"DEP\" class=\"text-h2 leading-none text-left\"><b>DEP<\/b><\/h2>\n<p class=\"text-base leading-normal\">Data Execution Prevention (DEP) is a protection mechanism that blocks the execution of code in memory pages marked non-executable. The NX (No-Execute) bit is a protection feature on CPUs used by DEP to prevent attackers from executing shellcode (instructions injected and executed by attackers) on the stack, heap, or in data sections. If DEP is enabled and a program attempts to execute code on a non-executable page, an access violation exception will be triggered.<\/p>\n<p class=\"text-base leading-normal\">Starting with Windows XP Service Pack 2 (2004) and Windows Server 2003 Service Pack 1 (2005), the DEP was implemented for the first time on x86 architecture.<\/p>\n<p class=\"text-base leading-normal\">An application can be compiled with the \/NXCOMPAT flag to enable DEP for that application. You can also use editbin.exe \/NXCOMPAT over a .exe file to enable it on a previously compiled file.<\/p>\n<p class=\"text-base leading-normal\">On 64-bit versions of Windows, DEP is always turned on for 64-bit processes and cannot be disabled. Windows also implemented software DEP (without the use of the NX bit) through Microsoft&#8217;s &#8220;Safe Structured Exception Handling&#8221; (SafeSEH), which I will talk about a bit later.<\/p>\n<p class=\"text-base leading-normal\">Despite being a useful protection measure, the NX bit can be bypassed. This leaves us unable to execute instructions placed on the stack, but still able to control the execution flow of the application. This is where the <a class=\"cursor-pointer outline-none transition-colors duration-250 ease-out text-blue-500 hover:text-blue-600 focus:text-blue-400\" href=\"https:\/\/en.wikipedia.org\/wiki\/Return-oriented_programming\" target=\"_blank\" rel=\"noopener noreferrer\">ROP (Return Oriented Programming) technique<\/a> becomes relevant.<\/p>\n\n<h2 id=\"GS (Stack Canaries)\" class=\"text-h2 leading-none text-left\"><b>GS (Stack Canaries)<\/b><\/h2>\n<p class=\"text-base leading-normal\">Stack canaries are a security feature that helps protect against binary exploits. They are random values that are generated every time a program is run. When placed in certain locations, they can be used to detect stack corruption. The \/GS compiler option, when specified, causes the compiler to store a random value on the stack between the local variables and the return address of a function. According to Microsoft, these application elements will be protected:<\/p>\n\n<ul class=\"list-disc ml-24\">\n \t<li class=\"ml-20\">\n<div>\n<p class=\"text-base leading-normal\">Any array (regardless of length or element size)<\/p>\n\n<\/div><\/li>\n \t<li class=\"ml-20\">\n<div>\n<p class=\"text-base leading-normal\">Structs (regardless of their contents)<\/p>\n\n<\/div><\/li>\n<\/ul>\n<p class=\"text-base leading-normal\">In a typical buffer overflow attack, the attacker&#8217;s data is used to try to overwrite the saved EIP (Extended Instruction Pointer) on the stack. However, before this can happen, the cookie is also overwritten, rendering the exploit ineffective (though it may still cause a denial of service). If the function epilogue detects the altered cookie and the application terminates.<\/p>\n<img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full\" src=\"https:\/\/res.cloudinary.com\/nordsec\/f_auto,c_limit,w_1200,q_auto\/v1\/nord-security-web\/blog\/categories\/engineering\/2023\/05\/binary-memory-protection-windows-os\/BLOG_visuals_3.png\" width=\"1200\" height=\"300\" \/>\n<div class=\"my-64 text-center\">\n\n<span style=\"box-sizing: border-box; display: inline-block; overflow: hidden; width: initial; height: initial; background: none; opacity: 1; border: 0px; margin: 0px; padding: 0px; position: relative; max-width: 100%;\"><span style=\"box-sizing: border-box; display: block; width: initial; height: initial; background: none; opacity: 1; border: 0px; margin: 0px; padding: 0px; max-width: 100%;\"><img style=\"display: block; max-width: 100%; width: initial; height: initial; background: none; opacity: 1; border: 0px; margin: 0px; padding: 0px;\" alt=\"\" aria-hidden=\"true\" \/><\/span><img decoding=\"async\" style=\"position: absolute; inset: 0px; box-sizing: border-box; padding: 0px; border: none; margin: auto; display: block; width: 0px; height: 0px; min-width: 100%; max-width: 100%; min-height: 100%; max-height: 100%; object-fit: contain; background-size: contain; background-position: 0% 0%; filter: blur(20px); background-image: url('https:\/\/res.cloudinary.com\/nordsec\/image\/upload\/q_auto:low,f_auto,c_scale,w_100\/v1\/nord-security-web\/blog\/categories\/engineering\/2023\/05\/binary-memory-protection-windows-os\/BLOG_visuals_3.png');\" src=\"data:image\/gif;base64,R0lGODlhAQABAIAAAAAAAP\/\/\/yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" alt=\"Example of memory layout during the buffer overflow\" data-nimg=\"intrinsic\" \/><\/span>\n\n<\/div>\n&nbsp;\n<div class=\"my-64 text-center\">\n\nExample of memory layout during the buffer overflow\n\n<\/div>\n<p class=\"text-base leading-normal\">The second important protection mechanism of \/GS is variable reordering. To prevent attackers from overwriting local variables or arguments used by the function, the compiler will rearrange the layout of the stack frame and will put string buffers at a higher address than all other variables. So when a string buffer overflow occurs, it cannot overwrite any other local variables.<\/p>\n<p class=\"text-base leading-normal\">It was introduced with the release of Visual Studio 2003. Two years later, they enabled it by default with the release of Visual Studio 2005.<\/p>\n<p class=\"text-base leading-normal\">However, this protection measure is also not bullet-proof, since the attacker can either try to read the canary value from the memory or brute force the value. By using these two techniques, attackers can acquire the canary value, place it into the payload, and successfully redirect program flow or corrupt important program data.<\/p>\n\n<h2 id=\"CFG\/XFG\" class=\"text-h2 leading-none text-left\"><b>CFG\/XFG<\/b><\/h2>\n<p class=\"text-base leading-normal\">Control Flow Guard (CFG) is a highly-optimized platform security feature that was created to combat memory corruption vulnerabilities. Placing tight restrictions on where an application can execute code makes it much harder for exploits to execute arbitrary code through vulnerabilities such as buffer overflows.<\/p>\n<p class=\"text-base leading-normal\">CFG creates a per-process bitmap, where a set bit indicates that the address is a valid destination. Before performing each indirect function call, the application checks if the destination address is in the bitmap. If the destination address is not in the bitmap, the program terminates.<\/p>\n<img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full\" src=\"https:\/\/res.cloudinary.com\/nordsec\/f_auto,c_limit,w_1200,q_auto\/v1\/nord-security-web\/blog\/categories\/engineering\/2023\/05\/binary-memory-protection-windows-os\/BLOG_visuals_4.png\" width=\"1200\" height=\"563\" \/>\n<div class=\"my-64 text-center\">\n\n<span style=\"box-sizing: border-box; display: inline-block; overflow: hidden; width: initial; height: initial; background: none; opacity: 1; border: 0px; margin: 0px; padding: 0px; position: relative; max-width: 100%;\"><span style=\"box-sizing: border-box; display: block; width: initial; height: initial; background: none; opacity: 1; border: 0px; margin: 0px; padding: 0px; max-width: 100%;\"><img style=\"display: block; max-width: 100%; width: initial; height: initial; background: none; opacity: 1; border: 0px; margin: 0px; padding: 0px;\" alt=\"\" aria-hidden=\"true\" \/><\/span><img decoding=\"async\" style=\"position: absolute; inset: 0px; box-sizing: border-box; padding: 0px; border: none; margin: auto; display: block; width: 0px; height: 0px; min-width: 100%; max-width: 100%; min-height: 100%; max-height: 100%; object-fit: contain; background-size: contain; background-position: 0% 0%; filter: blur(20px); background-image: url('https:\/\/res.cloudinary.com\/nordsec\/image\/upload\/q_auto:low,f_auto,c_scale,w_100\/v1\/nord-security-web\/blog\/categories\/engineering\/2023\/05\/binary-memory-protection-windows-os\/BLOG_visuals_4.png');\" src=\"data:image\/gif;base64,R0lGODlhAQABAIAAAAAAAP\/\/\/yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" alt=\"How Windows CFG works\" data-nimg=\"intrinsic\" \/><\/span>\n\n<\/div>\n&nbsp;\n<div class=\"my-64 text-center\">\n\nHow Windows CFG works\n\n<\/div>\n<p class=\"text-base leading-normal\">Microsoft has enabled a new mechanism by default in Windows 10 and in Windows 8.1 Update 3. Developers can now add CFG to their programs by adding the \/guard:cf linker flag before program linking in Visual Studio 2015 or newer. As of the Windows 10 Creators Update (Windows 10 version 1703), the Windows kernel is compiled with CFG.<\/p>\n<p class=\"text-base leading-normal\">To enhance CFG (Control Flow Guard), Microsoft introduced Xtended Control Flow Guard (XFG). By design, CFG only checks if functions are included in the CFG bitmap, which means that technically if a function pointer is overwritten with another function that exists in the bitmap, it would be considered a valid target.<\/p>\n<p class=\"text-base leading-normal\">XFG addresses this issue by creating a ~55-bit hash of the function prototype (consisting of the return value and function arguments) and placing it 8 bytes above the function itself when the dispatch function is called. This hash is used as an additional verification before transferring the control flow.<\/p>\n<p class=\"text-base leading-normal\">Getting back to the CFG, there are multiple techniques to bypass it. For example, you can set the destination to code located in a non-CFG module loaded in the same process, or find an indirect call that was not protected by CFG. A brief write-up about the <a class=\"cursor-pointer outline-none transition-colors duration-250 ease-out text-blue-500 hover:text-blue-600 focus:text-blue-400\" href=\"https:\/\/www.blackhat.com\/docs\/us-15\/materials\/us-15-Zhang-Bypass-Control-Flow-Guard-Comprehensively-wp.pdf\" target=\"_blank\" rel=\"noopener noreferrer\">CFG bypass by Zhang Yunhai can be found here<\/a>.<\/p>\n\n<h2 id=\"SafeSEH\" class=\"text-h2 leading-none text-left\"><b>SafeSEH<\/b><\/h2>\n<p class=\"text-base leading-normal\">SafeSEH is an exception handler. An exception handler is a programming construct used to provide a structured way of handling both system and application-level error conditions. Commonly they will look something like the code sample below:<\/p>\n\n<div class=\"border-gray-300 border mb-32\">\n<div class=\"bg-gray-200 p-24 border-b border-gray-300\">\n<div>\n<div class=\"table-row text-black\">\n\n<span class=\"pr-32 text-gray-600 table-cell text-right select-none\">1<\/span>\n<div class=\"table-cell\"><span class=\"text-black\">try {<\/span><\/div>\n<\/div>\n<div class=\"table-row text-black\">\n\n<span class=\"pr-32 text-gray-600 table-cell text-right select-none\">2<\/span>\n<div class=\"table-cell\"><span class=\"text-black\">}<\/span><\/div>\n<\/div>\n<div class=\"table-row text-black\">\n\n<span class=\"pr-32 text-gray-600 table-cell text-right select-none\">3<\/span>\n<div class=\"table-cell\"><span class=\"text-black\">catch (Exception e)<\/span><\/div>\n<\/div>\n<div class=\"table-row text-black\">\n\n<span class=\"pr-32 text-gray-600 table-cell text-right select-none\">4<\/span>\n<div class=\"table-cell\"><span class=\"text-black\">{<\/span><\/div>\n<\/div>\n<div class=\"table-row text-black\">\n\n<span class=\"pr-32 text-gray-600 table-cell text-right select-none\">5<\/span>\n<div class=\"table-cell\"><span class=\"text-black\"> \/\/ Exception handling goes here<\/span><\/div>\n<\/div>\n<div class=\"table-row text-black\">\n\n<span class=\"pr-32 text-gray-600 table-cell text-right select-none\">6<\/span>\n<div class=\"table-cell\"><span class=\"text-black\">}<\/span><\/div>\n<\/div>\n<pre class=\"text-small overflow-auto\"><\/pre>\n<\/div>\n<\/div>\n<button class=\"m-24 focus:outline-none focus-visible:underline\" type=\"button\"><span class=\"text-micro leading-normal text-left flex flex-nowrap items-center font-bold duration-250 text-blue-500 hover:text-blue-600 cursor-pointer\"><span class=\"mr-8\">Copy snippet<\/span><\/span><\/button>\n\n<\/div>\n<p class=\"text-base leading-normal\">Windows supplies a default exception handler when an application has no exception handlers applicable to the associated error condition. When the Windows exception handler is called, the application will be terminated.<\/p>\n<p class=\"text-base leading-normal\">Exception handlers are stored in the format of a linked list with the final element being the Windows default exception handler. This is represented by a pointer with the value 0xFFFFFFFF. Elements in the SEH chain before the Windows default exception handler are the exception handlers defined by the application.<\/p>\n<img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full\" src=\"https:\/\/res.cloudinary.com\/nordsec\/f_auto,c_limit,w_1200,q_auto\/v1\/nord-security-web\/blog\/categories\/engineering\/2023\/05\/binary-memory-protection-windows-os\/BLOG_visuals_5.png\" width=\"1200\" height=\"563\" \/>\n<div class=\"my-64 text-center\">\n\n<span style=\"box-sizing: border-box; display: inline-block; overflow: hidden; width: initial; height: initial; background: none; opacity: 1; border: 0px; margin: 0px; padding: 0px; position: relative; max-width: 100%;\"><span style=\"box-sizing: border-box; display: block; width: initial; height: initial; background: none; opacity: 1; border: 0px; margin: 0px; padding: 0px; max-width: 100%;\"><img style=\"display: block; max-width: 100%; width: initial; height: initial; background: none; opacity: 1; border: 0px; margin: 0px; padding: 0px;\" alt=\"\" aria-hidden=\"true\" \/><\/span><img decoding=\"async\" style=\"position: absolute; inset: 0px; box-sizing: border-box; padding: 0px; border: none; margin: auto; display: block; width: 0px; height: 0px; min-width: 100%; max-width: 100%; min-height: 100%; max-height: 100%; object-fit: contain; background-size: contain; background-position: 0% 0%; filter: blur(20px); background-image: url('https:\/\/res.cloudinary.com\/nordsec\/image\/upload\/q_auto:low,f_auto,c_scale,w_100\/v1\/nord-security-web\/blog\/categories\/engineering\/2023\/05\/binary-memory-protection-windows-os\/BLOG_visuals_5.png');\" src=\"data:image\/gif;base64,R0lGODlhAQABAIAAAAAAAP\/\/\/yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" alt=\"Exception handler layout on stack\" data-nimg=\"intrinsic\" \/><\/span>\n\n<\/div>\n&nbsp;\n<div class=\"my-64 text-center\">\n\nException handler layout on stack\n\n<\/div>\n<p class=\"text-base leading-normal\">If an attacker can overwrite a pointer to a handler and then cause an exception, they might be able to get control of the program.<\/p>\n<p class=\"text-base leading-normal\">SafeSEH is a security mechanism introduced with Visual Studio 2003. It works by adding a static list of good exception handlers in the PE file at the timing of compiling. Before executing an exception handler, it is checked against the table. Execution is passed to the handler only if it matches an entry in the table. SafeSEH only exists in 32-bit applications because 64-bit exception handlers are not stored on the stack. By default, they build a list of valid exception handlers and store it in the file\u2019s PE header.<\/p>\n<p class=\"text-base leading-normal\">Preventing SEH exploits in most applications can be achieved by specifying the \/SAFESEH compiler switch. When \/SAFESEH is specified, the linker will also produce a table of the image&#8217;s safe exception handlers. This table specifies for the operating system which exception handlers are valid for the image, removing the ability to overwrite them with arbitrary values. If you want to see how this mitigation technique can be bypassed in real-life, <a class=\"cursor-pointer outline-none transition-colors duration-250 ease-out text-blue-500 hover:text-blue-600 focus:text-blue-400\" href=\"https:\/\/www.rcesecurity.com\/2012\/11\/bypassing-safeseh-memory-protection-in-zoner-photo-studio-v15\/\" target=\"_blank\" rel=\"noopener noreferrer\">this blog post<\/a> offers more useful information.<\/p>\n\n<h2 id=\"Conclusion\" class=\"text-h2 leading-none text-left\"><b>Conclusion<\/b><\/h2>\n<p class=\"text-base leading-normal\">Memory corruption vulnerabilities have plagued software for decades. As mentioned in the beginning, there are multiple mitigation techniques to prevent software exploitation and minimize damage caused by memory corruption bugs. However, those protections are definitely not a \u201csilver bullet\u201d solution for all memory corruption vulnerabilities.<\/p>\n<p class=\"text-base leading-normal\">For the developer, this means that no one should not blindly rely on the OS-provided protections. Instead, try to propagate secure coding practices and integrate security toolings like fuzzers and static code analyzers.<\/p>\n<p class=\"text-base leading-normal\">Lastly, move to memory-safe languages like Rust, if possible. For the attackers, even if the target application has all available mitigation measures, there may still be ways to bypass those protections.<\/p>\n\n<\/div>\n<\/div>\n<\/div>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-2004c86 elementor-widget elementor-widget-shortcode\" data-id=\"2004c86\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\">\t\t<div data-elementor-type=\"page\" data-elementor-id=\"18103\" class=\"elementor elementor-18103\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-748947f elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"748947f\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;jet_parallax_layout_list&quot;:[{&quot;jet_parallax_layout_image&quot;:{&quot;url&quot;:&quot;&quot;,&quot;id&quot;:&quot;&quot;,&quot;size&quot;:&quot;&quot;},&quot;_id&quot;:&quot;c4f773e&quot;,&quot;jet_parallax_layout_image_tablet&quot;:{&quot;url&quot;:&quot;&quot;,&quot;id&quot;:&quot;&quot;,&quot;size&quot;:&quot;&quot;},&quot;jet_parallax_layout_image_mobile&quot;:{&quot;url&quot;:&quot;&quot;,&quot;id&quot;:&quot;&quot;,&quot;size&quot;:&quot;&quot;},&quot;jet_parallax_layout_speed&quot;:{&quot;unit&quot;:&quot;%&quot;,&quot;size&quot;:50,&quot;sizes&quot;:[]},&quot;jet_parallax_layout_type&quot;:&quot;scroll&quot;,&quot;jet_parallax_layout_direction&quot;:&quot;1&quot;,&quot;jet_parallax_layout_fx_direction&quot;:null,&quot;jet_parallax_layout_z_index&quot;:&quot;&quot;,&quot;jet_parallax_layout_bg_x&quot;:50,&quot;jet_parallax_layout_bg_x_tablet&quot;:&quot;&quot;,&quot;jet_parallax_layout_bg_x_mobile&quot;:&quot;&quot;,&quot;jet_parallax_layout_bg_y&quot;:50,&quot;jet_parallax_layout_bg_y_tablet&quot;:&quot;&quot;,&quot;jet_parallax_layout_bg_y_mobile&quot;:&quot;&quot;,&quot;jet_parallax_layout_bg_size&quot;:&quot;auto&quot;,&quot;jet_parallax_layout_bg_size_tablet&quot;:&quot;&quot;,&quot;jet_parallax_layout_bg_size_mobile&quot;:&quot;&quot;,&quot;jet_parallax_layout_animation_prop&quot;:&quot;transform&quot;,&quot;jet_parallax_layout_on&quot;:[&quot;desktop&quot;,&quot;tablet&quot;]}]}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-7995c19\" data-id=\"7995c19\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-a437045 elementor-widget elementor-widget-image-box\" data-id=\"a437045\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image-box.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"elementor-image-box-wrapper\"><div class=\"elementor-image-box-content\"><h3 class=\"elementor-image-box-title\">About Version 2 Digital<\/h3><p class=\"elementor-image-box-description\">Version 2 Digital is one of the most dynamic IT companies in Asia. The company distributes a wide range of IT products across various areas including cyber security, cloud, data protection, end points, infrastructures, system monitoring, storage, networking, business productivity and communication products.\n<br><br>\nThrough an extensive network of channels, point of sales, resellers, and partnership companies, Version 2 offers quality products and services which are highly acclaimed in the market. Its customers cover a wide spectrum which include Global 1000 enterprises, regional listed companies, different vertical industries, public utilities, Government, a vast number of successful SMEs, and consumers in various Asian cities.<\/p><\/div><\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t\n\t\t<div data-elementor-type=\"page\" data-elementor-id=\"63561\" class=\"elementor elementor-63561\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-1b6aa2c4 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"1b6aa2c4\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;jet_parallax_layout_list&quot;:[{&quot;_id&quot;:&quot;c4f773e&quot;,&quot;jet_parallax_layout_image&quot;:{&quot;url&quot;:&quot;&quot;,&quot;id&quot;:&quot;&quot;,&quot;size&quot;:&quot;&quot;},&quot;jet_parallax_layout_image_tablet&quot;:{&quot;url&quot;:&quot;&quot;,&quot;id&quot;:&quot;&quot;,&quot;size&quot;:&quot;&quot;},&quot;jet_parallax_layout_image_mobile&quot;:{&quot;url&quot;:&quot;&quot;,&quot;id&quot;:&quot;&quot;,&quot;size&quot;:&quot;&quot;},&quot;jet_parallax_layout_speed&quot;:{&quot;unit&quot;:&quot;%&quot;,&quot;size&quot;:50,&quot;sizes&quot;:[]},&quot;jet_parallax_layout_type&quot;:&quot;scroll&quot;,&quot;jet_parallax_layout_direction&quot;:&quot;1&quot;,&quot;jet_parallax_layout_fx_direction&quot;:null,&quot;jet_parallax_layout_z_index&quot;:&quot;&quot;,&quot;jet_parallax_layout_bg_x&quot;:50,&quot;jet_parallax_layout_bg_x_tablet&quot;:&quot;&quot;,&quot;jet_parallax_layout_bg_x_mobile&quot;:&quot;&quot;,&quot;jet_parallax_layout_bg_y&quot;:50,&quot;jet_parallax_layout_bg_y_tablet&quot;:&quot;&quot;,&quot;jet_parallax_layout_bg_y_mobile&quot;:&quot;&quot;,&quot;jet_parallax_layout_bg_size&quot;:&quot;auto&quot;,&quot;jet_parallax_layout_bg_size_tablet&quot;:&quot;&quot;,&quot;jet_parallax_layout_bg_size_mobile&quot;:&quot;&quot;,&quot;jet_parallax_layout_animation_prop&quot;:&quot;transform&quot;,&quot;jet_parallax_layout_on&quot;:[&quot;desktop&quot;,&quot;tablet&quot;]}]}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-1b283ee5\" data-id=\"1b283ee5\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4e466f1a elementor-widget elementor-widget-text-editor\" data-id=\"4e466f1a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p><strong>About NordLayer<br \/><\/strong>NordLayer is an adaptive network access security solution for modern businesses \u2013 from the world\u2019s most trusted cybersecurity brand, Nord Security.<\/p><p>The web has become a chaotic space where safety and trust have been compromised by cybercrime and data protection issues. Therefore, our team has a global mission to shape a more trusted and peaceful online future for people everywhere.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>","protected":false},"excerpt":{"rendered":"<p>Binary memory protection is a core part of cybersecurit [&hellip;]<\/p>","protected":false},"author":143524195,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[1130,973,1075,61],"tags":[974,1076,1132],"class_list":["post-67773","post","type-post","status-publish","format-standard","hentry","category-nordlayer","category-nord-security","category-year2023","category-press-release","tag-nord-security","tag-1076","tag-nordlayer"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Binary memory protection measures on Windows OS - Version 2<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/nordlayer.com\/blog\/optimizing-your-business-it\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Binary memory protection measures on Windows OS - Version 2\" \/>\n<meta property=\"og:description\" content=\"Binary memory protection is a core part of cybersecurit [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/nordlayer.com\/blog\/optimizing-your-business-it\/\" \/>\n<meta property=\"og:site_name\" content=\"Version 2\" \/>\n<meta property=\"article:published_time\" content=\"2023-06-06T08:40:57+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-06-06T08:55:49+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/res.cloudinary.com\/nordsec\/f_auto,c_limit,w_1200,q_auto\/v1\/nord-security-web\/blog\/categories\/engineering\/2023\/05\/binary-memory-protection-windows-os\/featured-image.jpg\" \/>\n<meta name=\"author\" content=\"version2hk\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"version2hk\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"13 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/nordlayer.com\\\/blog\\\/optimizing-your-business-it\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/version-2.com\\\/2023\\\/06\\\/binary-memory-protection-measures-on-windows-os\\\/\"},\"author\":{\"name\":\"version2hk\",\"@id\":\"https:\\\/\\\/version-2.com\\\/zh\\\/#\\\/schema\\\/person\\\/d14d2d3cd77ffdb618b9f1330fe084db\"},\"headline\":\"Binary memory protection measures on Windows OS\",\"datePublished\":\"2023-06-06T08:40:57+00:00\",\"dateModified\":\"2023-06-06T08:55:49+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/version-2.com\\\/2023\\\/06\\\/binary-memory-protection-measures-on-windows-os\\\/\"},\"wordCount\":1838,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/version-2.com\\\/zh\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/nordlayer.com\\\/blog\\\/optimizing-your-business-it\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/res.cloudinary.com\\\/nordsec\\\/f_auto,c_limit,w_1200,q_auto\\\/v1\\\/nord-security-web\\\/blog\\\/categories\\\/engineering\\\/2023\\\/05\\\/binary-memory-protection-windows-os\\\/featured-image.jpg\",\"keywords\":[\"Nord Security\",\"2023\",\"NordLayer\"],\"articleSection\":[\"NordLayer\",\"Nord Security\",\"2023\",\"Press Release\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/nordlayer.com\\\/blog\\\/optimizing-your-business-it\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/version-2.com\\\/2023\\\/06\\\/binary-memory-protection-measures-on-windows-os\\\/\",\"url\":\"https:\\\/\\\/nordlayer.com\\\/blog\\\/optimizing-your-business-it\\\/\",\"name\":\"Binary memory protection measures on Windows OS - Version 2\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/version-2.com\\\/zh\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/nordlayer.com\\\/blog\\\/optimizing-your-business-it\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/nordlayer.com\\\/blog\\\/optimizing-your-business-it\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/res.cloudinary.com\\\/nordsec\\\/f_auto,c_limit,w_1200,q_auto\\\/v1\\\/nord-security-web\\\/blog\\\/categories\\\/engineering\\\/2023\\\/05\\\/binary-memory-protection-windows-os\\\/featured-image.jpg\",\"datePublished\":\"2023-06-06T08:40:57+00:00\",\"dateModified\":\"2023-06-06T08:55:49+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/nordlayer.com\\\/blog\\\/optimizing-your-business-it\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/nordlayer.com\\\/blog\\\/optimizing-your-business-it\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/nordlayer.com\\\/blog\\\/optimizing-your-business-it\\\/#primaryimage\",\"url\":\"https:\\\/\\\/res.cloudinary.com\\\/nordsec\\\/f_auto,c_limit,w_1200,q_auto\\\/v1\\\/nord-security-web\\\/blog\\\/categories\\\/engineering\\\/2023\\\/05\\\/binary-memory-protection-windows-os\\\/featured-image.jpg\",\"contentUrl\":\"https:\\\/\\\/res.cloudinary.com\\\/nordsec\\\/f_auto,c_limit,w_1200,q_auto\\\/v1\\\/nord-security-web\\\/blog\\\/categories\\\/engineering\\\/2023\\\/05\\\/binary-memory-protection-windows-os\\\/featured-image.jpg\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/nordlayer.com\\\/blog\\\/optimizing-your-business-it\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9801\",\"item\":\"https:\\\/\\\/version-2.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Binary memory protection measures on Windows OS\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/version-2.com\\\/zh\\\/#website\",\"url\":\"https:\\\/\\\/version-2.com\\\/zh\\\/\",\"name\":\"Version 2\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/version-2.com\\\/zh\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/version-2.com\\\/zh\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/version-2.com\\\/zh\\\/#organization\",\"name\":\"Version 2\",\"url\":\"https:\\\/\\\/version-2.com\\\/zh\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/version-2.com\\\/zh\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/i0.wp.com\\\/version-2.com\\\/wp-content\\\/uploads\\\/2020\\\/08\\\/v2-hk-hor-4.png?fit=1795%2C335&ssl=1\",\"contentUrl\":\"https:\\\/\\\/i0.wp.com\\\/version-2.com\\\/wp-content\\\/uploads\\\/2020\\\/08\\\/v2-hk-hor-4.png?fit=1795%2C335&ssl=1\",\"width\":1795,\"height\":335,\"caption\":\"Version 2\"},\"image\":{\"@id\":\"https:\\\/\\\/version-2.com\\\/zh\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/version-2.com\\\/zh\\\/#\\\/schema\\\/person\\\/d14d2d3cd77ffdb618b9f1330fe084db\",\"name\":\"version2hk\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/d280627252b42d7489de74dd88aa04043a495f25e258575000dc767e287bf94c?s=96&d=identicon&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/d280627252b42d7489de74dd88aa04043a495f25e258575000dc767e287bf94c?s=96&d=identicon&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/d280627252b42d7489de74dd88aa04043a495f25e258575000dc767e287bf94c?s=96&d=identicon&r=g\",\"caption\":\"version2hk\"},\"sameAs\":[\"http:\\\/\\\/version2xfortcom.wordpress.com\"],\"url\":\"https:\\\/\\\/version-2.com\\\/en\\\/author\\\/version2hk\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Binary memory protection measures on Windows OS - Version 2","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/nordlayer.com\/blog\/optimizing-your-business-it\/","og_locale":"en_US","og_type":"article","og_title":"Binary memory protection measures on Windows OS - Version 2","og_description":"Binary memory protection is a core part of cybersecurit [&hellip;]","og_url":"https:\/\/nordlayer.com\/blog\/optimizing-your-business-it\/","og_site_name":"Version 2","article_published_time":"2023-06-06T08:40:57+00:00","article_modified_time":"2023-06-06T08:55:49+00:00","og_image":[{"url":"https:\/\/res.cloudinary.com\/nordsec\/f_auto,c_limit,w_1200,q_auto\/v1\/nord-security-web\/blog\/categories\/engineering\/2023\/05\/binary-memory-protection-windows-os\/featured-image.jpg","type":"","width":"","height":""}],"author":"version2hk","twitter_card":"summary_large_image","twitter_misc":{"Written by":"version2hk","Est. reading time":"13 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/nordlayer.com\/blog\/optimizing-your-business-it\/#article","isPartOf":{"@id":"https:\/\/version-2.com\/2023\/06\/binary-memory-protection-measures-on-windows-os\/"},"author":{"name":"version2hk","@id":"https:\/\/version-2.com\/zh\/#\/schema\/person\/d14d2d3cd77ffdb618b9f1330fe084db"},"headline":"Binary memory protection measures on Windows OS","datePublished":"2023-06-06T08:40:57+00:00","dateModified":"2023-06-06T08:55:49+00:00","mainEntityOfPage":{"@id":"https:\/\/version-2.com\/2023\/06\/binary-memory-protection-measures-on-windows-os\/"},"wordCount":1838,"commentCount":0,"publisher":{"@id":"https:\/\/version-2.com\/zh\/#organization"},"image":{"@id":"https:\/\/nordlayer.com\/blog\/optimizing-your-business-it\/#primaryimage"},"thumbnailUrl":"https:\/\/res.cloudinary.com\/nordsec\/f_auto,c_limit,w_1200,q_auto\/v1\/nord-security-web\/blog\/categories\/engineering\/2023\/05\/binary-memory-protection-windows-os\/featured-image.jpg","keywords":["Nord Security","2023","NordLayer"],"articleSection":["NordLayer","Nord Security","2023","Press Release"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/nordlayer.com\/blog\/optimizing-your-business-it\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/version-2.com\/2023\/06\/binary-memory-protection-measures-on-windows-os\/","url":"https:\/\/nordlayer.com\/blog\/optimizing-your-business-it\/","name":"Binary memory protection measures on Windows OS - Version 2","isPartOf":{"@id":"https:\/\/version-2.com\/zh\/#website"},"primaryImageOfPage":{"@id":"https:\/\/nordlayer.com\/blog\/optimizing-your-business-it\/#primaryimage"},"image":{"@id":"https:\/\/nordlayer.com\/blog\/optimizing-your-business-it\/#primaryimage"},"thumbnailUrl":"https:\/\/res.cloudinary.com\/nordsec\/f_auto,c_limit,w_1200,q_auto\/v1\/nord-security-web\/blog\/categories\/engineering\/2023\/05\/binary-memory-protection-windows-os\/featured-image.jpg","datePublished":"2023-06-06T08:40:57+00:00","dateModified":"2023-06-06T08:55:49+00:00","breadcrumb":{"@id":"https:\/\/nordlayer.com\/blog\/optimizing-your-business-it\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/nordlayer.com\/blog\/optimizing-your-business-it\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/nordlayer.com\/blog\/optimizing-your-business-it\/#primaryimage","url":"https:\/\/res.cloudinary.com\/nordsec\/f_auto,c_limit,w_1200,q_auto\/v1\/nord-security-web\/blog\/categories\/engineering\/2023\/05\/binary-memory-protection-windows-os\/featured-image.jpg","contentUrl":"https:\/\/res.cloudinary.com\/nordsec\/f_auto,c_limit,w_1200,q_auto\/v1\/nord-security-web\/blog\/categories\/engineering\/2023\/05\/binary-memory-protection-windows-os\/featured-image.jpg"},{"@type":"BreadcrumbList","@id":"https:\/\/nordlayer.com\/blog\/optimizing-your-business-it\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9801","item":"https:\/\/version-2.com\/"},{"@type":"ListItem","position":2,"name":"Binary memory protection measures on Windows OS"}]},{"@type":"WebSite","@id":"https:\/\/version-2.com\/zh\/#website","url":"https:\/\/version-2.com\/zh\/","name":"Version 2","description":"","publisher":{"@id":"https:\/\/version-2.com\/zh\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/version-2.com\/zh\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/version-2.com\/zh\/#organization","name":"Version 2","url":"https:\/\/version-2.com\/zh\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/version-2.com\/zh\/#\/schema\/logo\/image\/","url":"https:\/\/i0.wp.com\/version-2.com\/wp-content\/uploads\/2020\/08\/v2-hk-hor-4.png?fit=1795%2C335&ssl=1","contentUrl":"https:\/\/i0.wp.com\/version-2.com\/wp-content\/uploads\/2020\/08\/v2-hk-hor-4.png?fit=1795%2C335&ssl=1","width":1795,"height":335,"caption":"Version 2"},"image":{"@id":"https:\/\/version-2.com\/zh\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/version-2.com\/zh\/#\/schema\/person\/d14d2d3cd77ffdb618b9f1330fe084db","name":"version2hk","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/d280627252b42d7489de74dd88aa04043a495f25e258575000dc767e287bf94c?s=96&d=identicon&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/d280627252b42d7489de74dd88aa04043a495f25e258575000dc767e287bf94c?s=96&d=identicon&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/d280627252b42d7489de74dd88aa04043a495f25e258575000dc767e287bf94c?s=96&d=identicon&r=g","caption":"version2hk"},"sameAs":["http:\/\/version2xfortcom.wordpress.com"],"url":"https:\/\/version-2.com\/en\/author\/version2hk\/"}]}},"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/pbQRKm-hD7","post_mailing_queue_ids":[],"_links":{"self":[{"href":"https:\/\/version-2.com\/en\/wp-json\/wp\/v2\/posts\/67773","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/version-2.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/version-2.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/version-2.com\/en\/wp-json\/wp\/v2\/users\/143524195"}],"replies":[{"embeddable":true,"href":"https:\/\/version-2.com\/en\/wp-json\/wp\/v2\/comments?post=67773"}],"version-history":[{"count":10,"href":"https:\/\/version-2.com\/en\/wp-json\/wp\/v2\/posts\/67773\/revisions"}],"predecessor-version":[{"id":67783,"href":"https:\/\/version-2.com\/en\/wp-json\/wp\/v2\/posts\/67773\/revisions\/67783"}],"wp:attachment":[{"href":"https:\/\/version-2.com\/en\/wp-json\/wp\/v2\/media?parent=67773"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/version-2.com\/en\/wp-json\/wp\/v2\/categories?post=67773"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/version-2.com\/en\/wp-json\/wp\/v2\/tags?post=67773"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}