<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pl-pl">
<link rel="self" type="application/atom+xml" href="https://forum.atnel.pl/feed.php?f=48&amp;t=8524&amp;mode" />

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2014-09-15T18:55:45+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=48&amp;t=8524&amp;mode</id>
<entry>
<author><name><![CDATA[Grabki]]></name></author>
<updated>2014-09-15T18:55:45+01:00</updated>
<published>2014-09-15T18:55:45+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8524&amp;p=95569#p95569</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8524&amp;p=95569#p95569"/>
<title type="html"><![CDATA[Re: Visual C# - ReadProcessMemory]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8524&amp;p=95569#p95569"><![CDATA[
<div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />Zycze sukcesow!<br /></div><br />Dzięki!<br /><br /><div class="quotetitle">SunRiver napisał(a):</div><div class="quotecontent"><br />tymczasem jeśli chodzi o dane o pamięci mikrokontrolerów to niema sensu przechwytywać z Mkcalka <br />wszystko znajdziesz w AVRDUDE i w XMLach atmela<br /></div><br />To tylko w celach treningowych i sprawdzenia programu <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> Wartości te wyświetlają się w kalkulatorze.<br /><div class="quotetitle">xamrex napisał(a):</div><div class="quotecontent"><br />Elo <br />Ja robiłem wg. tego poradnika i wszystko działa eegancko <br /><!-- m --><a class="postlink" href="http://www.codeproject.com/Articles/670" >http://www.codeproject.com/Articles/670</a><!-- m --> ... ess-Memory<br /></div><br />Prędzej też robiłem na jego podstawie i nie chciało mi zadziałąć, ale teraz już na spokojnie do tegop podszedłem i zadziałało <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /><br /><br /><div class="quotetitle">xamrex napisał(a):</div><div class="quotecontent"><br />Nie wiem czy o tym myślałeś, ale (tak mi się wydaje) za każdym zrestartowaniem aplikacji (cs) ilość ammo, będzie w innej komórce pamięci, więc nie będzie to takie proste, aby za każdym razem ją wyłuskać<br /></div><br />Jedst za każdym razedm w tej samej <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=439">Grabki</a> — 15 wrz 2014, o 18:55</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[xamrex]]></name></author>
<updated>2014-09-15T17:49:41+01:00</updated>
<published>2014-09-15T17:49:41+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8524&amp;p=95562#p95562</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8524&amp;p=95562#p95562"/>
<title type="html"><![CDATA[Re: Visual C# - ReadProcessMemory]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8524&amp;p=95562#p95562"><![CDATA[
Elo <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";-)" title="Puszcza oko" /><br />Ja robiłem wg. tego poradnika i wszystko działa eegancko <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";-)" title="Puszcza oko" /><br /><!-- m --><a class="postlink" href="http://www.codeproject.com/Articles/670373/Csharp-Read-Write-another-Process-Memory" >http://www.codeproject.com/Articles/670 ... ess-Memory</a><!-- m --><br /><br />Nie wiem czy o tym myślałeś, ale (tak mi się wydaje) za każdym zrestartowaniem aplikacji (cs) ilość ammo, będzie w innej komórce pamięci, więc nie będzie to takie proste, aby za każdym razem ją wyłuskać <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";-)" title="Puszcza oko" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=74">xamrex</a> — 15 wrz 2014, o 17:49</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2014-09-15T16:44:41+01:00</updated>
<published>2014-09-15T16:44:41+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8524&amp;p=95551#p95551</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8524&amp;p=95551#p95551"/>
<title type="html"><![CDATA[Re: Visual C# - ReadProcessMemory]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8524&amp;p=95551#p95551"><![CDATA[
przechwytywanie danych z konsoli czy tez z pamięci  z innych programów specjalnie nie jest skomplikowane  w C# <br />i można się do woli zabawiać  ---  tymczasem jeśli chodzi o dane o pamięci mikrokontrolerów to niema sensu przechwytywać  z Mkcalka <br />wszystko znajdziesz w AVRDUDE i  w XMLach atmela .<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=58">SunRiver</a> — 15 wrz 2014, o 16:44</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[RafPe]]></name></author>
<updated>2014-09-15T16:40:27+01:00</updated>
<published>2014-09-15T16:40:27+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8524&amp;p=95550#p95550</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8524&amp;p=95550#p95550"/>
<title type="html"><![CDATA[Re: Visual C# - ReadProcessMemory]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8524&amp;p=95550#p95550"><![CDATA[
Hey ,<br /><br />No wyglada to niezle - przyznam szczerze , ze ta forma zabawy z pamiecia sie nie interesowalem wczesniej <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> <br /><br />Zycze sukcesow!<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4344">RafPe</a> — 15 wrz 2014, o 16:40</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Grabki]]></name></author>
<updated>2014-09-15T14:58:50+01:00</updated>
<published>2014-09-15T14:58:50+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8524&amp;p=95545#p95545</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8524&amp;p=95545#p95545"/>
<title type="html"><![CDATA[Re: Visual C# - ReadProcessMemory]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8524&amp;p=95545#p95545"><![CDATA[
<div class="quotetitle">RafPe napisał(a):</div><div class="quotecontent"><br />PC wysyla cos do urzadzenia A ?<br /></div> Ale to dopiero w dalekiej przyszłości, najpierw chcę wyłuskać dane z gry, a później je przesłać do AVR.<br />Przykładowo:<br />mam symulator wyścigowy, i chcęzrtobić sobie wyświetlacze prędkości, biegów itd., więc jakoś muszę wyłuskać te dane z tego symulatora i przesłać je do AVR. <br />Ale problem już rozwiązany, podszedłęm do tego dzisiaj jeszcze raz, na chłodno i od nowa <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> <br />Korzystając z  tej strony: <!-- m --><a class="postlink" href="http://www.jarloo.com/reading-and-writing-to-memory/" >http://www.jarloo.com/reading-and-writing-to-memory/</a><!-- m --> Udało mi się odczytać z gry cs liczbę naboi. Z mkAVRcalculator nadal nie udaje mi się odczytać danych, ale podejrzewam, że to już jakieś zabezpieczenie czy coś, mam nadzieje że na docelowych grach się już uda <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> Dzięki za  chęć pomocy, ale powyższa strona rozwiązała problem <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=439">Grabki</a> — 15 wrz 2014, o 14:58</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[RafPe]]></name></author>
<updated>2014-09-15T12:59:15+01:00</updated>
<published>2014-09-15T12:59:15+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8524&amp;p=95536#p95536</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8524&amp;p=95536#p95536"/>
<title type="html"><![CDATA[Re: Visual C# - ReadProcessMemory]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8524&amp;p=95536#p95536"><![CDATA[
Hej , <br /><br />Chetnie bym sprobowal Ci pomoc ale gdybys mogl mi troche rozjasnic o co w tym chodzi .... ? Urzadzenie A to AVR i wysyla cos do PC ? PC wysyla cos do urzadzenia A ? <br /><div class="quotetitle">Grabki napisał(a):</div><div class="quotecontent"><br />Docelowo pragnę wykonać urządzenie oparte o AVR wyświetlające bieg, na którym jest samochód w grze. W tym celu muszę wyciągnąć tę wartość z pamięci i dalej przesłać ją do urządzenia<br /></div><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4344">RafPe</a> — 15 wrz 2014, o 12:59</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Grabki]]></name></author>
<updated>2014-09-15T12:22:11+01:00</updated>
<published>2014-09-15T12:17:01+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8524&amp;p=95533#p95533</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8524&amp;p=95533#p95533"/>
<title type="html"><![CDATA[Visual C# - ReadProcessMemory]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8524&amp;p=95533#p95533"><![CDATA[
Hej,<br />korzystając z odrobiny wolnego czasu postanowiłem pouczyć się programowania w C# w Visual c# 2010. Docelowo pragnę wykonać urządzenie oparte o AVR wyświetlające bieg, na którym jest samochód w grze. W tym celu muszę wyciągnąć tę wartość z pamięci i dalej przesłać ją do urządzenia. Jednak problem pojawia się już przy próbie użycia funkcji ReadProcessMemory. Dużo googlowałem i udało mi się napisać taki program, służący do wyciągania ilości pamięci eeprom z wybranego procesora w mkavrcalculator (adres znalazłem programem Cheat Engine):<br />[syntax=csharp]using System;<br />using System.Collections.Generic;<br />using System.Linq;<br />using System.Text;<br />using System.Diagnostics;<br />using System.Runtime.InteropServices;<br /><br /><br /><br />namespace ConsoleApplication1<br />{<br />    class Program<br />    {<br />        const int PROCESS_WM_READ = 0x0010;<br /><br />        &#91;DllImport(&quot;kernel32.dll&quot;)&#93;<br />        public static extern IntPtr OpenProcess(int dwDesiredAccess, bool bInheritHandle, int dwProcessId);<br /><br />        &#91;DllImport(&quot;kernel32.dll&quot;)&#93;<br />        public static extern bool ReadProcessMemory(int hProcess, int lpBaseAddress, int lpBuffer, int dwSize, ref int lpNumberOfBytesRead);<br /><br />        &#91;DllImport(&quot;user32.dll&quot;)&#93;<br />        public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);<br /><br />        static void Main(string&#91;&#93; args)<br />        {<br />            Process process = Process.GetProcessesByName(&quot;MkAVRCalculator&quot;)&#91;0&#93;;<br />            IntPtr processHandle = OpenProcess(PROCESS_WM_READ, false, process.Id);<br /><br /><br />            IntPtr HWND = FindWindow(null, &quot;mkAVR Calculator&quot;);<br /><br />       <br />            int bytesRead = 0;<br />            int value = 0;<br />            bool status;<br />            <br />            status = ReadProcessMemory((int)processHandle, 0x0066DF8C, value, 4, ref bytesRead);<br /><br />            Console.WriteLine(&quot;HWND:&quot; + HWND.ToString());<br />            Console.WriteLine(&quot;status:&quot; + status);<br />            Console.WriteLine(&quot;process.Id:&quot; +   process.Id.ToString());<br />            Console.WriteLine(&quot;processHandle:&quot;  +   processHandle.ToString());<br />            Console.WriteLine(&quot;value:&quot; + value.ToString());<br />            Console.ReadLine();<br />        }<br />    }<br />}[/syntax]<br /><br />Niestety nie udaje się, konsola wygląda tak: <a href="http://forum.atnel.pl/_obrazki/o/439/23f32486ebd6a37c0ba0a3034fb7154a.jpg"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/439/23f32486ebd6a37c0ba0a3034fb7154a.jpg" alt="Obrazek" /></a><br />a więc nawet handle ma wartość 0. Pomyślałem że to może jakieś zabezpieczenie Mirka, w związku z czym przerobiłem kod pod ilość naboi w grze Counter-strike.<br /><br />[syntax=csharp]using System;<br />using System.Collections.Generic;<br />using System.Linq;<br />using System.Text;<br />using System.Diagnostics;<br />using System.Runtime.InteropServices;<br /><br /><br /><br />namespace ConsoleApplication1<br />{<br />    class Program<br />    {<br />        const int PROCESS_WM_READ = 0x0010;<br /><br />        &#91;DllImport(&quot;kernel32.dll&quot;)&#93;<br />        public static extern IntPtr OpenProcess(int dwDesiredAccess, bool bInheritHandle, int dwProcessId);<br /><br />        &#91;DllImport(&quot;kernel32.dll&quot;)&#93;<br />        public static extern bool ReadProcessMemory(int hProcess, int lpBaseAddress, int lpBuffer, int dwSize, ref int lpNumberOfBytesRead);<br /><br />        &#91;DllImport(&quot;user32.dll&quot;)&#93;<br />        public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);<br /><br />        static void Main(string&#91;&#93; args)<br />        {<br />            Process process = Process.GetProcessesByName(&quot;hl&quot;)&#91;0&#93;;<br />            IntPtr processHandle = OpenProcess(PROCESS_WM_READ, false, process.Id);<br /><br /><br />            IntPtr HWND = FindWindow(null, &quot;Counter-Strike&quot;);<br /><br />       <br />            int bytesRead = 0;<br />            int value = 0;<br />            bool status;<br />            <br />            status = ReadProcessMemory((int)processHandle, 0x05979F68, value, 4, ref bytesRead);<br /><br />            Console.WriteLine(&quot;HWND:&quot; + HWND.ToString());<br />            Console.WriteLine(&quot;status:&quot; + status);<br />            Console.WriteLine(&quot;process.Id:&quot; +   process.Id.ToString());<br />            Console.WriteLine(&quot;processHandle:&quot;  +   processHandle.ToString());<br />            Console.WriteLine(&quot;value:&quot; + value.ToString());<br />            Console.ReadLine();<br />        }<br />    }<br />}[/syntax]<br /><br />efekt: <a href="http://forum.atnel.pl/_obrazki/o/439/ea248308a5e7ebd042e7e502eb0f0331.jpg"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/439/ea248308a5e7ebd042e7e502eb0f0331.jpg" alt="Obrazek" /></a><br />Jak widać, udaje się uzyskać wartość handle, ale niestety funkcja ReadProcessMemory nadal zwraca wartość false i nie oodczytuje wartości. <br /><br />Siedziałem wczoraj nad tym cały dzień i nie mam pojęcie co jeszcze mogę zrobić. Gdyby ktoś rzucił okiem i wiedział co jest nie tak, to byłbym bardzo wdzięczny za pomoc.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=439">Grabki</a> — 15 wrz 2014, o 12:17</p><hr />
]]></content>
</entry>
</feed>