Hackerboard Wiki HaboBlog
Hackerboard bei Facebook Hackerboard bei Google+ Hackerboard bei Twitter

[HaBo]

 
Hacks & Crackmes Tests, Fragen oder Hilfestellungen. Crackmes und Hackits werden hier diskutiert.

Reverse Engineering

Diskussion: Reverse Engineering im Forum Hacks & Crackmes, in der Kategorie Software Home; Anzeige Zitat: Damit wollte ich wissen, ob es das Entpacken erschwert, wenn jede Sub/funktion erst bei gebrauch entschlüsselt wird. Somit ...

Antwort
Alt 09.02.09, 14:18   #16 (permalink)
CDW
Moderator
 
Benutzerbild von CDW
 
Registriert seit: 20.07.05
CDW Leistung: OpteronCDW Leistung: OpteronCDW Leistung: OpteronCDW Leistung: OpteronCDW Leistung: OpteronCDW Leistung: Opteron
Likes: 202
Standard

Anzeige

Zitat:
Damit wollte ich wissen, ob es das Entpacken erschwert, wenn jede Sub/funktion erst bei gebrauch entschlüsselt wird. Somit wäre doch ein Dump des ganzen Images in einem rutsch nicht mehr möglich?
Das hatte schon PCGuard in älteren Versionen. Der Entpackvorgang verzögerte sich um die Zeit, die man brauchte um ein OllyScript zu schreiben :
1.suche nach Calls zu der Entschlüsselungsfunktion
2.rufe den Call auf
3. weiter mit 1, bis Ende.
Bsp für PCGuard Anwendung mit unterschiedlichen Cryptloops   

das Script entschlüsselt den Codeblock und überschreibt die Cryptaufrufe mit NOPs.
geht natürlich auch kürzer, sofern man genug OllyScript Skillz hat ;)
Code:
var searchanfang
var searchende 
var calldest
var calladdress

go 45f2fb

mov searchanfang,40b990
mov searchende,457000

loop2:
find searchanfang,#E8#
cmp $RESULT,searchende
ja out2
cmp $RESULT,0
je out2

//prüfe, ob auch korrekter call
mov calladdress,$RESULT

inc $RESULT
mov calldest,[$RESULT]
add calldest,calladdress
add calldest,5
add calladdress,5
mov searchanfang,calladdress

//nicht, dann weitersuchen
cmp calldest,0e564c6
jne loop2 

mov eip,$RESULT
sub eip,6 //den Push berücksichtigen

go calladdress
//jetzt mit nops füllen
sub calladdress,0a //minus 12

fill calladdress,0a,90
jmp loop2


out2:

//encrypts entschärften

mov searchanfang,40b900
mov searchende,457000

loop3:
find searchanfang,#E8#
cmp $RESULT,searchende
ja out3
cmp $RESULT,0
je out3

//prüfe, ob auch korrekter call
mov calladdress,$RESULT
inc $RESULT
mov calldest,[$RESULT]

add calldest,calladdress
add calldest,5
add calladdress,5
mov searchanfang,calladdress

//nicht, dann weitersuchen
cmp calldest,0e56668
jne loop3

//jetzt mit nops füllen
sub calladdress,0a //minus 10

fill calladdress,0a,90

jmp loop3
out3:
Msg "Fertig!"

Je nach dem kann man es auch per Hand machen (wenn es z.B nur 4-5 verschlüsselte Blöcke gibt).

Btw: imho ist zwischen "theoretisch alles knackbar" und Praxis ein großer Unterschied . Wie hoch ist die Wahscheinlichkeit, dass irgendeine Nischensoftware mit paar 100 Zielpersonen überhaupt im Debugger landet? Sogar wenn man alle "ich kann Olly starten und Nags wegnoppen!!!" Leute berücksichtigt? Auserdem gibt es gar nicht so viele, die Themida&Co oder auch nur ASProtect&Armadillo "mit Links" entpacken können. Dass sie die Software also überhaupt zu sehen bekommen und dann auch noch für eine unbekannte 0815 Anwendung ihre Zeit aufwenden (ich spreche speziell von Leuten, die ihre Cracks auch releasen) halte ich doch eher für unwahrscheinlich. Besonders wenn CodeVirtulizer/Execrypter Funktionen geschickt eingesetzt wurden - sprich, wenn der Programmierer nicht nur auf "protect" Button geklickt hat, sondern ein paar Stunden in Dokulesen und Protectorlibs einbinden investiert. Da muss die Software schon einen relativ bekannt sein.

Genauso verhält es sich mit Donlges - TPM und Chips außen vor - nur den Fall vorausgesetzt, dass die Software mehr als nur einen "if dongle verfügbar then start else Msg 'Error' " beim Start hat, sondern auch paar Daten liest: Der Cracker muss dann 1) überhaupt Dongles reversen können, 2) an das Dongle herankommen.
Wie hoch ist also die Wahrscheinlichkeit, dass der böswillige Kunde die "richtigen" Connections hat bzw der "böse" Cracker ein Dongle ergattern kann?
__________________
Noch mal, für alle Pseudo-Geeks: 1+1=0. -> 10 wäre Überlauf!
Selig, wer nichts zu sagen hat und trotzdem schweigt.
CDW ist offline   Mit Zitat antworten
Alt 11.02.09, 11:15   #17 (permalink)
Themenstarter
 
Registriert seit: 03.02.09
Netonator Leistung: Facit NTK
Likes: 0
Standard

Hy


Zitat:
[...] Je nach dem kann man es auch per Hand machen (wenn es z.B nur 4-5 verschlüsselte Blöcke gibt).[...]
Das Script, von dem du sprichst, dass kann ebefalls nicht jeder. Zudem funktioniert das nur, wenn immer die gleiche Funktion aufgerufen wird zum entschlüsseln.

Zitat:
Btw: imho ist zwischen "theoretisch alles knackbar" und Praxis ein großer Unterschied . Wie hoch ist die Wahscheinlichkeit, dass irgendeine Nischensoftware mit paar 100 Zielpersonen überhaupt im Debugger landet? Sogar wenn man alle "ich kann Olly starten und Nags wegnoppen!!!" Leute berücksichtigt? Auserdem gibt es gar nicht so viele, die Themida&Co oder auch nur ASProtect&Armadillo "mit Links" entpacken können. Dass sie die Software also überhaupt zu sehen bekommen und dann auch noch für eine unbekannte 0815 Anwendung ihre Zeit aufwenden (ich spreche speziell von Leuten, die ihre Cracks auch releasen) halte ich doch eher für unwahrscheinlich. Besonders wenn CodeVirtulizer/Execrypter Funktionen geschickt eingesetzt wurden - sprich, wenn der Programmierer nicht nur auf "protect" Button geklickt hat, sondern ein paar Stunden in Dokulesen und Protectorlibs einbinden investiert. Da muss die Software schon einen relativ bekannt sein.
Zweifellos hast du da recht, jedoch muss es sich effektiv um eine Nischensoftware handeln oder die Software ist nicht allg. gebräuchlich. Natürlich gibt es wenige die einen ASProtect&Armadillo entpacken können, aber schliesslich gibt es auch vorprogrammierte Unpacker.

Wenn ein Programmierer gerade mal, wie du schreibst, auf 'Protect' klickt und dannach im glauben lebt, es sei damit getan ist er m.E. einfach ein schlechter Programmierer. Das ist wie Auto fahren mit 3 Fahrstunden, da hast du zwar ahnung von, aber machst garantiert Fehler am laufenden Band.


Lg
Netonator
Netonator ist offline   Mit Zitat antworten
Alt 11.02.09, 16:35   #18 (permalink)
CDW
Moderator
 
Benutzerbild von CDW
 
Registriert seit: 20.07.05
CDW Leistung: OpteronCDW Leistung: OpteronCDW Leistung: OpteronCDW Leistung: OpteronCDW Leistung: OpteronCDW Leistung: Opteron
Likes: 202
Standard

Zitat:
Original von Netonator
Das Script, von dem du sprichst, dass kann ebefalls nicht jeder. Zudem funktioniert das nur, wenn immer die gleiche Funktion aufgerufen wird zum entschlüsseln.
Lässt sich schnell ändern, um auch mehrere Cryptfunktionen zu erkennen

Außerdem musst du bedenken:
1) Wieviele unterschiedliche Funktionen zum ent/verschlüsseln willst du überhaupt einsetzen - wieviele Funktionen können überhaupt verschlüsselt werden? Dazu du musst diese Funktionen vor dem Release in der Binary irgendwie verschlüsseln (manuell=viel Aufwand, mit Macros=auch nicht wenig).Eventuell ist der Aufwand zum Entpacken geringer (vor allem, wenn man es automatisieren kann). Denn man kann sich die Referenzcalls zu einer Funktion anzeigen lassen - damit hat man schon die Liste der Funktionen, die Entschlüsselt werden und kann sie gescritpet/manuell abarbeiten.

2)Wie soll die Ent/Verschlüsselung ablaufen? Denn warum soll die verschlüsselte Funktion beim Dumpen stören (vorausgesetzt, man muss überhaupt dumpen) - sofern die Ver/Entschlüsselungscode in der eigentlichen Codesection liegt? Man dumpt einfach alles mit und kann nur bei Bedarf (bei interessanten Funktionen) diese auch mal manuell oder gleich vom Codefluss selber entschlüsseln lassen - das Programm läuft ja munter weiter . D.h um effektiv jemanden zu stören, muss der Cryptcode im dynamischen Speicher liegen - er muss also beim Programmstart hineingeschrieben werden und natürlich müssen auch alle Verweise zu dem Code im Programm korrigiert werden (kann z.B mittels einer Adresstabelle umgesetzt werden). Dabei hast du auch das Problem, dass dein Cryptcode adressunabhängig sein muss.
Das ist gleichzeitig auch der große Angriffspunkt:
a) man kann bei dem Heap/VirtualAlloc/whatever - Speicherreservierung einfach eine passende Adresse zurückgeben und das Programm macht den Rest (schreibt den Code in den passenden Speicherbereich, z.B nach der letzen Programmsection - danach funktionert der Dump problemlos).
b) Adresstabelle/Korrekturfunktion kann man missbrauchen, um Adressen aller verschlüsselter Funktionen herauszufinden - dann entweder skripten oder im Debugger den Code so modifizieren, dass bei der "Korrektur" auch gleich die Funktionen entschlüsselt werden.

Zitat:
Zweifellos hast du da recht, jedoch muss es sich effektiv um eine Nischensoftware handeln oder die Software ist nicht allg. gebräuchlich. Natürlich gibt es wenige die einen ASProtect&Armadillo entpacken können, aber schliesslich gibt es auch vorprogrammierte Unpacker.
IMHO überschätzen viele kleine Firmen/Programmieren die Wichtigkeit ihrer Sofware . Sonst: i.R funktionieren Stripper nur dann gut, wenn der Programmierer wiederum nur auf den Protect-Button geklickt hat.
__________________
Noch mal, für alle Pseudo-Geeks: 1+1=0. -> 10 wäre Überlauf!
Selig, wer nichts zu sagen hat und trotzdem schweigt.
CDW ist offline   Mit Zitat antworten
Alt 11.02.09, 17:03   #19 (permalink)
Member of Honour
 
Benutzerbild von xrayn
 
Registriert seit: 05.03.08
xrayn Leistung: Opteronxrayn Leistung: Opteronxrayn Leistung: Opteronxrayn Leistung: Opteronxrayn Leistung: Opteron
Likes: 246
Standard

Zitat:
Original von CDW
IMHO überschätzen viele kleine Firmen/Programmieren die Wichtigkeit ihrer Sofware .
Jep

Netonator, fuer kleinere Firmen sollte es reichen den Programmcode ordentlich zu obfuscaten, denn glaub mir nichts ist fuer einen Cracker nerviger als richtig obfuscateten Code nachzuvollziehen (es sei denn, man kennt die Algorithmen, mit denen dies geschah) . Wenn du nicht sowas wie Photoshop, Vmware oder IDA neu erfunden hast, fehlt die Motivation sich durch sowas durchzuquaelen
xrayn ist offline   Mit Zitat antworten
Antwort
   
- Anzeige -

Werbung ist gerade online    

[HaBo] » Software Home » Hacks & Crackmes » Reverse Engineering
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind aus
Pingbacks sind aus
Refbacks sind aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Assembler und Reverse Engineering TheRealNewbie Hacks & Crackmes 3 02.11.08 10:33
Game Engineering, wie ??? Offset Hacks & Crackmes 4 08.07.08 17:43
Bücher übers "Windows Reverse Engineering" ? Xalon Hacks & Crackmes 4 08.04.06 10:45


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61