Programm / Script sicherheit -webzugriff -Dekompilier -Memory manipulationen etc

  • Schönen Guten abend und^^

    Hier mal eine frage die mich schon lange interessiert.
    Also: Könntet ihr mal wenn es nicht zu umständlich ist alle möglichen methoden posten die für sicherheit des scriptes dient?
    Mich Interessiert mom. am meisten wie man(Mein Programm) herausfindet ob ein frendes programm unerlaubte zugriffe verübt, also Memory manipulationen.
    Natürlich weiß ich auch dass es gute script verschlüsseln (obfuscator) gibt... aber auch das es genausogute Entschlüssler gibt.
    Trotzdem hoffe ich ihr kennt einige tipps/tricks/funktionen die das script Sicherermachen.

    Sind TV-Quizfragen zu einfach? A) Ja B) Harry Potter

    Spoiler anzeigen

    Ich gebe zu dieser Post hat wahrscheinlich nicht viel geholfen,
    aber ich versuche wenigstens zu helfen :rolleyes:

  • Im Bezug auf Autoit ist die Antwort: Garnicht.

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

  • Ich rede nicht über vollkommende sicherheit^^

    Sind TV-Quizfragen zu einfach? A) Ja B) Harry Potter

    Spoiler anzeigen

    Ich gebe zu dieser Post hat wahrscheinlich nicht viel geholfen,
    aber ich versuche wenigstens zu helfen :rolleyes:

  • Na dann sollen die entwickler von autoit sich was einfallen lassen :S

    Sind TV-Quizfragen zu einfach? A) Ja B) Harry Potter

    Spoiler anzeigen

    Ich gebe zu dieser Post hat wahrscheinlich nicht viel geholfen,
    aber ich versuche wenigstens zu helfen :rolleyes:

  • Ändert sich dann mit Hoch- oder Maschienensprache auch nicht mehr, nur der Aufwand wird idR größer. Jedes Programm kann reverse engineered werdem. "Security through obscurity" ist nicht nur bei der Kryptographie, sondern auch bei Programmen an sich letztendlich prizipbedingt unsicher.

  • Obusfactor,
    Themida

    Ja, dadurch kannst du Sicherheit wenigstens erhöhen.

    Oder ist es leicht einen deobusfactor zu schreiben?

  • Nur das problem bei Themida ist das es dann heufiger als virus erkannt wird soweit ich weis.
    Aber mein eigentliches problem ist das ich nicht will das man bei mein jetztigen projekt die daten manipuliert.
    Deswegen wollte ich ja eigentlich fragen ob einer eine Idee hat wie wie das programm erkennt das es manipuliert wurde. (Memory überwachung?)
    Aber ich weis zumindestens das es mit anderen sprachen geht. wer weis vlt hat ja mal jmd eine dll dazu geschrieben die man auch in autoit einbauen könnte...
    Naja aber ich weis auch das es bestimmt nicht so einfach ist wie in autoit sowas zu erstellen...

    Sind TV-Quizfragen zu einfach? A) Ja B) Harry Potter

    Spoiler anzeigen

    Ich gebe zu dieser Post hat wahrscheinlich nicht viel geholfen,
    aber ich versuche wenigstens zu helfen :rolleyes:

  • Da du Autoitcode nach belieben manipulieren kannst, kannst auch eine solche Prüfung einfach ausbauen. Und dabei ist es egal ob es direkt im Code ist oder eine externe dll.

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

  • Obfuscator kannst du abhaken, wenn du etwas Tempo brauchst.
    Denn der verwurschtelt alles etwas, sodass AutoIt mehr Operationen ausführen muss als üblicherweise um das gleiche zu erreichen.

    Bei großen Skripten passiert es auch schonmal, dass man enorme Startzeiten hat, oder das Skript danach garnicht mehr startet.

    Alles in AutoIt geschriebene kann ohne weiteres wiederhergestellt werden.

    Möglichkeiten die ich kenne sind nur:
    - InlineASM: Jeder der davon keine Ahnung hat wird nix damit anfangen können. Die die das selbst mal gemacht haben sind aber vermutlich in der Lage den Code zu lesen. Verstehen ist je nach Komplexität so eine Sache^^
    - Dlls includen. Man bastelt sich einige Funktionen (die man schützen will) in C++ und ruft sie per Dllcall auf. Die Dll kann man als HexString/Base64 einbauen. Damit hat man glaube ich die höchste Sicherheit... 100% wird sie aber nie erreichen.

    lg
    M

  • Danke für die antworten schonmal ;D
    Ja nur leider... hab ich mit C/C++ wenig kenntnisse und ich weis nicht wie ich ansatzweise dort so ein komplexes script erstellen kann.
    Autoit is ja auch einfach gehalten, ich kenn auch kein gutes c++ forum oder eine liste die alles schön mit beispielen erklährt wie alles funktioniert.

    Sind TV-Quizfragen zu einfach? A) Ja B) Harry Potter

    Spoiler anzeigen

    Ich gebe zu dieser Post hat wahrscheinlich nicht viel geholfen,
    aber ich versuche wenigstens zu helfen :rolleyes:

  • Danke für die antworten schonmal ;D
    Ja nur leider... hab ich mit C/C++ wenig kenntnisse und ich weis nicht wie ich ansatzweise dort so ein komplexes script erstellen kann.
    Autoit is ja auch einfach gehalten, ich kenn auch kein gutes c++ forum oder eine liste die alles schön mit beispielen erklährt wie alles funktioniert.


    Falls es bei euch in der Nähe eine Bilbiothek hat, kannst du dich da mal umgucken. Oftmals gibt es dort ein paar Bücher über C/C++.

  • Naja danke^^ wenn ich zeit hab kann ich ja mal gucken.

    Noch was, In mein jetztigen script passiert wenn ich es ausführe bzw. wenn es aktiv wird heufig ein "hänger"
    Ich glaube es liegt an den "kurzen" ~50 - 2000 adlibregister, die aber nötig sind.
    Gibt es eine möglichkeit das problem zu lösen?
    Ich benutze schon eine UDF namens: ReduceMemory die aber nicht viel hilft.
    Das script kann ich nicht gut posten da es schon sehr lang ist und ich nicht will das es in die öffentlichkeit kommt. (noch nicht)

    Sind TV-Quizfragen zu einfach? A) Ja B) Harry Potter

    Spoiler anzeigen

    Ich gebe zu dieser Post hat wahrscheinlich nicht viel geholfen,
    aber ich versuche wenigstens zu helfen :rolleyes:

  • Adlib sollte man in größeren Skripten nicht einsetzen.
    Adlib "mogelt" den registrierten Code unter den eigentlich gerade laufenden Code.
    Der verantwortungsbewusste Programmierer weiß aber genau wo und wann etwas ausgeführt wird.
    Man kann also einfach einen Static timer in eine Funktion einbauen und diese nur ausführen lassen, wenn eine gewisse Zeit überschritten ist (z.B. 200ms). Ansonsten gibts nen direkten return. Das hält das Skript im Prinzip nicht großartig auf und lässt die Funktion immer im gleichen Programmteil ablaufen.

    Beispiel
    [autoit][/autoit] [autoit][/autoit] [autoit]

    _Main()

    [/autoit] [autoit][/autoit] [autoit]

    Func _Main()

    [/autoit] [autoit][/autoit] [autoit]

    Local $i

    [/autoit] [autoit][/autoit] [autoit]

    While Sleep(10) ; Die Schleife läuft ziemlich schnell...
    $i = _TimerFunc(Random(2, 4), Random(2, 4), Random(2, 4)) ; i hat aber nur ca. jede Sekunde einen Wert.
    If $i Then ConsoleWrite($i & @CRLF) ; hat i mal einen Wert wollen wir den auch wissen !
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc ;==>_Main

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _TimerFunc($a, $b, $c)
    Local Static $Timer = TimerInit() ; Timer deklarieren
    If TimerDiff($Timer) < 1000 Then Return ; Wenn die Zeit noch nicht erreicht ist -> Return -> Kaum Zeitverlust durch den unnötigen Funktionsaufruf

    [/autoit] [autoit][/autoit] [autoit]

    ;### Funktion
    Local $iRet = 0

    [/autoit] [autoit][/autoit] [autoit]

    $iRet = $a ^ 3
    $iRet *= $b
    $iRet += $c
    $iRet = Int($iRet ^ 0.5)

    [/autoit] [autoit][/autoit] [autoit]

    ; usw. Was auch immer man will...
    ;###

    [/autoit] [autoit][/autoit] [autoit]

    $Timer = TimerInit() ; Vor dem Return den Timer neu einstellen
    Return $iRet
    EndFunc ;==>_TimerFunc

    [/autoit]


    Das ist natürlich nur meine subjektive Einstellung zu der Sache. Es kann sein, dass jemand etwas weiß, was ich nicht weiß und eine wesentlich effektivere Lösung hat.

    lg
    M

  • Vielen dank für die mühe.
    wenn ich fertig mit mein script bin werde ich es mal einmal umbauen und gucken ob es mit deiner variation besser läuft, aber ich denke schon^^
    da muss ich aber einiges umdenken, wird aber schon gehen.
    Praktischer währs wenn man verschiedene "Channel" in autoit einbauen könnte(also verschiedene scripts auf einmal laufen lassen) die auch untereinander daten austauschen können.
    aber trotz. ein dickes lob an die Autoit entwickler, so ein gutes programm kostenlos find ich schon toll^^ ;D ich hoffe das es eine weitere version geben wird^^
    naja somit hätte sich eig. alles geklährt^^ trotz. wenn einer was weis was zum thema passt, könnt ihr es posten ^^

    Sind TV-Quizfragen zu einfach? A) Ja B) Harry Potter

    Spoiler anzeigen

    Ich gebe zu dieser Post hat wahrscheinlich nicht viel geholfen,
    aber ich versuche wenigstens zu helfen :rolleyes: