{"id":28496,"date":"2024-03-16T10:26:18","date_gmt":"2024-03-16T10:26:18","guid":{"rendered":"https:\/\/www.silicloud.com\/blog\/issue-with-reading-process-array-using-readprocessmemory\/"},"modified":"2024-03-22T13:35:53","modified_gmt":"2024-03-22T13:35:53","slug":"issue-with-reading-process-array-using-readprocessmemory","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/blog\/issue-with-reading-process-array-using-readprocessmemory\/","title":{"rendered":"Issue with reading process array using ReadProcessMemory."},"content":{"rendered":"<p>The ReadProcessMemory function can be used to read the memory data of a specified process. To read an array from a process, you can achieve this by reading the starting address of the array and its length.<\/p>\n<p>Here is an example code for reading an array of integers from a process.<\/p>\n<pre class=\"post-pre\"><code><span class=\"hljs-meta\">#<span class=\"hljs-keyword\">include<\/span> <span class=\"hljs-string\">&lt;iostream&gt;<\/span><\/span>\r\n<span class=\"hljs-meta\">#<span class=\"hljs-keyword\">include<\/span> <span class=\"hljs-string\">&lt;windows.h&gt;<\/span><\/span>\r\n\r\n<span class=\"hljs-function\"><span class=\"hljs-type\">int<\/span> <span class=\"hljs-title\">main<\/span><span class=\"hljs-params\">()<\/span> <\/span>{\r\n    <span class=\"hljs-comment\">\/\/ \u83b7\u53d6\u76ee\u6807\u8fdb\u7a0b\u7684\u53e5\u67c4<\/span>\r\n    DWORD pid = <span class=\"hljs-number\">1234<\/span>; <span class=\"hljs-comment\">\/\/ \u76ee\u6807\u8fdb\u7a0b\u7684PID<\/span>\r\n    HANDLE hProcess = <span class=\"hljs-built_in\">OpenProcess<\/span>(PROCESS_ALL_ACCESS, FALSE, pid);\r\n    <span class=\"hljs-keyword\">if<\/span> (hProcess == <span class=\"hljs-literal\">NULL<\/span>) {\r\n        std::cout &lt;&lt; <span class=\"hljs-string\">\"\u65e0\u6cd5\u6253\u5f00\u8fdb\u7a0b\"<\/span> &lt;&lt; std::endl;\r\n        <span class=\"hljs-keyword\">return<\/span> <span class=\"hljs-number\">1<\/span>;\r\n    }\r\n\r\n    <span class=\"hljs-comment\">\/\/ \u8bbe\u7f6e\u8981\u8bfb\u53d6\u7684\u6570\u7ec4\u7684\u9996\u5730\u5740\u548c\u957f\u5ea6<\/span>\r\n    DWORD_PTR arrayAddress = <span class=\"hljs-number\">0x12345678<\/span>; <span class=\"hljs-comment\">\/\/ \u6570\u7ec4\u7684\u9996\u5730\u5740<\/span>\r\n    <span class=\"hljs-type\">int<\/span> arraySize = <span class=\"hljs-number\">10<\/span>; <span class=\"hljs-comment\">\/\/ \u6570\u7ec4\u7684\u957f\u5ea6<\/span>\r\n\r\n    <span class=\"hljs-comment\">\/\/ \u8bfb\u53d6\u6570\u7ec4\u6570\u636e<\/span>\r\n    <span class=\"hljs-type\">int<\/span>* arrayData = <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-type\">int<\/span>[arraySize];\r\n    SIZE_T bytesRead;\r\n    BOOL success = <span class=\"hljs-built_in\">ReadProcessMemory<\/span>(hProcess, (LPCVOID)arrayAddress, arrayData, <span class=\"hljs-built_in\">sizeof<\/span>(<span class=\"hljs-type\">int<\/span>) * arraySize, &amp;bytesRead);\r\n    <span class=\"hljs-keyword\">if<\/span> (!success) {\r\n        std::cout &lt;&lt; <span class=\"hljs-string\">\"\u8bfb\u53d6\u5931\u8d25\"<\/span> &lt;&lt; std::endl;\r\n        <span class=\"hljs-keyword\">return<\/span> <span class=\"hljs-number\">1<\/span>;\r\n    }\r\n\r\n    <span class=\"hljs-comment\">\/\/ \u8f93\u51fa\u8bfb\u53d6\u5230\u7684\u6570\u7ec4\u6570\u636e<\/span>\r\n    <span class=\"hljs-keyword\">for<\/span> (<span class=\"hljs-type\">int<\/span> i = <span class=\"hljs-number\">0<\/span>; i &lt; arraySize; i++) {\r\n        std::cout &lt;&lt; arrayData[i] &lt;&lt; std::endl;\r\n    }\r\n\r\n    <span class=\"hljs-comment\">\/\/ \u91ca\u653e\u8d44\u6e90<\/span>\r\n    <span class=\"hljs-keyword\">delete<\/span>[] arrayData;\r\n    <span class=\"hljs-built_in\">CloseHandle<\/span>(hProcess);\r\n\r\n    <span class=\"hljs-keyword\">return<\/span> <span class=\"hljs-number\">0<\/span>;\r\n}\r\n<\/code><\/pre>\n<p>In the example code, the target process is first opened using the OpenProcess function to obtain the process handle. Next, the starting address and length of the array to be read are set. Then, the ReadProcessMemory function is used to read the array data and store it in a dynamically allocated integer array. Finally, the array data is outputted, and resources are released.<\/p>\n<p>It is important to note that the ReadProcessMemory function reads the memory data of the target process, so it is necessary to ensure that the target process has sufficient permissions to carry out the read operation.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>The ReadProcessMemory function can be used to read the memory data of a specified process. To read an array from a process, you can achieve this by reading the starting address of the array and its length. Here is an example code for reading an array of integers from a process. #include &lt;iostream&gt; #include &lt;windows.h&gt; [&hellip;]<\/p>\n","protected":false},"author":10,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_import_markdown_pro_load_document_selector":0,"_import_markdown_pro_submit_text_textarea":"","footnotes":""},"categories":[1],"tags":[],"class_list":["post-28496","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v21.5 (Yoast SEO v21.5) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Issue with reading process array using ReadProcessMemory. - Blog - Silicon Cloud<\/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:\/\/www.silicloud.com\/blog\/issue-with-reading-process-array-using-readprocessmemory\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Issue with reading process array using ReadProcessMemory.\" \/>\n<meta property=\"og:description\" content=\"The ReadProcessMemory function can be used to read the memory data of a specified process. To read an array from a process, you can achieve this by reading the starting address of the array and its length. Here is an example code for reading an array of integers from a process. #include &lt;iostream&gt; #include &lt;windows.h&gt; [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/blog\/issue-with-reading-process-array-using-readprocessmemory\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog - Silicon Cloud\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/SiliCloudGlobal\/\" \/>\n<meta property=\"article:published_time\" content=\"2024-03-16T10:26:18+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-03-22T13:35:53+00:00\" \/>\n<meta name=\"author\" content=\"Jackson Davis\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@SiliCloudGlobal\" \/>\n<meta name=\"twitter:site\" content=\"@SiliCloudGlobal\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Jackson Davis\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/issue-with-reading-process-array-using-readprocessmemory\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/issue-with-reading-process-array-using-readprocessmemory\/\"},\"author\":{\"name\":\"Jackson Davis\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/55a10b8b0457c35884c25677889ad350\"},\"headline\":\"Issue with reading process array using ReadProcessMemory.\",\"datePublished\":\"2024-03-16T10:26:18+00:00\",\"dateModified\":\"2024-03-22T13:35:53+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/issue-with-reading-process-array-using-readprocessmemory\/\"},\"wordCount\":157,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\"},\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/issue-with-reading-process-array-using-readprocessmemory\/\",\"url\":\"https:\/\/www.silicloud.com\/blog\/issue-with-reading-process-array-using-readprocessmemory\/\",\"name\":\"Issue with reading process array using ReadProcessMemory. - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#website\"},\"datePublished\":\"2024-03-16T10:26:18+00:00\",\"dateModified\":\"2024-03-22T13:35:53+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/issue-with-reading-process-array-using-readprocessmemory\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/blog\/issue-with-reading-process-array-using-readprocessmemory\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/issue-with-reading-process-array-using-readprocessmemory\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.silicloud.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Issue with reading process array using ReadProcessMemory.\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#website\",\"url\":\"https:\/\/www.silicloud.com\/blog\/\",\"name\":\"Silicon Cloud Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\"},\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\",\"name\":\"Silicon Cloud Blog\",\"url\":\"https:\/\/www.silicloud.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png\",\"contentUrl\":\"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png\",\"width\":1024,\"height\":1024,\"caption\":\"Silicon Cloud Blog\"},\"image\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/SiliCloudGlobal\/\",\"https:\/\/twitter.com\/SiliCloudGlobal\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/55a10b8b0457c35884c25677889ad350\",\"name\":\"Jackson Davis\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/2fdb47d6df1226e92380d96973782572a97b0675d098bb914410dec348eb5d29?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/2fdb47d6df1226e92380d96973782572a97b0675d098bb914410dec348eb5d29?s=96&d=mm&r=g\",\"caption\":\"Jackson Davis\"},\"url\":\"https:\/\/www.silicloud.com\/blog\/author\/jacksondavis\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Issue with reading process array using ReadProcessMemory. - Blog - Silicon Cloud","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.silicloud.com\/blog\/issue-with-reading-process-array-using-readprocessmemory\/","og_locale":"en_US","og_type":"article","og_title":"Issue with reading process array using ReadProcessMemory.","og_description":"The ReadProcessMemory function can be used to read the memory data of a specified process. To read an array from a process, you can achieve this by reading the starting address of the array and its length. Here is an example code for reading an array of integers from a process. #include &lt;iostream&gt; #include &lt;windows.h&gt; [&hellip;]","og_url":"https:\/\/www.silicloud.com\/blog\/issue-with-reading-process-array-using-readprocessmemory\/","og_site_name":"Blog - Silicon Cloud","article_publisher":"https:\/\/www.facebook.com\/SiliCloudGlobal\/","article_published_time":"2024-03-16T10:26:18+00:00","article_modified_time":"2024-03-22T13:35:53+00:00","author":"Jackson Davis","twitter_card":"summary_large_image","twitter_creator":"@SiliCloudGlobal","twitter_site":"@SiliCloudGlobal","twitter_misc":{"Written by":"Jackson Davis","Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.silicloud.com\/blog\/issue-with-reading-process-array-using-readprocessmemory\/#article","isPartOf":{"@id":"https:\/\/www.silicloud.com\/blog\/issue-with-reading-process-array-using-readprocessmemory\/"},"author":{"name":"Jackson Davis","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/55a10b8b0457c35884c25677889ad350"},"headline":"Issue with reading process array using ReadProcessMemory.","datePublished":"2024-03-16T10:26:18+00:00","dateModified":"2024-03-22T13:35:53+00:00","mainEntityOfPage":{"@id":"https:\/\/www.silicloud.com\/blog\/issue-with-reading-process-array-using-readprocessmemory\/"},"wordCount":157,"commentCount":0,"publisher":{"@id":"https:\/\/www.silicloud.com\/blog\/#organization"},"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/blog\/issue-with-reading-process-array-using-readprocessmemory\/","url":"https:\/\/www.silicloud.com\/blog\/issue-with-reading-process-array-using-readprocessmemory\/","name":"Issue with reading process array using ReadProcessMemory. - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/blog\/#website"},"datePublished":"2024-03-16T10:26:18+00:00","dateModified":"2024-03-22T13:35:53+00:00","breadcrumb":{"@id":"https:\/\/www.silicloud.com\/blog\/issue-with-reading-process-array-using-readprocessmemory\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/blog\/issue-with-reading-process-array-using-readprocessmemory\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/blog\/issue-with-reading-process-array-using-readprocessmemory\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.silicloud.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Issue with reading process array using ReadProcessMemory."}]},{"@type":"WebSite","@id":"https:\/\/www.silicloud.com\/blog\/#website","url":"https:\/\/www.silicloud.com\/blog\/","name":"Silicon Cloud Blog","description":"","publisher":{"@id":"https:\/\/www.silicloud.com\/blog\/#organization"},"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.silicloud.com\/blog\/#organization","name":"Silicon Cloud Blog","url":"https:\/\/www.silicloud.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png","contentUrl":"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png","width":1024,"height":1024,"caption":"Silicon Cloud Blog"},"image":{"@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/SiliCloudGlobal\/","https:\/\/twitter.com\/SiliCloudGlobal"]},{"@type":"Person","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/55a10b8b0457c35884c25677889ad350","name":"Jackson Davis","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/2fdb47d6df1226e92380d96973782572a97b0675d098bb914410dec348eb5d29?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/2fdb47d6df1226e92380d96973782572a97b0675d098bb914410dec348eb5d29?s=96&d=mm&r=g","caption":"Jackson Davis"},"url":"https:\/\/www.silicloud.com\/blog\/author\/jacksondavis\/"}]}},"_links":{"self":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/28496","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/users\/10"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/comments?post=28496"}],"version-history":[{"count":1,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/28496\/revisions"}],"predecessor-version":[{"id":62798,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/28496\/revisions\/62798"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/media?parent=28496"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/categories?post=28496"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/tags?post=28496"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}