Assembler

Dieses Thema im Forum "Programmieren" wurde erstellt von DVfreak, 23. Januar 2003.

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. DVfreak

    DVfreak Byte

    Registriert seit:
    6. Juni 2002
    Beiträge:
    56
    Hi!

    Ich möchte mir assembler-programmierung mal näher anschauen. Bisher hab ich schon in C++ programmiert. Was sollte man denn so grob für den Einstieg in Assembler wissen?

    Gruß,
    Bene
     
  2. Tuxman

    Tuxman Guest

    Registriert seit:
    5. Juni 2001
    Beiträge:
    807
  3. SourceLE

    SourceLE Kbyte

    Registriert seit:
    4. November 2002
    Beiträge:
    488
  4. Tuxman

    Tuxman Guest

    Registriert seit:
    5. Juni 2001
    Beiträge:
    807
    Hehehe... Assembler für Viren zu benutzen... tztztz...

    Leute, die heutigen Viren werden mit diesen Wurmbaukästen zusammengeklickt und gut is. Nennt mir mal einen einzigen "modernen" Virus, der von jemandem entwickelt wurde, der alles selbst gelernt hat ;)

    Außerdem sind die meisten echten "Viren" ohnehin in C++ geschrieben ;) das ist einfach besser geeignet.

    Und zum Thema Assembler und Java:
    Java und Assembler vergleichen? oO
    Da kann man echt nix mehr zu sagen...

    Assembler lässt sich übrigens auch wunderbar in Delphi/PASCAL einbinden:

    ================================

    function Assembler()
    {
    asm mov ax;
    mov cp;
    (wasweißich)
    end;
    }
    end;

    ;)
    [Diese Nachricht wurde von Tuxman am 08.02.2003 | 00:48 geändert.]
     
  5. SourceLE

    SourceLE Kbyte

    Registriert seit:
    4. November 2002
    Beiträge:
    488
    Hi...

    ich nehme mal an er meint die Operationscodes kurz OpCodes.
    Ansonsten wüsste ich es auch nicht. :-)

    MfG & CU
     
  6. TaskForceX1

    TaskForceX1 Byte

    Registriert seit:
    26. Juli 2001
    Beiträge:
    83
    Was meinst du mit selbstmodifizierenden Code?

    mfg Andreas
     
  7. SourceLE

    SourceLE Kbyte

    Registriert seit:
    4. November 2002
    Beiträge:
    488
    Hi...

    ich geb Dir teilweise recht. Aber bei Viren ist nicht unbedingt die Sprache von Bedeutung sondern, wie bekomme ich Sie auf einen fremden Rechner (hoffentl. gebe ich jetzt keinen falschen Eindruck).

    Ein wirklich gutes Beispiel sind die Extensionen COM und EXE.

    Beide werden nicht beim Download angezeigt. Bei COM ist noch der Vorteil das ich ein derartiges Programm in einer Art WebSite tarnen kann. Da spielt es eigentl. keine Rolle ob in ASM oder PAS oderWasWeisIch.

    Beispiel:

    Hallo.COM oder WWW.HalloMyPage.COM. Dank langer Dateinamen ein Kinderspiel. *grins* Aber ich will hier gar nicht so viele Tricks verraten...

    Selbst Bildschirmschoner mussten schon herhalten!

    Viren sind eigentl. keine Sprache sonder der Müll beknackter Dev\'s. Es ist kein Geheimnis, das man schneller einen Virus geschrieben hat als z.B. ein Abrechnungssystem der Deutschen Bahn.

    Assembler ist schon ein wichtiges Tool. Ich meine bewusst Tool und nicht Sprache. Zur Implementierung in Programme oder Programmoptimierung nicht wegzudenken. Kein Zweifel!

    Aber als Sprache für die tägliche Problemlösung unbrauchbar.

    Zurück zum Hacken/Cracken. Eigentl. könnte man gar nicht genug Tricks nennen. Schliesslich würde das Jedem helfen. Allerdings gibt das auch viel Stoff für Unfug.

    Mein Motto ist "to be Top without crack". Aber ein kleiner Joint ist nicht verboten :-)

    MfG & CU
     
  8. olig9

    olig9 Byte

    Registriert seit:
    12. Mai 2001
    Beiträge:
    56
    Meister des Rap\' dieses Forums hier ein, um sich übers Hacken zu informieren... :-)
     
  9. SourceLE

    SourceLE Kbyte

    Registriert seit:
    4. November 2002
    Beiträge:
    488
    Hallo Welt\' bis hin zur MMX-Technologie, Einbindung in Hochsprachen, Programmierung von Prozessoren, Optimierung von Programmen sowie ausführliche Referenzen der Prozessor/Co-Prozessor-Befehle inkl. OpCodes und Taktraten, usw.

    Das Buch ist zwar für Profis und Fortgeschrittene, jedoch dürften auch Anfanger sehr gut damit zurechtkommen.

    MfG & CU
     
  10. interlook

    interlook Byte

    Registriert seit:
    3. Februar 2003
    Beiträge:
    110
    Nun, wie ich schon sagte, war all das ansich nicht das Thema dieses Threads. Dass Programmierung in Assembler mittlerweile eine Lebensaufgabe ist, ist mir sehr wohl bewusst.
    Um jedoch nochmal auf das Anti-Debugging zu kommen: Techniken wie den selbstmodifizierenden Code, lassen sich in Hochsprachen m.E. nicht verwirklichen.

    So, ich danke euch und hoffe, dass wir das nun abgeschlossen haben :-)

    Grüße,
    Andreas
     
  11. SourceLE

    SourceLE Kbyte

    Registriert seit:
    4. November 2002
    Beiträge:
    488
    Hi...

    ich will ja nicht Deine lernbereitschaft für Assembler untegraben; aber nenn mir mal wirklich einen guten Grund für Assembler.

    Mit dem Anit-Debugging gebe ich TaskForceX1 recht; und das geht nicht nur in Java.

    Das ganze ASM wurde in höhere Sprachen übernommen um das ganze einfach Lesbarer zu machen.

    Wenn Du aber direkt in ASM programmierst wird einfach Dein Code kürzer und die Compilierung wird erheblich schneller; Was nicht bedeutet das auch Dein Programme schneller werden.

    Ich habe ASM gelernt und sehe bisher keinen Grund irgenwas in ASM zu machen; weil es in einer anderen Sprache auch geht...

    "Ich fahr doch nicht mit der Kirche ums Dorf" ;-)

    ASM hin oder her... ist alles Einstellungssache.

    MfG & CU

    PS: ich höre schon den Aufschrei >>>...der Code wird kürzer...<<< Ja manchmal ist das so. :-)
    [Diese Nachricht wurde von SourceLE am 05.02.2003 | 19:16 geändert.]
     
  12. interlook

    interlook Byte

    Registriert seit:
    3. Februar 2003
    Beiträge:
    110
    Ok, ich seh schon. Lassen wir das an dieser Stelle.
    Ein Vergleich von JAVA mit Assembler ist relativ nutzfrei.
     
  13. TaskForceX1

    TaskForceX1 Byte

    Registriert seit:
    26. Juli 2001
    Beiträge:
    83
    Anti-Debugging-Tricks gibts auch ohne Assembler!!!!

    Selbst bei Java, wo der Sourcecode leicht wieder hergestellt werden kann gibt es einige Tricks um das Debugging zu verhindern. Zum Bleistift Obfuscating oder einen zusätzlichen Thread laufen zu lassen, der Geschwindigkeitsanalysen macht und daraus ableiten kann, ob das Programm angehalten wurde.

    mfg Andreas
     
  14. interlook

    interlook Byte

    Registriert seit:
    3. Februar 2003
    Beiträge:
    110
    Danke, die erste echt sinnvolle Antwort, die ich hier lese.

    Das ganze artete doch schon wieder zu einse besser-schlechter Debatte aus, wonach hier niemand gefragt hatte.

    PS: Es gibt sehr wohl Anwendungsgebiete, in denen es ohne Assembler nicht geht, denkt mal bitte an Anti-Debugging Tricks.
     
  15. TaskForceX1

    TaskForceX1 Byte

    Registriert seit:
    26. Juli 2001
    Beiträge:
    83
    Gebe ich dir vollkommen recht.

    Geschwindigkeit ist nicht alles (das habe ich auch nie behauptet). Ich z.B. schreibe net schnell drauflos. Eine gute Planung ist mehr wert als das schnellste Programm, da man später diese Programme schlecht ausbauen oder modifizieren kann.

    Ich benutze z.B. oft Design-Patterns (Java sei Dank), die machen das Programm zwar net schneller, dafür aber wesentlich besser lesbar und logischer. Wenn es dochmal schnell sein soll, dann wird es einfach richtig getunt. (Multi-Threading, Non-Blocking IO, Memory Mapped IO etc.)

    mfg Andreas
     
  16. SourceLE

    SourceLE Kbyte

    Registriert seit:
    4. November 2002
    Beiträge:
    488
    Hi...

    da gebe ich Dir Recht mit dem >>>ob das Programm jetzt 4 oder 8 MB RAM schluckt und ein paar tausend Takte mehr braucht<<<

    Nur ist ebend genau das, das eigentl. Erzübel!!!!! Statt das man Code optimiert, also mitdenkt, wird wild drauflosgeschrieben. Und dann wundert man sich, das der ganze Laden im Bluescreen verschwindet.

    Da helfen auch keine Programmierer aus Indien, die schreiben auch bloss Gurkencode (ist aber anderes Thema; wollte das bloss mal sagen) :-)

    MfG & CU
     
  17. TaskForceX1

    TaskForceX1 Byte

    Registriert seit:
    26. Juli 2001
    Beiträge:
    83
    Ich habe ja net gesagt, dass ich es benutze.

    Heutige Computer sind so schnell, da spielt es fast keine Rolle, ob das Programm jetzt 4 oder 8 MB RAM schluckt und ein paar tausend Takte mehr braucht, als ein in Assembler geschriebenes.

    Ich stehe eh mehr auf Java.

    mfg Andreas
     
  18. SourceLE

    SourceLE Kbyte

    Registriert seit:
    4. November 2002
    Beiträge:
    488
    Hi...

    wusstest Du eigentlich, dass jede Programmiersprache den Code in ASM übersetzt und dann binär?

    Einige Dinge sind wirklich nur in ASM realisierbar. Ich versteh ja auch Deinen Aufstand bzw. Deine Zustimmung für ASM; aber mal ehrlich... ASM ist doch nur was für Hardcore-Dev\'s. Oder?

    MfG & CU
     
  19. olig9

    olig9 Byte

    Registriert seit:
    12. Mai 2001
    Beiträge:
    56
    Hallo,
    also im Informatik-Unterricht haben wir Assembler kurz gestreift (als Überleitung zw. einfachen logischen Schaltungen und heutigen Computern), und dabei haben wir das DOS-Tool debug.exe verwendet (müßte bei jedem Win-Rechner dabeisein).
    Damit kann man ein Assembler-Programm direkt im Speicher erstellen, ausführen/debuggen, und als com-Datei speichern. Für den Einstieg ist das sehr interessant. Unter
    http://www.datainstitute.com/debug1.htm
    findest Du eine Anleitung, die die Grundlagen von Debug.exe und Assembler abdeckt.

    Später solltest Du aber auf einen Assembler-Compiler umsteigen (ich selbst benutze z.B. NASM), weil Du dann auch einen beliebigen Texteditor benutzen kannst, und weil viele andere Sachen damit einfacher sind.

    Oliver
     
  20. Zirkon

    Zirkon Megabyte

    Registriert seit:
    28. November 2001
    Beiträge:
    1.210
    Natürlich ist nichts schneller als Maschinencode, aber:
    um einen Prozessor völlig auszureizen, muß man z.B. genau wissen, wie die Befehle anzuordnen sind, um optimal vom Pipelining zu profitieren, die Branch prediction nicht durcheinander zu bringen und vieles anderes mehr. Zu Zeiten eines 68000ers war das anders, jeder Befehl (abgesehen von der Multiplikation) benötigte eine bestimmte immer gleiche Anzahl Taktzyklen und fertig. Bei modernen Prozessoren ist das nicht mehr so, wenn man sich nicht sehr gut damit auskennt, läuft man Gefahr, ineffizienteren Code als ein Compiler zu produzieren (bestimmt RISC-Prozessoren beispielsweise erlauben es, bestimmte Multiplikationsbefehle unter bestimmten Umständen gleichzeitig auszuführen... das per Hand hinzupfriemeln ist keine triviale Aufgabe).
    Die Leute, die Deep Fritz programmiert haben, waren mit Sicherheit absolute Profis die genau wußten, was sie tun. Als Anfänger wird man da aber nicht mithalten können.
     
Status des Themas:
Es sind keine weiteren Antworten möglich.

Diese Seite empfehlen