SourceCode wiederherstellen

    • Offizieller Beitrag

    Hi,

    ich habe eine Funktion geschrieben, die mir schnell erlauben soll meinen Code wiederherstellen zu können, wenn ich es möchte. Dafür habe ich das Skript in Scite hinterlegt.

    SciteUser.properties

    Code
    # 37 SourceCode
    command.37.*.au3="$(autoit3dir)\beta\autoit3.exe" "$(SciteDefaultHome)\[color=#ff0000]HIER DER PFAD ZUM SKRIPT!!![/color].au3" "$(FilePath)"
    command.name.37.*.au3=SourceCode
    command.save.before.37.*.au3=1
    command.is.filter.37.*.au3=1
    command.shortcut.37.*.au3=Ctrl+Shift+Alt+O

    Folgendes Skript wird dann gestartet:

    [autoit]

    #include<GUIConstants.au3>
    ; Get SciTE DirectorHandle
    Global $GUI = GUICreate('SourceCode')
    Global $SciTECmd, $My_Dec_Hwnd, $Scite_hwnd
    Global $Scite_hwnd = WinGetHandle("DirectorExtension")
    GUIRegisterMsg($WM_COPYDATA, "MY_WM_COPYDATA")
    Global $My_Dec_Hwnd = Dec(StringTrimLeft($GUI, 2))

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

    _restoreSourceCode("Mega.exe", 'Autoit')

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

    Func _restoreSourceCode($scriptName = 'source.exe', $passphrase = '')
    If Not ProcessExists('SciTE.exe') Then Exit (0)
    Local $opt = Opt('WinTitleMatchMode', 4)
    SendSciTE_Command($My_Dec_Hwnd, $Scite_hwnd, "askfilename:")
    $SciTECmd = StringReplace($SciTECmd, '\\', '\')
    $FilePath = StringTrimLeft($SciTECmd, StringInStr($SciTECmd, ':', Default, 3))
    Opt('WinTitleMatchMode', $opt)
    SendSciTE_Command($My_Dec_Hwnd, $Scite_hwnd, "menucommand:106")
    FileCopy($FilePath, 'c:\TEMP\SourceCode.au3', 1)
    $h_file = FileOpen($FilePath, 1)
    If $h_file = -1 Then
    SendSciTE_Command($My_Dec_Hwnd, $Scite_hwnd, "output:+> Error open file: " & $FilePath)
    Exit
    EndIf
    SendSciTE_Command($My_Dec_Hwnd, $Scite_hwnd, "menucommand:106")
    Sleep(1000)
    FileWrite($h_file, FileRead($h_file) & @CRLF)
    FileWrite($h_file, "; ************************************************************************************" & @CRLF)
    FileWrite($h_file, "; SourceCode restore function " & @CRLF)
    FileWrite($h_file, "_restoreSourceCode()" & @CRLF & @CRLF)
    FileWrite($h_file, "Func _restoreSourceCode() " & @CRLF)
    FileWrite($h_file, @TAB & "Local $passphrase = '" & $passphrase & "'" & @CRLF)
    FileWrite($h_file, @TAB & "If @Compiled And @ScriptName == " & "'" & $scriptName & "'" & " Then " & @CRLF)
    FileWrite($h_file, @TAB & @TAB & "If $passphrase <> '' Then " & @CRLF)
    FileWrite($h_file, @TAB & @TAB & @TAB & "Local $re = InputBox('SourceCode recovery', 'Please, type in the password : ', '')" & @CRLF)
    FileWrite($h_file, @TAB & @TAB & @TAB & "If $re == '" & $passphrase & "'Then " & @CRLF)
    FileWrite($h_file, @TAB & @TAB & @TAB & @TAB & "FileInstall('C:\TEMP\SourceCode.au3', @DesktopDir &'\SourceCode.au3', 1)" & @CRLF)
    FileWrite($h_file, @TAB & @TAB & @TAB & @TAB & "MsgBox(64, 'Information', 'SourceCode restored!', 5)" & @CRLF)
    FileWrite($h_file, @TAB & @TAB & @TAB & "Else" & @CRLF)
    FileWrite($h_file, @TAB & @TAB & @TAB & @TAB & "MsgBox(16, 'Error', 'Wrong password!', 5)" & @CRLF)
    FileWrite($h_file, @TAB & @TAB & @TAB & "EndIf" & @CRLF)
    FileWrite($h_file, @TAB & @TAB & "EndIf" & @CRLF)
    FileWrite($h_file, @TAB & "EndIf" & @CRLF)
    FileWrite($h_file, "EndFunc" & @CRLF)
    FileWrite($h_file, "; ************************************************************************************")
    FileClose($h_file)
    EndFunc ;==>_restoreSourceCode

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

    ; Send command to SciTE
    Func SendSciTE_Command($My_Hwnd, $Scite_hwnd, $sCmd)
    $sCmd = ":" & $My_Dec_Hwnd & ":" & $sCmd
    Local $CmdStruct = DllStructCreate('Char[' & StringLen($sCmd) + 1 & ']')
    DllStructSetData($CmdStruct, 1, $sCmd)
    Local $COPYDATA = DllStructCreate('Ptr;DWord;Ptr')
    DllStructSetData($COPYDATA, 1, 1)
    DllStructSetData($COPYDATA, 2, StringLen($sCmd) + 1)
    DllStructSetData($COPYDATA, 3, DllStructGetPtr($CmdStruct))
    DllCall('User32.dll', 'None', 'SendMessage', 'HWnd', $Scite_hwnd, _
    'Int', $WM_COPYDATA, 'HWnd', $My_Hwnd, _
    'Ptr', DllStructGetPtr($COPYDATA))
    EndFunc ;==>SendSciTE_Command

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

    ; Received Data from SciTE
    Func MY_WM_COPYDATA($hWnd, $msg, $wParam, $lParam)
    Local $COPYDATA = DllStructCreate('Ptr;DWord;Ptr', $lParam)
    $SciTECmdLen = DllStructGetData($COPYDATA, 2)
    Local $CmdStruct = DllStructCreate('Char[255]', DllStructGetData($COPYDATA, 3))
    $SciTECmd = StringLeft(DllStructGetData($CmdStruct, 1), $SciTECmdLen)
    EndFunc ;==>MY_WM_COPYDATA

    [/autoit]

    So long,

    Mega

  • Für was ist das jetzt genau gut? Ist das sio was wie Dekompilieren oder so was wie "Undo" ?

    Projekte: Keine größeren (und fertigen)
    Gegen Internetzensur:
    https://epetitionen.bundestag.de/index.php?acti…s;petition=3860
    (Zeichnungsfrist abgelaufen)
    __________________________________________________________________________________________________________________________________
    Dieser Beitrag wurde bereits 264 mal editiert, zuletzt von »Fast2« (30. Februar 2009, 12:99)

    • Offizieller Beitrag

    Hi,

    hmmh vielleicht hätte ich das dazu schreiben sollen. Also das Skript macht eigentlich nicht viel. :P
    Mich hat es allerdings gestört, dass man eine exe nicht mehr dekomilieren kann. Dieses Skript bietet auf Kosten von Speicherplatz eine Hintertür. Es wird einfach die au3 kopiert und als FileInstall in den Quellcode übernommen.

    Damit die au3 Datei nicht immer extrahiert wird, habe ich eine kleine Sicherheit eingebaut. Hierfür muss das Skript umbenannt werden und anschließend ein Passwort eingegeben werden. Ist dies erfolgreich wird die au3 auf die Festplatte entpackt.

    Prinzip klar?

    So long,

    Mega

  • Cool :thumbup: das nenn ich doch mal nützlich (mich stört auch dass man nicht mehr Dekompilieren kann) :thumbup:

    Projekte: Keine größeren (und fertigen)
    Gegen Internetzensur:
    https://epetitionen.bundestag.de/index.php?acti…s;petition=3860
    (Zeichnungsfrist abgelaufen)
    __________________________________________________________________________________________________________________________________
    Dieser Beitrag wurde bereits 264 mal editiert, zuletzt von »Fast2« (30. Februar 2009, 12:99)

  • wenns nicht ghet, würd ich die au.3 erst noch verschlüsseln und danach wieder entschlüsseln. Kann man nicht sonst die Resource-Datei einfach extrahieren?

    //Edit: Ne, mit reshacker kann ich doch nichts finden.

    Einmal editiert, zuletzt von progandy (14. Dezember 2007 um 18:50)