Beiträge von EBFE

    Ich dachte, du wolltest nur den "Konsolen" Kapitel in deinem Buch überspringen, weils eben langweilig ist ;)
    Sorry, für C# kenne ich nur das von Galileo http://openbook.galileocomputing.de/csharp/index.htm


    PS:
    Das mit den Konsolenapps kenne ich halt aus eigener Erfahrung - wir mussten mal TurboPascal machen, während die Parallelklasse mit Delphi rumhantiert hat. War natürlich erstmal frustrierend, weil man an den alten DOS-Programmen nichts vorzeigen konnte und die anderen immer mit schicken GUIs rüberkamen und angeben konnten :).
    Nur hat sich dann bei der Klausur herausgestellt, dass die "Delphi-Clicker" halt nicht wirklich was gelernt haben (au�er ihren GUIs). Seit dem denke ich eben so darüber, dass am Anfang ein toll aussehendes Programm zwar ein super Erfolgserlebnis ist, aber auch sehr sehr ablenkend vom Wesentlichen ;)


    Btw: falls dir die Motivation fehlt - es gibt jede Menge ziemlich guter Konsolenapps: SQL Datenbankenverwaltung/administrierung, NetCat, UPX ;), die ganzen kommandozeilentools von Linux/Windows. Lässt sich super in Skripten nutzen, weil man die Ein und Ausgaben problemlos zu anderen Programmen umleiten kann.

    Konsolenapps sind vor allem am Anfang wichtig, weil man sich auf das wesentliche konzentrieren kann ;). Klar, eine gute GUI sieht erstmal super aus und man hat ein Erfolgserlebnis. Aber leider ist es dann so, dass vor allem Anfänger sich auf das Zusammenklicken der GUI konzentrieren und nicht auf die Programmierung (Codegliederung, Variablenbennenung, Trennung des Benutzerinterfaces und der Programmlogik, "divide and conquer" Prinzip usw). Da wird gerne mal schnell Codewirrwarr aus GUI-Builder generiertem und eigenem Code erzeugt - hauptsache die schicke GUI läuft und tut was ;).


    Und am Ende hat man das mit der Programmierung nicht so wirklich verstanden - und ohne Basics bleibt es dann halt bei kleineren Programmen ;)

    Nop0x90;21083 schrieb:

    kann man dann in nasm dafür variablen benutzen? Und dann direkt den (optimierten) bin-code angucken, wo das ganze dann mit registern ersetzt wurde?


    Nee, das wäre dann ja schon hochsprachenmä�ig ;).
    Was ich mit Variablen meinte ist sowas bei MASM:

    Code
    1. DumpChildProcess proc process_id:DWORD, base:DWORD
    2. LOCAL h_snap:DWORD
    3. LOCAL proc_entry:PROCESSENTRY32
    4. LOCAL dumpcounter:DWORD
    5. mov dumpcounter,0
    6. invoke CreateToolhelp32Snapshot,TH32CS_SNAPPROCESS,0
    7. mov h_snap,eax


    das PROC Makro rechnet z.B die Grö�e der lokalen Variablen zusammen und erstellt dann automatisch den Stackframeaufbau:

    Code
    1. push ebp
    2. mov ebp,esp
    3. sub esp, VARSIZE


    Die Variablennamen sind quasi aliase für relative Speicheradressen, also in etwa so vorstellbar:

    Code
    1. #define h_snap EQU [EBP-4]
    2. #define proc_entry EQU [EBP-8]
    3. und die beiden Parameter werden dann als
    4. #define process_id EQU [EBP+4]
    5. #define zweiterparameter EQU [EBP+8]


    Im Gegensatz zum Compiler gibt der Assembler hier nicht selbstständig die Reihenfolge der Variablen im Speicher vor, kürzt nichts weg usw. Man benutzt einfach nur Bequemlichkeitshalber "Mnemoniks" für einzelne Speicherbereiche und macht imho weniger Fehler. Dafür gibts ja auch die vielen Flamewars von wegen MASM vs. NASM vs. FASM usw - weil man in MASM dank Makros ja kein "echter" Asm-programmierer mehr ist ;)
    Als ich NASM machen musste, habe ich ehrlich gesagt diesen Komfort vermisst und selber mit DEFINE die Variablenbezeichnungen so wie oben gemacht (eventuell etwas anders geschrieben, die Syntax habe ich jetzt nicht im Kopf), damit ich mich auch nicht vertue (au�erdem ist "MOV h_snap, eax" ...viele Zeilen später ... "PUSH h_snap; CALL..."
    imho viel besser lesbarer, als "MOV dword ptr [EBP-4] ... push dword ptr[EBP-4]" )
    Jedenfalls - der Unterschied zwischen OllyAsm und "echt" ist halt Variablennutzung (lokal oder global über XYZ DD 0 definiert) im Sinne von Speicheradresse=Namensalias/Label und dass man Code leichter umschreiben kann.



    Zum Editor: ich nutze aus Gewohnheit RadASM - dieser kann mit MASM, NASM, FASM umgehen, bietet Syntaxhighliting, Autoergänzung und Projektverwaltungshilfen. Allerdings sollen inzwischen mehrere gute Alternativen verfügbar sein, wie z.B WinASM Studio.

    hier mal der vollständigkeitshalber komplette Linkoptionen:

    Code
    1. \masm32\bin\ml /c /coff /nologo keygen.asm
    2. \masm32\bin\Link /SUBSYSTEM:WINDOWS /FILEALIGN:512 /MERGE:.rdata=.text /MERGE:.data=.text /section:.text,RWE keygen.obj > nul


    Zum Thema: Stub.exe? Ich dachte du willst "richtig" packen/entpacken ;)
    Zu der Bitsequenz: gibt einige Möglichkeiten. Kommt darauf an, wie die Bits "vorliegen".
    Denn irgendwie musst du ja diese generieren/speichern.
    Angenonnem, du hast erstmal die Sequenz in einem Zwischenschritt als Bytes vorliegen (wobei jedes Byte ein Bit darstellen soll). Dann kannst du einfach die Bytes einzeln durchgehen und über BTS setzen und BT abfragen (natürlich gehen auch AND/OR Operationen, aber bei BT/BTS kann man mit Indexen arbeiten).
    Hier werden BT/BTS beschrieben, eventuell findest du auch noch andere nützliche Operationen:
    http://home.comcast.net/~fbui/intel_b.html

    1)du kannst in MASM alle Sections "mergen":
    \masm32\bin\Link /SUBSYSTEM:WINDOWS /MERGE:.rdata=.text
    (merge dann für weitere Sections wiederholen)
    2)unter 512 bytes pro Section wirst du nun mal nicht kommen - stichwort "FileAlignment" ;)
    (btw: hast komische Linkoptionen - denn per Default sollte Filealignment=512 sein und damit die Sections auch deutlich kleiner als 1024).


    Da ich bei "Stubcode" von einem richtigen Stubcode ausgehe (und nicht der üblichen Stub.exe) ist es hier imho eine Geschmackssache - wobei ich eher zu NASM tendieren würde (weil die Unterstützung/Doku einfach besser ist). Damit kann man auch direkt Bin-Code erzeugen, anstatt diesen mit dem Hexeditor aus MASM-Exen herauszurei�en. Masm schätze ich eigenltich für die guten Makros, Localvariablenverwaltung (in "purem" NASM so nicht vorhanden oder von mir übersehen worden ;) ) und natürlich die ganzen WinAPI/Structs "�bersetzungen".

    Nunja, irgendwie sind die Regeln etwas sehr straff eingestellt:
    1-Tab, Seite ausladen lassen usw. Hilft irgendwie auch nicht wirklich. 1-2 Aufrufe und das wars dann. Wollte schonmal vor paar Stunden in dem Thread posten. Allerdings dann direkt "Timeout" bekommen, obwohl nur das Posting abgeschickt wurde.

    Naja, die AVs müssten dann theoretisch entweder einen eigenen JS-Interpreter mitbringen und jegliche Skripte vorher ausführen. Das würde sie auch dazu zwingen zum einen: einen guten HTML Parser einzubinden und zum anderen würde das doch auf die Performance gehen. Anderseits können sie auch nicht permanent den Speicher der Anwendungen scannen (wiederum Performanceproblem). Und da gilt auch der einfache Grundsatz: in der "normalen" NichtIT-�ffentlichkeit ist die Problematik des JS kaum bekannt. Sprich man muss viel Geld in die Umsetzung eines solchen Filters investieren, kann aber mit dem Feature kaum werben. Und da beschränken die sich doch (zumindest afaik) bis jetzt auf einfache Signaturenscans der HTTP Daten.

    Av0c4d0 schrieb:

    einfach erstmal 90% der Szene ausschliessen


    Und wo ist jetzt das Problem auf diese 90% zu verzichten ;) ?
    Was kommt denn von diesen Leuten zurück? Nichts. Und einfach nur möglichst viele User in sein Forum zu bekommen ist eben nur ein neuer "1337Crew" Forum.

    Zu *früher war alles besser*:
    früher (vor 8 Jahren) sah es nicht wirklich anders aus ;).
    Ok, es hatten um Grö�enordnungen weniger Leute Inetzugang und die ganzen "kleinkriminellen-gangsta" mussten andere noch im RL abzocken.
    Klar, prozentual gesehen gabs in vielen Bords mehr fähige Leute als jetzt- aber auch nur weil das Inet noch teuer war und nur wer Interesse hatte sich auch einen Zugang besorgte/leistete.
    Heute hat jeder "Depp" Inetzugang und die "Möchtegerngangsta" sind halt auf Inetabzocke umgestiegen. Genau von den Leuten kommen auch die Sprüche "Boa ey, isser dämlich ey/Jeder, der mit seinem Wissen kein Profit macht ist ein Vollhonk!!1" wenn man auf "oldschool" Art etwas für non-profit macht oder Sourcen veröffentlicht.


    In absoluten Zahlen gemessen bezweifele ich allerdings, dass deutlich mehr Leute interesse haben, sich wirklich Wissen anzueignen als früher. Also Leute ohne "Skillz" die wirklich was lernen wollen und werden, genauso wie Leute, die sich was angeeignet haben.
    D.h die Zielgruppe ist imho immer noch recht klein. Und wirklich interessant wäre es imho nur, wenn deine Plattform folgende Sachen umsetzen würde:
    - keine Kleinkriminellen, die sich nur bereichern wollen
    - keine Leecher, die die Sourcen/Diskussionen nutzen, um damit Profit zu machen
    - kein Carder/Faker/Spammer "Abschaum", da es kaum was mit Hacking, sondern viel mehr mit dem üblichen RL-Betrügen zu tun hat.
    - möglichst keine Leute, die glauben, dass X-Vics/stealed Accounts usw. sie zu pros machen.
    - keine Kiddies, die gerade "hackers" oder "23" gesehen haben und nach 2 Wochen keine Lust mehr haben (bei solchen Leuten hat man nun mal keinen Bock zu helfen, weils Zeitverschwendung ist).
    Also ein bisschen Richtung "alte" Werte - dass man nicht für X-Vics/exploitet Boards usw sondern vorallem für das vorhandene Wissen respektiert wird ;)
    Andererseits soll auch wirklich interessierten ein Einstieg ermöglicht werden.
    Notfalls eben mit vielen Mods, die manuell User aussortieren. Invites &Co halte ich hier für den falschen Weg.
    Nichts für ungut, falls es nicht deinen Zielen entspricht :)

    Man kann aber mehrere Verfahren kombinieren ;).
    Und fälschen lässt sich die HDDSerial ja auch.
    Sonst gibt es eine relativ einfache und sichere Methode - Verschlüsselung. Der Key wird aus HardwareKey gebildet, so dass der Leaker auch die ganzen Hardwarewerte weitergeben müsste (denn imho cracken nur die wenigsten Leaker die Tools selbst ;) ). Wenn man WindowsKey/ProduktID miteinbezieht, sollte es zumindest die Hemmschwelle zum weitergeben erhöhen.

    Hm, ich hab im Moment paar Ideen in diese Richtung. Allerdings frage ich mich, warum alle so auf Hardware fixiert sind:
    Was wäre denn wichtig bei einer Protection - dass der User auch nach Neuformatierung das Tool nutzen kann?
    Und was spricht dagegen, auch an den Windowskey zu binden?

    Ehrlich gesagt kann ich AT&T Syntax nicht ausstehen (vielleicht ja Gewöhnungsache, aber ... ;) ). Eventuell lohnt es sich, externe Routinen (NASM) einzubinden oder auf intel syntax umzustellen?
    Sowas müsste gehen:


    da wird sowas generiert:

    GCC inlineasm ist nicht gerade übersichtlich ;). Probiers mal mit "=m" oder "m". Jedefnalls ergibt das "PUSH %X" mit "=r" irgendwie keinen Sinn, sofern der InlineAssembler da nicht automatisch ein MOV generiert. Pushen kann man Speicherwerte durchaus direkt (PUSH DWORD PTR [EBP-X]). BTW: bei stdcall(Winddows) brauchst du nur EBX, EDI, ESI zu sichern.

    2 Programme, die sich gegenseitig überwachen und ggf. starten. �berwachungsinterval z.B 10ms. Wenn man das anständig umsetzt, dürfte die CPU Last auch nicht wirklich auffallend steigen.

    Meinst du eher "Protection" oder Authentifizierung? Zu Protection habe ich mal hier meinen Senf abgegeben:
    http://board.scenecoderz.com/showpost.php?p=13223&postcount=10
    Prinzipiell: HardwareID auslesen und mit Keyprüfung so wie in dem Post vorgeschlagen verknüpfen.
    Mehrere Checks machen. Der erste Check sollte (unvollständige) ID prüfen und eine Meldung ausgeben. Weitere Checks sollten nichts mehr tun und z.B irgendwelche Funktionen stillschweigend blockieren. Das sollte den Gro�teil der "ich hab 'CrackersKit 2.X' runtergeladen!!!" abhalten ;)

    Original "RunPE":
    www.security.org.sg/code/loadexe.html
    Das wäre eine Möglichkeit. Es wurde nur nach C/VB/Delphi portiert und wird genutzt, weils am einfachsten ist. Warum es soviele VB6 "Crypter" gibt? Tja, rate mal, welche die verbreitestete Sprache in den Kinderboards ist ;). RunPE Modul kopieren, bisschen umgestalten, GUI zusammenklicken - fertig ist ein "Crypter".


    Dazu gibts noch dieses Prinzip (was man üblicherweise au�erhalb der "Szene" unter Protektor versteht):
    http://eddysblog.phpnet.us/blog/2008/09/29/coding-a-crypter/
    http://eddysblog.phpnet.us/blo…pter-exe-crypter-release/


    Au�erdem kann man bei NET auch noch Code direkt laden (braucht also für NET Zeug keine besonderen Umstände):
    http://www.codeproject.com/KB/cs/LoadExeIntoAssembly.aspx

    Slayer616;16849 schrieb:

    Warum eig $13140000? Die IMB muss doch eig so hoch wie möglich sein um Komplikationen vorzubeugen... (oder habe ich unrecht?)


    Naja, wenn man keinen Bock hat, eine adressunabhängige Injection zu schreiben, legt man eben eine unübliche Imagebase an und nutzt den "kompletten" Code. Wobei dann bei "normalanwendungen" eine DLL eher die einfachste Methode wäre. AFAIK gehen adressunabhängige Sachen auch in C/Delphi (wenns auch manchmal etwas hässlich ist).