Beiträge von gck

    Zitat von bimbo

    nein, nicht sowas, i muss mich verständlicher machen, 5 stunden programmieren hauen einem das heirn ganz schön zusammen.

    ich hab einen dialog, und bei dem will ich einen abbrechen button machen. also: auf abbrechen klicken, und dialog schließt sich. gibts dafür eine einfache möglichkeit?

    hmm, achso... hoffentlich sag ich jetzt nix falsches, aber ich glaube, sowas brings AWT schon mit -> ein dialog mit text, einem OK und einem Abbrechen Button, der mit True bei Klick auf OK und false bei klick auf abbrechen zurückkehrt (oder so ähnlich) -> schau einfach mal die AWT API docs oder das AWT tutorial auf der Sun Homepage durch, da müssts drinstehen...

    Zitat von bimbo

    ich will grad eine dialogbox schreibe, die sich mit einem klick auf einen button selbst zerstört/zerstört wird. wie kann ich sowas bitte machen?

    falls du meinst, dass du im Programmcode das Anklicken eines Buttons durch den User "simulieren" willst, dann gibt es die Methode doClick() in java.awt.Component (glaub ich, könnte auch eine swing komponenten methode sein...).

    also button.doClick() ist äquivalent damit, dass ein User draufklickt...

    ich hoffe, das wars, was du gemeint hast...

    Zitat

    Original geschrieben von nexxyz
    hehe...software-modding, eh?
    ist das dann auch so was, wo man sich mit einem netten GUI einloggt und die kastln des computers (die ja natürlich grundbausteine eines jeden algorithmus sind) verbinden muss wie bei System Shock 2? :p

    ich hoffe nur, dass man nicht diese kleinen grünen Zeichen lernen muss, die immer im Film immer wie wild über den Bildschirm hopsen und angeblich genug Informationen darstellen, um ein gesamtes Universum bis ins letzte Detail darzustellen...

    andererseits: z.b. hat mir bei "Diablo" die "Bearbeitung" des Spiels mit Soft-ICE und IDA viel mehr Spaß gemacht, als es eigentlich zu spielen, und nebenbei lernt man auch noch so allerlei...

    Zitat

    Original geschrieben von Wings-of-Glory
    ... Ich hoffe, du erwartest nicht, dass jemand das ganze Beispiel für dich löst... :)

    Selbst wenn, würd dir das nix bringen: es gibt ja noch weitere Beispiel, die du lösen musst, und ab jetzt wirst du die JAVA Programmierung ohnehin ständig brauchen, z.b. für Algodat im 2. Semester, etc...

    hmm, entweder du findest es halt mit dem Hex Editor, weils einfach plain-text in der .exe steht, oder du musst dich ein bissl geschickter anstellen.

    Wenns etwa verschlüsselt ist durch irgendeinen Algorithmus, dann wirst du ums Disassemblieren nicht herumkommen.

    Probiers mal auf diesem Weg (verwende dazu einen Debugger wie etwa Soft-ICE von Numega):

    1) starte deine .exe file und geh zur Passwortabfrage. Tipp irgendwas ein und schau was passiert. Nehmen wir an, es kommt eine MessageBox mit "Falsches Passwort".
    2) setze einen Breakpoint auf die MessageBox Funktion(en) vom Win32 API und tu dasselbe nochmal.
    3) Wenn der Debugger am Breakpoint anspringt, kehre aus der MessageBox Funktion zurück in den Code der .exe zurück. Dann hast du schon mal zumindest einen Anhaltepunkt, wo in etwa die Passwortabfrage stehen kann.

    Besonders calls zu einer Funktion, das anschließende Überprüfen auf ein Ergebnis "true" i.e. passwort korrekt (in Assembler meist "test eax, eax", weil im Akkumulator das Ergebnis einer Funktion zurückkommt, zumindest wenns in C/C++ programmiert war) sind heiße Tips zum näheren Inspizieren.

    Früher oder später wirst du den Code verstehen und die Stelle ausmachen können, an der das Passwort kurzzeitig plaintext im Speicher liegt, oder aber es wird block für block decodiert oder ähnliches -> there is no one way to do it!

    Ein bisserl im Debugger herumspielen kann aber extrem lustig sein, vor 5-6 Jahren hab ich immer mitm Soft-ICE und Diablo (dem Spiel) herumgetan und ein paar wirklich nette Cheats geschrieben.

    PS: Dasselbe Spiel kann man auch unter Linux oder anderen Unices mit gdb (dem GNU Debugger) spielen, der aber nicht so mächtig ist wie Soft-ICE unter Windows. Andere empfehlenswerte Programme sind der IDA (Interactive DisAssembler), der nicht einfach das Codesegment sequentiell durchgeht, sondern den Code wirklich ausführt und praktisch jeden Branch "on-the-fly" mitdisassembliert: damit können so einfache Tricks wie etwa ein paar sinnlose Bytes ins Codesegment einfügen, über die man eigentlch drüberjumped, umgangen werden. Die meisten anderen Disassembler täten ab da nur noch Blödsinn ausspucken, da Intel keine fixen Codewortlängen verwendet und der DA die sinnlosen Bytes als Code interpretiert hätte...

    wie auch immer! Viel Spaß!

    Ich hab mich hier eigentlich auf x86 Solaris bezogen, dass ich sowohl in Version 7 als auch in 8 ausprobiert hab und das, verglichen mit Linux, FreeBSD und NetBSD auf derselben Maschine, eine grottenschlechte Performance geliefert hat!!
    Wenn du dir aber ernsthaft überlegst, eine SUN Workstation zuzulegen, dann ist Solaris aber erste Wahl für dich, denn es ist das Betriebssystem, das der (Ultra)SPARC Familie praktisch auf den Leib geschneidert worden ist. Wenn du dich dafür interessierst: Du kannst bei SUN Referenzmanuals für ihre Hard- und Software bestellen, besonders das "UltraSPARC Programmer Reference Manual" sei dir ans Herz gelegt, da steht sehr viel Interessantes über die Besonderheiten der SPARC Architektur drinnen, und zahlreiche Verweise, wie Solaris die ausnutzt:
    Wenn du dir hingegen die relevanten Source Files aus etwa dem Linux Kernel anschaust, wirst du erkennen, dass es an manchen Stellen eher wie "damit halts läuft" Code ausschaut, statt optimiertem...

    Dennoch: für graphische Anwendungen im privaten Bereich ist eine SUN Workstation keine gute Wahl, SUN lebt eigentlich hauptsächlich noch vom guten Support, während Intel/Linux Systeme immer mehr das Wasser abgraben, zumindest am Servermarkt.

    PS: nochmals zur Solarisperformance: Solaris 8 läuft auf meiner fast steinzeitlichen Sparcstation 10 mit 64M ram mit guter Performance!

    Zitat

    Original geschrieben von Soulmerge
    Ich programmier grad in dos, aber der Obige Ausdruck hat mich auf eine andere Idee gebracht (der Ausdruck selber hat leider nicht viel geholfen, da ja der Wert des Ausdrucks ((time()%getpid())*getppid() nur von time() abhängt)

    Ok, unter DOS hast du weder die /dev/ Devices, noch Pids...
    Aber in meinem Ausdruck hängt der Wert nicht nur von der momentanen Zeit, sondern auch von der Process ID deines Programmes, sowie von der PID dessen Vater-Prozesses... solche Ausdrücke kommen in vielen GNU Programmen als "random seed" vor...

    Btw, ich verstehe deinen code nicht ganz, eigentlich solltest du mit srand(long seed) den Zufallszahlengenerator initialisieren können, sofern "seed" eine "relativ zufällige" Zahl ist, und ab dann solle rand() vorzeichenlose Integerwerte von 0 bis RAND_MAX ausspucken, jedensfalls brauchst du srand() nicht in jedem Schleifendurchgang erneut aufrufen, bringt genau "void" :)

    du kannst alternativ zu

    #include < stdlib.h >

    srand(_irgendein_zufälliges_argument_);
    wuerfel = rand()%6;

    auch einfach aus /dev/random oder /dev/urandom lesen, wenn du unter Linux programmierst. Aber welchem Kernel das zur Verfügung steht bzw. obs andere Unices auch anbieten, weiß ich nicht genau, aber /dev/urandom liefert deutlich mehr (vorzeichenlose) Zufallszahlen als 6-8 pro Sekunde...

    aber wenn du als Argument für srand() was komplexeres wie ((time()%getpid())*getppid()) verwendest, solltest du eigentlich auch "echte" Zufallszahlen kriegen...

    Ich möchte wieder mal meine Lanze für Solaris brechen, weil's meiner Meinung nach das einzige sinnvolle OS für die SPARC Architektur ist (wer z.b. Linux auf SPARC schon mal erlebt hat, weiß, was ich mein: DAS ist dann nämlich ein wahres Slow-aris).

    Überdies, was ist mit HP-UX? Das ist ja auch relativ weit verbreitet, ebenso AIX (z.b. auf der WU)! Oder IRIX für die SGI freaks!!

    naja, vielleicht machst du einfach einen Punkt "commercial unix" oder so, wobei das ja dann eigentlich auch nicht zutrifft, weilst ja eh die meisten Unices für Einzelplatzlizenzen/nicht kommerzielle Nutzung gratis/Kopierkosten kriegst...
    Tja, Unix hat halt noch mehr Flavors als Kaugummi!

    Vermutlich hast du dein root Passwort vergessen (das ist ja das einzige Passwort, welches man sich in jedem Fall merken sollte!), wenn du aber nur das Passwort deines "Arbeitsbenutzers" vergessen hast, dann einfach als root einloggen und mittels "passwd Arbeitsbenutzer" dessen Passwort neu setzen.

    Um das PW von root zu ändern, ohne es zu kennen, musst du nur einen Weg finden, um deine root-partition zu mounten, um dann händisch das Passwort von "root" auf nix zu setzen.

    Wenn du eh von Diskette booten kannst (i.e. dein Computer schaut eh zuerst, ob eine bootfähige Diskette drinliegt, bevor er sich die Platte anschaut), dann besorg dir Trinux aus dem Internet (eine Linux Distro, die auf eine Diskette passt) oder ähnliches. Bei manchen SuSE Releases ist auch ein "Rettungssystem" auf Diskette oder CD dabei, in das du booten kannst.

    Als Superuser im Rettungssytem mounte jetzt einfach deine root-partition bzw. die, wo das /etc Verzeichnis drauf ist. Dann öffne die Datei /etc/passwd. Da drin wirst du höchstwahrscheinlich einen Eintrag der Form

    root:x:0:0::/root:/bin/tcsh

    oder so ähnlich finden. Es geht hierbei nur um das zweite Feld, wo vermutlich ein "x" (i.e. Passwort steht in /etc/shadow) drinsteht, oder aber der Passwort Hash selbst, je nachdem, ob du das Shadow System installiert hast, oder nicht. Unter Umständen sogar irgendwas anderes, je nachdem, was du halt zur Passwort Authentikation verwendest.

    Jedenfalls brauchst du nur das zweite Feld zu löschen, sodass die Zeile dann so ausschaut:

    root::0:0::/root:/bin/tcsh

    Dann rebootest du einfach in dein Linux. Wennst dich jetzt als "root" anmeldest, wirst du gar nicht nach einem Passwort gefragt. Allerdings würd ich als erstes natürlich sofort wieder ein PW für root setzen, aber bitte eins, das du dir merken kannst :)

    Hoffe, das is es, was du gemeint hast.