<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0">
  <channel>
    <title>Frage an Assembler-Checker</title>
    <link>http://forum.geizhals.at/feed.jsp?id=529546</link>
    <description>Geizhals-Forum</description>
    <item>
      <title>Re(2): Frage an Assembler-Checker</title>
      <link>http://forum.geizhals.at/t529546,4442184.html#4442184</link>
      <description>&lt;blockquote&gt;&lt;em&gt; mit NOPs füllen.&lt;br&gt;&lt;/em&gt;&lt;/blockquote&gt;&lt;br&gt;und ggf aufpassen immer an even Bytes zu sein, was anderes nimmt der PC nicht &lt;img src="smile.gif" width="16" height="19" align="absmiddle" alt=":)"/&gt;&lt;br&gt;&lt;br/&gt;</description>
      <pubDate>Mon, 12 Nov 2007 10:36:04 GMT</pubDate>
      <guid>http://forum.geizhals.at/t529546,4442184.html#4442184</guid>
      <dc:creator>Knurz</dc:creator>
      <dc:date>2007-11-12T10:36:04Z</dc:date>
    </item>
    <item>
      <title>Re: Frage an Assembler-Checker</title>
      <link>http://forum.geizhals.at/t529546,4441120.html#4441120</link>
      <description>Braucht mov [eax+0x14],edx genauso viele Bytes wie call 47be78f7?&lt;br&gt;Wenn mehr, dann musst die "fehlenden bzw. freigewordenen" Bytes (die durch das Verwenden des call jetzt freigeworden sind) mit NOPs füllen.&lt;br/&gt;</description>
      <pubDate>Sun, 11 Nov 2007 19:12:48 GMT</pubDate>
      <guid>http://forum.geizhals.at/t529546,4441120.html#4441120</guid>
      <dc:creator>RevX</dc:creator>
      <dc:date>2007-11-11T19:12:48Z</dc:date>
    </item>
    <item>
      <title>Re: Frage an Assembler-Checker</title>
      <link>http://forum.geizhals.at/t529546,4415774.html#4415774</link>
      <description>&lt;blockquote&gt;&lt;em&gt; Ich kann mich dunkel dran erinnern, daß man auf die Länge der Instruktionen&lt;br&gt;achten muß,&lt;br&gt;&lt;/em&gt;&lt;/blockquote&gt;&lt;br&gt;&lt;br&gt;Ja, mußt Du, sonst steht was sinnloses dort. &lt;br&gt;&lt;br&gt;Glaube (auch schon bisserl länger her) das mov und jmp unterschiedliche längen hatten, also würde ich die fehlenden bytes mit NOP auffüllen.&lt;br&gt;&lt;br&gt;inc edx&lt;br&gt;inc edx&lt;br&gt;nop&lt;br&gt;nop&lt;br&gt;jsr [deincode]&lt;br&gt;ret&lt;br&gt;&lt;br&gt;Da bei jump/branch operationen ja die meisten Register gepusht und dann wieder gepopt wird, hast in deiner Sub die gleichen Werte und kannst sie nach belieben manipulieren.&lt;br&gt;&lt;br/&gt;</description>
      <pubDate>Sun, 28 Oct 2007 22:32:36 GMT</pubDate>
      <guid>http://forum.geizhals.at/t529546,4415774.html#4415774</guid>
      <dc:creator>Knurz</dc:creator>
      <dc:date>2007-10-28T22:32:36Z</dc:date>
    </item>
    <item>
      <title>Re: Frage an Assembler-Checker</title>
      <link>http://forum.geizhals.at/t529546,4416142.html#4416142</link>
      <description>&lt;blockquote&gt;&lt;em&gt; Ich kann mich dunkel dran erinnern, daß man auf die Länge der Instruktionen&lt;br&gt;achten muß,&lt;br&gt;&lt;/em&gt;&lt;/blockquote&gt;&lt;br&gt;&lt;br&gt;Ja, mußt Du, sonst steht was sinnloses dort. &lt;br&gt;&lt;br&gt;Glaube (auch schon bisserl länger her) das mov und jmp unterschiedliche längen hatten, also würde ich die fehlenden bytes mit NOP auffüllen.&lt;br&gt;&lt;br&gt;inc edx&lt;br&gt;inc edx&lt;br&gt;nop&lt;br&gt;nop&lt;br&gt;jsr [deincode]&lt;br&gt;ret&lt;br&gt;&lt;br&gt;Da bei jump/branch operationen ja die meisten Register gepusht und dann wieder gepopt wird, hast in deiner Sub die gleichen Werte und kannst sie nach belieben manipulieren.&lt;br&gt;&lt;br&gt;So also des hatma ka Ruhe glassen &lt;img src="smile.gif" width="16" height="19" align="absmiddle" alt=":)"/&gt;..&lt;br&gt;&lt;br&gt;GLOBAL main&lt;br&gt;SECTION .data USE32&lt;br&gt;tmpbla:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; resb&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;64 &lt;br&gt;; code&lt;br&gt;SECTION .text USE32&lt;br&gt;main:&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;xor&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; edx, edx&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; eax, [tmpbla]&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[eax+14], edx&lt;br&gt;&lt;br&gt;ergibt =&lt;br&gt;00000000&amp;nbsp;&amp;nbsp;66 31 d2 66 a1 0c 00 66&amp;nbsp;&amp;nbsp;67 89 50 0e 00 00 00 00&amp;nbsp;&amp;nbsp;|f1.f...fg.P.....|&lt;br&gt;00000010&amp;nbsp;&amp;nbsp;00 00 00 00 00 00 00 00&amp;nbsp;&amp;nbsp;00 00 00 00 00 00 00 00&amp;nbsp;&amp;nbsp;|................|&lt;br&gt;*&lt;br&gt;00000040&amp;nbsp;&amp;nbsp;00 00 00 00 00 00 00 00&amp;nbsp;&amp;nbsp;00 00 00 00&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;|............|&lt;br&gt;0000004c&lt;br&gt;&lt;br&gt;während&lt;br&gt;&lt;br&gt;GLOBAL main&lt;br&gt;SECTION .data USE32&lt;br&gt;tmpbla:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; resb&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;64 &lt;br&gt;; code&lt;br&gt;SECTION .text USE32&lt;br&gt;main:&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;xor&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; edx, edx&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; eax, [tmpbla]&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;jmp&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [eax+14]&lt;br&gt;&lt;br&gt;folgendes ergibt:&lt;br&gt;00000000&amp;nbsp;&amp;nbsp;66 31 d2 66 a1 0c 00 67&amp;nbsp;&amp;nbsp;ff 60 0e 00 00 00 00 00&amp;nbsp;&amp;nbsp;|f1.f...g.`......|&lt;br&gt;00000010&amp;nbsp;&amp;nbsp;00 00 00 00 00 00 00 00&amp;nbsp;&amp;nbsp;00 00 00 00 00 00 00 00&amp;nbsp;&amp;nbsp;|................|&lt;br&gt;*&lt;br&gt;00000040&amp;nbsp;&amp;nbsp;00 00 00 00 00 00 00 00&amp;nbsp;&amp;nbsp;00 00 00 00&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;|............|&lt;br&gt;0000004c&lt;br&gt;&lt;br&gt;d.h. du mußt 1 NOP einfügen. Pass aber auf das das auf keiner ungeraden adresse liegt, sonst hast Du das Problem das die CPU wieder nur Blödsinn ließt. :/&lt;br&gt;&lt;br/&gt;</description>
      <pubDate>Sun, 28 Oct 2007 22:32:36 GMT</pubDate>
      <guid>http://forum.geizhals.at/t529546,4416142.html#4416142</guid>
      <dc:creator>Knurz</dc:creator>
      <dc:date>2007-10-28T22:32:36Z</dc:date>
    </item>
    <item>
      <title>Re(2): Frage an Assembler-Checker</title>
      <link>http://forum.geizhals.at/t529546,4413708.html#4413708</link>
      <description>Ehrlich gesagt, hab ich wenig Plan davon. Nachdem ich mit der x86 ISA zwangsbeglückt wurde, hat sich meine Begeisterung dafür ins Bodenlose verabschiedet. &lt;img src="teeth.gif" width="16" height="19" align="absmiddle" alt="|-D"/&gt;&lt;br&gt;&lt;br&gt;Ich benutze als Hilfe den Memory Scanner/Debugger TSearch, der mir den oben angeführten Vorgang dann in Poke Befehle (Basic) für ein weiteres Programm liefert.&lt;br&gt;&lt;br&gt;Das sieht in meinem Fall so aus:&lt;br&gt;&lt;br&gt;Normale Ausführung: &lt;br&gt;Poke 3913ABC7 89 50 14 // 3 byte&lt;br&gt;&lt;br&gt;Mit dem Umweg:&lt;br&gt;Poke 4FBE78F7 42 42 89 50 14 C3 // die Bearbeitung nach dem Sprung, 6 byte&lt;br&gt;Poke 3913ABC7 E8 2B CD AA 0E // Ausführung des Sprungs, 5 byte&lt;br&gt;&lt;br&gt;Also originale Version vs neue Version 3 byte vs. 11 byte. Ich hatte das viel viel früher schon einmal gemacht und in Erinnerung, daß die gleich groß sein müssen (oder ähnlich?) und man mit nops auffüllen mußte. Nur wie, weiß ich nicht mehr. Ich bin gerade fleißig am Googlen. Falls die Lösung also nicht von hier kommt, stell ich sie noch hier rein. &lt;img src="smile.gif" width="16" height="19" align="absmiddle" alt=":)"/&gt;&lt;br/&gt;</description>
      <pubDate>Sat, 27 Oct 2007 19:03:10 GMT</pubDate>
      <guid>http://forum.geizhals.at/t529546,4413708.html#4413708</guid>
      <dc:creator>m3t4tr0n</dc:creator>
      <dc:date>2007-10-27T19:03:10Z</dc:date>
    </item>
    <item>
      <title>Re(2): Frage an Assembler-Checker</title>
      <link>http://forum.geizhals.at/t529546,4413727.html#4413727</link>
      <description>Ehrlich gesagt, hab ich wenig Plan davon. Nachdem ich mit der x86 ISA zwangsbeglückt wurde, hat sich meine Begeisterung dafür ins Bodenlose verabschiedet. &lt;img src="teeth.gif" width="16" height="19" align="absmiddle" alt="|-D"/&gt;&lt;br&gt;&lt;br&gt;Ich benutze als Hilfe den Memory Scanner/Debugger TSearch, der mir den oben angeführten Vorgang dann in Poke Befehle (Basic) für ein weiteres Programm liefert.&lt;br&gt;&lt;br&gt;Das sieht in meinem Fall so aus:&lt;br&gt;&lt;br&gt;Normale Ausführung: &lt;br&gt;Poke 3913ABC7 89 50 14 // 3 byte&lt;br&gt;&lt;br&gt;Mit dem Umweg:&lt;br&gt;Poke 4FBE78F7 42 42 89 50 14 C3 // die Bearbeitung nach dem Sprung, 6 byte&lt;br&gt;Poke 3913ABC7 E8 2B CD AA 0E // Ausführung des Sprungs, 5 byte&lt;br&gt;&lt;br&gt;Also originale Version vs neue Version 3 byte vs. 11 byte. Ich hatte das viel viel früher schon einmal gemacht und in Erinnerung, daß die gleich groß sein müssen (oder ähnlich?) und man mit nops auffüllen mußte. Nur wie, weiß ich nicht mehr. Ich bin gerade fleißig am Googlen. Falls die Lösung also nicht von hier kommt, stell ich sie noch hier rein. &lt;img src="smile.gif" width="16" height="19" align="absmiddle" alt=":)"/&gt;&lt;br&gt;&lt;br&gt;Edit: Zielführendes Stichwort: "Code Cave". Das Problem ist tatsächlich, daß ich Instruktionen überschreibe. Und das Überschriebene eben wieder herstellen muß. &lt;br/&gt;</description>
      <pubDate>Sat, 27 Oct 2007 19:03:10 GMT</pubDate>
      <guid>http://forum.geizhals.at/t529546,4413727.html#4413727</guid>
      <dc:creator>m3t4tr0n</dc:creator>
      <dc:date>2007-10-27T19:03:10Z</dc:date>
    </item>
    <item>
      <title>Re(2): Frage an Assembler-Checker</title>
      <link>http://forum.geizhals.at/t529546,4413726.html#4413726</link>
      <description>Ehrlich gesagt, hab ich wenig Plan davon. Nachdem ich mit der x86 ISA zwangsbeglückt wurde, hat sich meine Begeisterung dafür ins Bodenlose verabschiedet. &lt;img src="teeth.gif" width="16" height="19" align="absmiddle" alt="|-D"/&gt;&lt;br&gt;&lt;br&gt;Ich benutze als Hilfe den Memory Scanner/Debugger TSearch, der mir den oben angeführten Vorgang dann in Poke Befehle (Basic) für ein weiteres Programm liefert.&lt;br&gt;&lt;br&gt;Das sieht in meinem Fall so aus:&lt;br&gt;&lt;br&gt;Normale Ausführung: &lt;br&gt;Poke 3913ABC7 89 50 14 // 3 byte&lt;br&gt;&lt;br&gt;Mit dem Umweg:&lt;br&gt;Poke 4FBE78F7 42 42 89 50 14 C3 // die Bearbeitung nach dem Sprung, 6 byte&lt;br&gt;Poke 3913ABC7 E8 2B CD AA 0E // Ausführung des Sprungs, 5 byte&lt;br&gt;&lt;br&gt;Also originale Version vs neue Version 3 byte vs. 11 byte. Ich hatte das viel viel früher schon einmal gemacht und in Erinnerung, daß die gleich groß sein müssen (oder ähnlich?) und man mit nops auffüllen mußte. Nur wie, weiß ich nicht mehr. Ich bin gerade fleißig am Googlen. Falls die Lösung also nicht von hier kommt, stell ich sie noch hier rein. &lt;img src="smile.gif" width="16" height="19" align="absmiddle" alt=":)"/&gt;&lt;br&gt;&lt;br&gt;Edit: Zielführendes Stichwort: "Code Cave". Das Problem ist tatsächlich, daß ich Instruktionen überschreibe. Und das Überschriebene eben wieder herstellen muß. &lt;br&gt;&lt;br&gt;L&lt;br/&gt;</description>
      <pubDate>Sat, 27 Oct 2007 19:03:10 GMT</pubDate>
      <guid>http://forum.geizhals.at/t529546,4413726.html#4413726</guid>
      <dc:creator>m3t4tr0n</dc:creator>
      <dc:date>2007-10-27T19:03:10Z</dc:date>
    </item>
    <item>
      <title>Re: Frage an Assembler-Checker</title>
      <link>http://forum.geizhals.at/t529546,4413695.html#4413695</link>
      <description>Meine Assemblerzeiten sind auch schon einige Jahre her.&lt;br&gt;&lt;br&gt;Kann es sein das der Jump zurück zu klein dimensioniert ist?&lt;br&gt;&lt;br&gt;Verwende mal eine Ljump statt einen jump. Gibts in Assembler überhaupt ein Return? Soweit ich mich errinnern kann hüpft man mit einem Jump ins Unterprogramm(andere Speicheradresse) und nach Abschluss wieder zurück.&lt;br&gt;&lt;br&gt;Die Adresse des Programmcounters (PC) legt man sich meistens am Stack ab.&lt;br&gt;&lt;br&gt;&lt;br&gt;Kann auch sein das das eine ganz andere Baustelle ist. Soviel Programmiersprachen die ich kenne bringt man irgendwann mal alles durcheinander.&lt;br&gt;&lt;br&gt;&lt;br&gt;Hoffe geholfen zu haben.&lt;br/&gt;</description>
      <pubDate>Sat, 27 Oct 2007 18:47:52 GMT</pubDate>
      <guid>http://forum.geizhals.at/t529546,4413695.html#4413695</guid>
      <dc:creator>-=]bLooDy[=-</dc:creator>
      <dc:date>2007-10-27T18:47:52Z</dc:date>
    </item>
    <item>
      <title>Re: Frage an Assembler-Checker</title>
      <link>http://forum.geizhals.at/t529546,4413696.html#4413696</link>
      <description>Meine Assemblerzeiten sind auch schon einige Jahre her.&lt;br&gt;&lt;br&gt;Kann es sein das der Jump zurück zu klein dimensioniert ist?&lt;br&gt;&lt;br&gt;Verwende mal eine Ljump statt einen jump. Gibts in Assembler überhaupt ein Return? Soweit ich mich errinnern kann hüpft man mit einem Jump ins Unterprogramm(andere Speicheradresse) und nach Abschluss wieder zurück.&lt;br&gt;&lt;br&gt;Die Rückkehradresse legt man sich meistens am Stack ab oder man merkt sich die Stelle des Programmcounters (PC).&lt;br&gt;&lt;br&gt;&lt;br&gt;Kann auch sein das das eine ganz andere Baustelle ist. Soviel Programmiersprachen die ich kenne bringt man irgendwann mal alles durcheinander.&lt;br&gt;&lt;br&gt;&lt;br&gt;Hoffe geholfen zu haben.&lt;br/&gt;</description>
      <pubDate>Sat, 27 Oct 2007 18:47:52 GMT</pubDate>
      <guid>http://forum.geizhals.at/t529546,4413696.html#4413696</guid>
      <dc:creator>-=]bLooDy[=-</dc:creator>
      <dc:date>2007-10-27T18:47:52Z</dc:date>
    </item>
    <item>
      <title>Frage an Assembler-Checker</title>
      <link>http://forum.geizhals.at/t529546,4413641.html#4413641</link>
      <description>Möchte zu einem Spiel gern einen Trainer schreiben und brauche Hilfe bei der "Code-Injection" (&lt;img src="crazy.gif" width="16" height="19" align="absmiddle" alt="%-)"/&gt;) brauchen.&lt;br&gt;&lt;br&gt;3913abc7: mov [eax+0x14],edx&lt;br&gt;&lt;br&gt;soll ersetzt werden durch einen call 47be78f7 (freie Adresse)&lt;br&gt;&lt;br&gt;gut und dort soll dann folgendes ausgeführt werden.&lt;br&gt;&lt;br&gt;inc edx&lt;br&gt;inc edx&lt;br&gt;mov [eax+0x14],edx&lt;br&gt;ret&lt;br&gt;&lt;br&gt;In edx steht ein um 2 reduzierter Wert, den ich einfach wieder um zwei erhöhen will und dann nach eax+0x14 schreiben möchte.&lt;br&gt;&lt;br&gt;Leider funktioniert das nicht und das Spiel stürzt ab. Eine direkte Manipulation von 3913abc7: mov [eax+0x14],edx funktioniert, deswegen wird wohl in dieser "Umleitung" der Fehler liegen. Ich kann mich dunkel dran erinnern, daß man auf die Länge der Instruktionen achten muß, aber genau kenn ich mich da nicht (mehr) aus.&lt;br&gt;&lt;br&gt;Kann mir vielleicht jemand einen Hinweis geben?&lt;br/&gt;</description>
      <pubDate>Sat, 27 Oct 2007 18:10:24 GMT</pubDate>
      <guid>http://forum.geizhals.at/t529546,4413641.html#4413641</guid>
      <dc:creator>m3t4tr0n</dc:creator>
      <dc:date>2007-10-27T18:10:24Z</dc:date>
    </item>
    <item>
      <title>Frage an Assembler-Checker</title>
      <link>http://forum.geizhals.at/t529546,4413678.html#4413678</link>
      <description>Möchte zu einem Spiel gern einen Trainer schreiben und brauche Hilfe bei der "Code-Injection" (&lt;img src="crazy.gif" width="16" height="19" align="absmiddle" alt="%-)"/&gt;).&lt;br&gt;&lt;br&gt;3913abc7: mov [eax+0x14],edx&lt;br&gt;&lt;br&gt;soll ersetzt werden durch einen call 47be78f7 (freie Adresse)&lt;br&gt;&lt;br&gt;gut und dort soll dann folgendes ausgeführt werden.&lt;br&gt;&lt;br&gt;inc edx&lt;br&gt;inc edx&lt;br&gt;mov [eax+0x14],edx&lt;br&gt;ret&lt;br&gt;&lt;br&gt;In edx steht ein um 2 reduzierter Wert, den ich einfach wieder um zwei erhöhen will und dann nach eax+0x14 schreiben möchte.&lt;br&gt;&lt;br&gt;Leider funktioniert das nicht und das Spiel stürzt ab. Eine direkte Manipulation von 3913abc7: mov [eax+0x14],edx funktioniert, deswegen wird wohl in dieser "Umleitung" der Fehler liegen. Ich kann mich dunkel dran erinnern, daß man auf die Länge der Instruktionen achten muß, aber genau kenn ich mich da nicht (mehr) aus.&lt;br&gt;&lt;br&gt;Kann mir vielleicht jemand einen Hinweis geben?&lt;br/&gt;</description>
      <pubDate>Sat, 27 Oct 2007 18:10:24 GMT</pubDate>
      <guid>http://forum.geizhals.at/t529546,4413678.html#4413678</guid>
      <dc:creator>m3t4tr0n</dc:creator>
      <dc:date>2007-10-27T18:10:24Z</dc:date>
    </item>
  </channel>
</rss>
