Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > AutoIt
You last visited: Today at 16:19

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



DeObfuscation

Discussion on DeObfuscation within the AutoIt forum part of the Coders Den category.

Reply
 
Old   #1
 
elite*gold: 0
Join Date: Dec 2009
Posts: 1,622
Received Thanks: 2,070
DeObfuscation

Hallo Leute.

Beim Obfuscaten eines Scripts in autoit, werden die meisten funktionen, je nach einstellungen auf bestimmte art und weise verschlüsselt.

Dabei wird z.B. für den Befehl "Exit" der text per Execute und BinarytoString im Script Entschlüsselt.

Wenn man nun in einem Decompilierten Script, an einer bestimmten stelle platz macht, und diese verschlüsselten zeilen nach und nach einfügt, und execute mit clipput ersetzt, und dahinter ein exit setzt, wird nach ausführen des scripts die entsprechende zeile entschlüsselt, ins clipboard gesetzt, und das script beendet sich, und man kann weiter machen mit dem entschlüsseln.

Ich bin gerade dabei zu versuchen, das ganze zu automatisieren, und wollte fragen ob jemand mit genügend kenntnissen lust hätte mitzumachen.


Bevor jetzt das geflame anfängt, ich sei ein Leecher, und hätte es nötig fremde Programme zu entschlüsseln etc, solltet ihr ernsthaft über euch nachdenken.
freehuntx is offline  
Old 08/13/2011, 10:10   #2
 
bassbanane's Avatar
 
elite*gold: 116
Join Date: Oct 2007
Posts: 677
Received Thanks: 248
Ich habe mal ein wenig rumprobiert und wenn man "Execute(" durch "clipput(Clipget()&@CRLF&" ersetzt und das Script anschließend ausführt, hat man schonmal einen aufgeräumteren SourceCode.
Jedoch sind die Variablen ja mit keinem Execute versehen und somit noch obfuscated.
bassbanane is offline  
Old 08/13/2011, 10:27   #3
 
elite*gold: 0
Join Date: Dec 2009
Posts: 1,622
Received Thanks: 2,070
Variablen, werden ja obfuscated, z.B. wir aus "_Hello()" "T_T0x34563734565".

VariablenNamen kann man sich einfach selbst aussuchen.

Man kann ja in der Funktion sehen was sie macht, und sich dann einfach eigene namen dafür aussuchen, und überall abändern.



Naja ich habe es mir so Vorgestellt.


1. Ein Entsprechendes Script wird geöffnet.
2. Es wird nach dem 2. Execute( im script, Freiraum von 5 Zeilen gesetzt.
3. In dieser Zeile wird jedes Execute Entschlüsselt, und in Clipput Gesetzt.
4. Die Entschlüsselten Strings, werden in einer TextDatei Zeile für Zeile eingefügt.
5. Beim OrginalScript, wird das erste Execute( gesucht, und aus der Textdatei der code ausgelesen, und dadurch ersetzt.

Wird sicherlich alles Kompliziert.
freehuntx is offline  
Old 08/13/2011, 11:18   #4


 
buFFy!'s Avatar
 
elite*gold: 1826
Join Date: Mar 2009
Posts: 4,310
Received Thanks: 6,283
wozu das ganze? in ida hast du doch auch nur die addresse als namen. dabei spielt der funktionsname nicht wirklich ne rolle.

oder hab ich das prinzip jetzt falsch verstanden?

btw, wenn ich ne exe die durch myauttoexe erstellt wurde dekompiliere bleibt da nix mehr verschlüsselt
buFFy! is offline  
Old 08/13/2011, 11:22   #5
 
elite*gold: 0
Join Date: Dec 2009
Posts: 1,622
Received Thanks: 2,070
Nein ich wollte ihm nur seine Frage, oder was das sein wollte, beantworten.
Das Variablennamen keine Rolle Spielen weiß ich ja.

Ich hätte eine frage.

Weiß jemand ob es möglich ist, zu überprüfen ob ein bestimmter string kein Leerzeichen davor hat?

z.B. wenn eine Zeile sofort mit Execute( anfängt, damit man die Executes die ein leerzeichen davor haben, ignorieren kann.
freehuntx is offline  
Old 08/13/2011, 13:07   #6
 
Shadow992's Avatar
 
elite*gold: 77
Join Date: May 2008
Posts: 5,430
Received Thanks: 5,876
Du solltest zuerst einmal klären um welchen Obfuscator es geht, sonst wird sich wohl keiner so schnell melden.

Und danach solltest du dein Anliegen etwas konkreter fassen.
Willst du einen kompletten Deobfuscator oder willst du "nur" das Execute wieder "normal" machen?
Denn ein kompletter Deobfuscator würde auch noch Variablen umbenennen und auch konstante Variablen, deren Werte meist irgendwie verschlüsselt sind deobfuscaten usw.
Shadow992 is offline  
Old 08/13/2011, 13:34   #7
 
bassbanane's Avatar
 
elite*gold: 116
Join Date: Oct 2007
Posts: 677
Received Thanks: 248
Ich glaube, ich habe verstanden, was du genau möchtest.
Ich setze mich heute Abend mal ran.
Habe dafür schon eine Idee

Ich habe mich mal grob rangesetzt.
Von der Theorie her funktioniert es.
Der Code wird auf jeden Fall leichter lesbar, jedoch nicht ausführbar.
Ihr könnt gerne weiter daran arbeiten.
Auch finde ich die Variante mit Clipput nicht so schön, aber was solls
Code:
#include <file.au3>
Global $array[1]

_FileReadToArray("obfuscated.au3", $array)


For $i = 1 To $array[0]
	If StringInStr($array[$i], "Execute") Then
		$new = StringReplace($array[$i], 'Execute(', 'Clipput(') ;Execute mit Clipput für die entsprechende Zeile ersetzen

		$var = 0
		If StringInStr($new, "=Clipput") Then ;Schauen, ob vor dem Execute eine Deklaration einer Variable ist
			$split = StringSplit($new, "=")
			$dec = $split[1]
			$var = 1

		EndIf

		Execute($new) ;Das modifizierte Execute ausführen
		Sleep(300)
		$get = ClipGet() ;Das sich nun im Zwischenspeicher befindende Codeschnipsel auslesen
	
		If $var = 1 Then
			FileWriteLine("New.txt", $dec & "=" & $get) ;Und entsprechend in eine neue Datei schreiben (Mit Deklaration)
		Else
			FileWriteLine("New.txt", $get) ;Ohne Deklaration aber mit Execute
		EndIf

	Else
		FileWriteLine("New.txt", $array[$i]) ;Zeile, die kein Execute enthielt
	EndIf
Next
bassbanane is offline  
Reply




All times are GMT +2. The time now is 16:19.


Powered by vBulletin®
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2024 elitepvpers All Rights Reserved.