Debuggen

06/11/2010 17:51 mipez#1
So, wie, wo, was?
Ich hab erfahren das es möglich ist, nur nicht wie xD
So denn, kann man das mit Standart-Funktionen lösen oder gibts ne UDf.
Am besten wäre n kleines Tut, oder n paar hingeklatschte Snippets zum analysieren^^
06/11/2010 17:57 HardCore.1337#2
Es gibt i.wo im Internet ein Programm, aber ich weiß gerade nicht wo man downloaden kann.
06/11/2010 18:05 mipez#3
Quote:
Originally Posted by HardCore.1337 View Post
Es gibt i.wo im Internet ein Programm, aber ich weiß gerade nicht wo man downloaden kann.
Was will ich mit nem Download? Selbst ist der Mann (oder Frau, manchmal nicht erkenntlich)!
06/11/2010 21:33 AMrK#4
Mhh... setz einfach nach jedem Befehl in Autoit ein
PHP Code:
If @Error Then _FileWriteLog(@ScriptDir '\error.log'"Error #" String(@error) & " in Zeile #"String(@ScriptLineNumber-1) & "! Extended: " String(@extended)) 
und schon haste den perfekten @Error-Logger ^^ das klappt natürlich nur, wenn du sauber programmiert hast und nicht son schwachsin wie das hier gemacht hast:
PHP Code:
Local $aArray[2]
MsgBox(0""$aArray[99]) 
^^
Aber dafür habe ich natürlich auch ne kleines Script... funktioniert per stdoutread:
PHP Code:
Func _AutoItErrorHandler()
    If 
StringInStr($CmdLineRaw"/AutoIt3ExecuteScript"Then Return
    
Local $sErrorMsg ""
    
Local $sRunLine = @AutoItExe ' /ErrorStdOut /AutoIt3ExecuteScript "' & @ScriptFullPath '"'
    
Local $iPID Run($sRunLine, @ScriptDir04)
    
ProcessWait($iPID)
    While 
1
        $sErrorMsg 
&= StdoutRead($iPID)
        If @
error Then ExitLoop

        Sleep
(1)
    
WEnd
    
If $sErrorMsg "" Then Exit
    
MsgBox(262144+48"AutoIt3 Error Message"_
        StringFormat
("Program Terminated <%s>.\n\nError Message:\n\n%s\n\n" _
            
"Please report about this bug to the author, sorry for the inconvenience! :( ", @ScriptName$sErrorMsg))
    Exit
EndFunc 
Einfach beim start callen...
PHP Code:
#NoTrayIcon
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Run_AU3Check=n
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****


_AutoItErrorHandler()

MsgBox(0,"","")

MsgBox(0"" ;This is meant to produce an error !


Func _AutoItErrorHandler()
    If 
StringInStr($CmdLineRaw"/AutoIt3ExecuteScript"Then Return
    
Local $sErrorMsg ""
    
Local $sRunLine = @AutoItExe ' /ErrorStdOut /AutoIt3ExecuteScript "' & @ScriptFullPath '"'
    
Local $iPID Run($sRunLine, @ScriptDir04)
    
ProcessWait($iPID)
    While 
1
        $sErrorMsg 
&= StdoutRead($iPID)
        If @
error Then ExitLoop

        Sleep
(1)
    
WEnd
    
If $sErrorMsg "" Then Exit
    
MsgBox(262144+48"AutoIt3 Error Message"_
        StringFormat
("Program Terminated <%s>.\n\nError Message:\n\n%s\n\n" _
            
"Please report about this bug to the author, sorry for the inconvenience! :( ", @ScriptName$sErrorMsg))
    Exit
EndFunc 
MfG
06/11/2010 22:37 kknb#5
msgbox, tooltip, consolewrite, mehr braucht man für autoit nicht!
06/11/2010 23:04 mipez#6
Quote:
Originally Posted by kknb View Post
msgbox, tooltip, consolewrite, mehr braucht man für autoit nicht!
Zum debuggen hm? Ich rede von Debuggern wie ollydbg etc.^^
06/11/2010 23:30 kknb#7
ah ok, hab die anderen posts net gelesen und der startpost war eher zweideutig :)
06/12/2010 10:22 Shadow992#8
Quote:
Originally Posted by mipez View Post
Zum debuggen hm? Ich rede von Debuggern wie ollydbg etc.^^
Klar geht das , einfach alles rausnoppen was stört ...
Aber warum willste es debuggen , es gibt doch decompiler ...
06/12/2010 10:48 | Moep |#9
Dein Request is sowas von nichtssagend, sry.
06/12/2010 11:56 mipez#10
Also, ich hab nen Client von nem Spiel. Der lädt automatisch nen Hackshield. Und um genau das zu verhindern, muss ich n paar Calls jumpen. Mit ollydbg kein Problem, aber ich würde gerne wissen wie man das mit AutoIt realisiert.
06/12/2010 15:55 | Moep |#11
Achso...
Wieso Patched du nicht die modifizierte exe? Du kannst auch ne dll schreiben für die jumps und diese dann mit autoit ( or what else) callen. Soweit zur Theorie, für genauere Infos müsstes du die Profis fragen.
06/12/2010 16:06 mipez#12
Quote:
Originally Posted by | Moep | View Post
Achso...
Wieso Patched du nicht die modifizierte exe? Du kannst auch ne dll schreiben für die jumps und diese dann mit autoit ( or what else) callen. Soweit zur Theorie, für genauere Infos müsstes du die Profis fragen.
Hm, für ne dll reicht mein C-Wissen nich aus (ich hänge noch bei cout und cin rum xD).
Ne dll mit AutoIt zu injecten is ja einfach :x

Aber mal so, gibt's überhaupt Grundbefehle für's Debuggen?
06/12/2010 16:09 | Moep |#13
Naja, is ja im Grunde "nur" Assembly. Schau mal [Only registered and activated users can see links. Click Here To Register...].
06/12/2010 16:22 MrSm!th#14
Quote:
Originally Posted by mipez View Post
Zum debuggen hm? Ich rede von Debuggern wie ollydbg etc.^^
Ein Debugger in Autoit ist nicht/nur schwer möglich.

Du redest von einem Patcher, das macht man doch mit eurer NomadMemory oder wie das heißt.
Nop hat den Wert 0x90
06/12/2010 17:01 HardCore.1337#15
Genau,
dazu verwendest du einfach den Befehl _MemoryWrite und setzt auf deine Adresse den NOP Befehls (0x90)