mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Dokumentation mit Revese Engeneering?


Autor: nobody0 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gibt es Revese Engeneers die aus Source Code mit sehr wenigen 
Kommentaren aber kompletter Hardware-Dokumentation eine komplette 
Dokumentation erstellen können, also zu jeder Zeile Code (mit einer 
Anweisung) angeben können wofür die ist?

Ich meine das geht zumindest ab einigen hundert Anweisungen (und 
insbesondere über 100 Funktionen) nicht mehr, weil das hinter dem Code 
stehende Konzept meist nicht erkennbar ist, aber dafür habe ich keinen 
formalen Beweis und vielleicht gibt's ja auch andere Meinungen.

Autor: BAB (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
musst nur genug zeit und ahnung haben dann geht alles...

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das geht schon bei einer einzigen Zeile nicht.

Oder kannst Du Gedanken lesen, was der ürsprüngiche Entwickler sich 
dabei gedacht hat ?

Entweder der Entwickler kommentiert direkt beim Schreiben des Programms 
oder es wird nie passieren.

Das ist auch der Grund, warum Software beim Weiterentwickeln tonnenweise 
alte Leichen enthält oder komplett neugeschrieben wird.

Hier mal ein Beispiel:

add     a, #90h
da      a
addc    a, #40h
da      a

Wenn Du rauskriegst, wozu das gut ist, bist Du ein Genie.


Peter

Autor: nobody0 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok,ich habe mir sowas schon bei den Programmen vom IOCCC gedacht, aber 
es wäre ja prinzipiell möglich, das es Genies gibt, die ein 
IOCCC-Programm ( http://www.ioccc.org/ ) wie

#include <stdio.h>
#include <math.h>
double l;main(_,o,O){return 
putchar((_--+22&&_+44&&main(_,-43,_),_&&o)?(main(-43,++o,O),((l=(o+21)/s 
qrt(3-O*22-O*O),l*l<4&&(fabs(((time(0)-607728)%2551443)/405859.-4.7+acos 
(l/2))<1.57))["  #"])):10);}


ganz einfach finden und sofort den Output hinschreiben können.

Mit Hardware ist es schwieriger, aber wenn man die auswendig kennt, wäre 
das ja kaum komplizierter.

Autor: mikki merten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@peter
Bitte nicht so einfach Beispiele
wie lower 4 Bit to ASCII.

Autor: BAB (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hi peter,

sagt dir softice was? damit kann man ganz toll windows programme 
debuggen und hacken. was sich der programmierer dabei gedacht hat ist 
mir egal..hauptsache ich verstehe den code..also sag nicht das geht 
nicht.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi BAB,

zwischen Hacken und Verstehen ist ein himmelweiter Unterschied.

Ein Hacker analysiert nur einen kleinen Teil oder modifiziert was und 
beobachtet, was sich anders verhält. Er kratzt sozusagen nur an der 
Oberfläche und dringt nicht in die Tiefe vor.

Bis Du das Programm wirklich in allen Details verstanden hast, benötigst 
Du weitaus mehr Zeit, als wenn Du es komplett neu geschrieben hättest.

Reengineering lohnt sich nur, um geheime Algorithmen anderer zu 
extrahieren.


Selbst, wenn man eigenen Code nach Jahren wieder betrachtet, braucht man 
einige Zeit, um ihn wieder zu verstehen.
Oftmals kommen einem dann einige Anweisungen überflüssig vor oder 
scheinen zu fehlen, dem ist aber nicht so.


Peter

Autor: thkaiser (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jep, geht mir auch so...
Wenn ich mal alten Code nach einem Jahr oder so wieder rauskrame, bin 
ich auch immer ganz baff, welches Genie da am Arbeiten war... Spaß 
beiseite: Man macht sich zum Zeitpunkt der Programmentwicklung so seine 
Gedanken, wie die Aufgabe optimal zu lösen ist. Neben 
Standard-0815-Geschichten wie z.B. RS232 gibt es dann eben auch 
komplizierte Gedankengänge, die einige Zeit in der Ideenschmiede 
"gereift" sind (mir kommen die besten Ideen aufm Klo).
Einen Code Zeile für Zeile zu übersetzen, das ist von einem Disassembler 
noch zu leisten. Aber dann entsprechende Kommentare... Es besteht schon 
ein Unterschied, ob da steht "Ausgabe von R16 auf PORTD" oder "Gib das 
Ergebnis der Prüfsummenberechnung auf PORTD aus". Dieser Unterschied ist 
für einen Disassembler mit Sicherheit nicht erkennbar.

Autor: nobody0 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tja, ich habe das Prooblem nun ein Projekt mit über 100 Funktionen und 
nur sehr wenig Dokumentation zu haben, und muss auch zum Debugen 
nachvollziehen was wo passiert.
Also muss der Autor noch verraten wie er es gemacht hat. Das viele 
Optimierungen drinn sind, ist zwar zu erkennen, aber welche 
Konzepte/Modelle verwendet wurden sieht man man Source Code leider nicht 
an.

Autor: Rainer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@BAB und Peter: tut zwar eigentlich nichts zur Sache, aber zwischen 
Hacken und Cracken gibts auch nen kleinen Unterschied :)

Autor: BAB (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich meine ja nur das es im prinzip möglich wäre...
ich sagte ja auch wenn du GANZ VIEL zeit hast..:D

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.