Einstieg in "Softwareveränderung"



  • ceplusplus@loggedoff schrieb:

    Gibts ne free ASM IDE?

    Ich hasse diese scheiss Kommandozeilen unnötige Kacke.

    (Turbo Assembler)

    TASM test
    TLINK test

    test.obj wird erzeugt, test.exe nirgends zu sehen.

    (Tutorial: Nach Eingabe von first auf der Kommandozeile ... toll welche Kommandozeile, diese ganzen DOS Boxen schließen doch sofort wieder)

    Jetzt hab ich paar IDE's mit compiler + linker probiert, aber es will nicht, immer irgendwelche codefehler...

    Kennt ihr ne IDE mit compiler+linker und nem guten code tutorial dazu?
    Oder nen code tutorial zu winasm?

    Jetzt mal im Ernst. Du willst dich mit "Code injizieren" beschäftigen und bist nichtmal in der Lage dich in einen Kommandozeilen Assembler einzuarbeiten und schreist gleich nach einem Tutorial ohne mal ne Stunde danach gegoogelt zu haben? Ich geb dir einen Tipp, lass es. Das schaffst du nie.



  • Hm, ja.
    So eine IDE ist - vor allem fuer den routinierten Assembler-Programmierer - hoechstens eine nette Hilfe oder Eye-Candy, keinesfalls jedoch ein Tool, das unbedingt noetig sein sollte.

    Noch einige Hinweise:
    Die Ausgabe von Konsolenprogrammen kannst du dir in WinNT etc. in Ruhe durchlesen, wenn du sie in der Konsole startest - dann bleibt das Fenster naemlich offen.
    Fuer Fortgeschrittene gibt es in Batch-Dateien auch den Befehl "pause".
    Wenn du Probleme beim Assemblieren hast, koennen wir nur versuchen dir zu helfen, wenn du die genauen Fehlermeldungen, die verwendeten Assembler/Linker und die passende Codestelle nennst.

    So weit wuerde ich dir auch raten, es bleiben zu lassen und nach anderen Loesungsmoeglichkeiten zu suchen. Du hast augenscheinlich nicht nur keine Ahnung, wo genau der Fehler liegt und wie er zu beheben ist (Grundvoraussetzung!), sondern offenbar auch nicht die geringste Vorstellung von der Komplexitaet deines Vorhabens (du wirst hier schon mit mehreren Monaten rechnen muessen - mindestens).



  • Ich code schon seit einigen Jahren x86 Assembler...
    Das einzig sinnvolle was du machen kannst ist es, es bleiben zu lassen.
    Es ist zwar technisch nicht unmöglich, benötigt aber einen enormen Arbeitsaufwand der es wohl kaum wert sein wird.
    Und zwischen "einen Binary in ASM erzeugen" und "in ein anderes Binary erheblich Mengen an Code reinzupatchen" ist immernoch ein winziger Unterschied.



  • Schon klar schon klar.

    Aber warum sollte ich in der Konsole immer wieder kompilieren, linken und ausführen wenn das mit ner IDE mit einem Mausklick geht? So komm ich schneller voran.

    Bleibe nun bei WINASM aber nun hab ich das Problem mit "invalid object module".

    Könnt ihr mir nen Tipp geben? Habe als Projekt Console Application gewählt.
    Eine main procedure muss ja nicht zwingend eingebaut werden? Hat auch schon mit nem laben funktioniert, aber keine Ahnung.

    .MODEL tiny
    
    .data
    
    .code
    
    END
    

    Was schreibt man in das code segment? Hatte Anfangs

    _start:
    END _start

    geschrieben. Hat auch funktioniert. Doch nun eben der Fehler "invalid object module".

    MfG



  • Was fuer einen Assembler verwendest du mit dieser IDE und was genau bringt der fuer Fehler?

    BTW: Nur weil man keine IDE benutzt, heisst das nicht, dass man zum Compilieren jedes Mal in der Konsole rumtippseln muss. So ziemlich jedes brauchbare OS (ja, auch Windows 😉 ) kennt irgendeine Form von Shell-Skripten.

    Ich nehme uebrigens stark an, dass du Probleme haben wirst, DOS-Programme in dieser IDE zu uebersetzen... Merke: DOS!=Konsole.



  • DOS == 16bit ne?

    Jedenfalls möcht ich gleich 32bit coden.
    Benutze MASM32 mit WinAsm.

    LINK : warning L4017: /SUBSYSTEM : unrecognized option name; option ignored
    LINK : warning L4017: /RELEASE : unrecognized option name; option ignored
    LINK : warning L4017: /VERSION : unrecognized option name; option ignored
    LINK : warning L4017: /LIBPATH : unrecognized option name; option ignored
    LINK : warning L4017: /OUT : unrecognized option name; option ignored
    C:\WINASM\test.obj : fatal error L1101: invalid object module
    Object file offset: 1 Record type: 4c
    

    😕



  • Hm... Das kommt davon.
    Sieht so aus, als wuerde die IDE zumindest dem Linker falsche Optionen uebergeben. Wird ueberhaupt assembliert, oder nur gelinkt?
    Finde mal heraus, wo man die Optionen zum Linken/Assemblieren in dieser IDE einstellen kann und aendere sie der Kommandozeilensyntax entsprechend (die kannst du meist herausfinden, indem du die tools mit der Option /? in der Konsole startest).

    Zu deinem "Quellcode":
    32Bit-Programme benutzen idR. ein flat memory model - mit tiny wirst du da nicht weit kommen. Uebrigens solltest du nicht versuchen, mit einem DOS-Tutorial fuer 16Bit DOS-Programme (und ja, DOS kennt auch 32Bit-Programme - die haben aber auch nicht viel mit der Windows-Konsole zu tun) einfach so in die 32Bit Win-Konsolenprogrammierung einzusteigen. Das geht, wie gesehen, garantiert schief.
    Dann such dir besser gleich ein Tutorial fuer Windows, oder lies zumindest die Anleitung des Assemblers und entsprechende andere Quellen, damit du 100%ig verstehst, was in den Tutorials gemacht wird, und wie du das evtl. fuer Windows aendern musst.



  • ceplusplus@loggedoff schrieb:

    "wenn du die Sicherheitslücken kennst, dann solltest du doch wissen wie es geht"

    Hä? Also das ist nicht so einfach... Es handelt sich um einen Spieleserver. Jedoch hat jemand eine Möglichkeit gefunden, mehrfach gleichzeitig beizutreten und dabei die ID's und IP's anderer Spieler zu übernehmen, einschließlich des admins. Alle werden dann gekickt und ein "Unreleased players" fehler tritt beim Spiel als wie auch beim Server auf.

    Schreib einen neuen "Pseudoserver". Der nimmt die Daten genauso wie der alte Server entgegen, prüft, ob sie korrekt sind und leitet sie dann an denn alten Server weiter. Wenn irgendwelche Hackerdaten kommen, dann kannst du die rausfiltern. Das sollte viel einfacher sein, als assembler zu lernen.



  • Einfach, das Datenprotokoll des Spiels rauszufinden?
    Glaube ich weniger, da lern ich lieber ASM, hab ich mehr davon.

    Es ist in diesem Fall glaub ich sogar so, dass grade wenn keine Daten ankommen, ein servercrash entsteht.

    Also jeder Spieler hat eine player ID. Der server checkt anscheinend alle paar Minuten alle ID's durch. Kommt nun dieser Hacker in meinen Server, friert er anscheinend seine player ID auf seinem PC ein und bei der nächsten synchronisierung kann die player ID nicht mehr geholt werden, was in einem

    "Unreleased players: "

    und server down endet. Denn wenn ich ihn vom server kicken will, kommt gleich der error was ja auch auf eine nicht zu bekommende player ID hindeutet.

    Ich wüstte nicht, was helfen könnte, außer den server zu verändern.

    MfG



  • Also man kann schon 16Bit Dos Programme schreiben, übersetzen und unter Windows NT ausführen. Ist am Anfang auch deutlich einfacher als ein Win32 Programm in Assembler zu schreiben. Man kann bei den modernen Assemblern zwar sehr viele Komfort-Makros benutzen, aber du willst ja sicher erst einmal Assembler lernen und dann eine möglichst produktive Arbeit damit.


Anmelden zum Antworten