Laden...

HackMe

Erstellt von tscherno vor 16 Jahren Letzter Beitrag vor 15 Jahren 24.227 Views
S
341 Beiträge seit 2008
vor 16 Jahren

hmmm also ich weiß zwar jetzt wie das mit diesem xor funktioniert allerdings hab ich atm keine praktische idee wie ich das anstellen soll.... dazu hab ich wohl noch viel zu wenig erfahrung aber ich versuchs weiter vllt bekomm ichs hin ^^ oder es kann noch jemand einen tipp geben 😉

@Smou: die von die verlangte lösung ist bereits erbracht worden.

sorry aber das versteh ich grad nicht oO

gruß

**Nur die Kenner können mit 10 Fingern bis 1023 zählen !!**
private int Main()
{
   string programmingSkills = getMySkills("programming")
   return = 1;
}
Gelöschter Account
vor 16 Jahren

ich meinte das da:

servus,

abgesehen davon das es glaub ich ein sehr interessanten thema ist grade für mich als relativer neuling ^^ aber mich würde viel mehr interessieren objemand schon für das letzte programm schon eine lösung hat oder ansätze weil man ja mim reflector da nicht weit kommt

bin da schon ziemlich gespannt drauf denn dann weiß auch ich als anfänger wie man seine programme möglicherweise schützen kann wenn ich irgendwann mal ein interessanten programm schreib hehe

was dieses thema betrifft:
also. das problem ist, das man nicht einfach die sourcen nehmen kann und darin rumspielen kann (also nix mit disassemblieren....), da hier am dateiende an festgelegten positionen gelesen und geschrieben wird.

um genau zu sein trifft es diesen block: 86DF3F4F auf position 0x7fff8
und 00400300 auf position 0x7fff0

in jedem fall hat die datei einen für msbuild atypischen aufbau (welchen compiler benutzt du?)

weiter habe ich erstmal keine zeit zu forschen aber ich werde mich evtl später nochmal dran machen.

4.506 Beiträge seit 2004
vor 16 Jahren

Hallo JAck30lena,

so langsam wirds verwirrend wenn man hier die geposteten Beiträge durcheinandermischt.

n jedem fall hat die datei einen für msbuild atypischen aufbau (welchen compiler benutzt du?)

-> Falls Du jetzt meinen Kram meinst (weil Rückbezug von Smou), dann kann ich nur sagen, dass ich die Standard-IDE VB6 verwendet habe um zu kompilieren.

Grüße
Norman-Timo

A: “Wie ist denn das Wetter bei euch?”
B: “Caps Lock.”
A: “Hä?”
B: “Na ja, Shift ohne Ende!”

Gelöschter Account
vor 16 Jahren

Hallo norman-timo,

nein ich meinte mit dem zweiten teil meines beitrages die aufgabe von floste.
aber du hast recht, das es langsam verwirrend sein kann...

S
341 Beiträge seit 2008
vor 16 Jahren

was dieses thema betrifft:
also. das problem ist, das man nicht einfach die sourcen nehmen kann und darin rumspielen kann (also nix mit disassemblieren....), da hier am dateiende an festgelegten positionen gelesen und geschrieben wird.

um genau zu sein trifft es diesen block: 86DF3F4F auf position 0x7fff8
und 00400300 auf position 0x7fff0

dh: wenn ich es neu kompaliere stimmen die blockadressen im code nicht mehr mit den tatsächlichen überein ? oder wie darf ich das verstehen... sorry bin da noch nciht so bewandert

**Nur die Kenner können mit 10 Fingern bis 1023 zählen !!**
private int Main()
{
   string programmingSkills = getMySkills("programming")
   return = 1;
}
Gelöschter Account
vor 16 Jahren

korrekt.

190 Beiträge seit 2005
vor 16 Jahren

Hallo zusammen.

vielleicht leicht offtopic, aber da hier einige Male der Reflector genannt wurde, kennt ihr das Addin Reflexil für Reflector? Änderungen können direkt vorgenommen werden und die geänderte exe/dll kann von dort aus direkt gespeichert werden. Feine Sache!

Gruß cx°

_

1.130 Beiträge seit 2007
vor 16 Jahren

Noch auf Reflector hinweisen dass die User auf die Idee kommen das Programm neu zu kompilieren und sich die Chance auf Lösung des Problems verbauen Augenzwinkern

Ich dachte eigentlich eher daran, den Algo zu modifizieren, sodass er das Passwort ausspuckt. Ansonsten kann man natürlich auch den Hexcode analysieren und selber entschlüsseln.

Tipp: UnBase64 spuckt den String rückwärts aus.

Bitte nich das Passwort unverschlüsselt posten.

Projekte:Jade, HttpSaver
Zum Rechtschreiben gibts doch schon die Politiker. Aber die bauen auch nur mist!

S
341 Beiträge seit 2008
vor 16 Jahren

hallo,

hab auch schon dran gedacht das ich unbase64 benutz allerdings muss man ja das irgendwie so modifizieren das unbase64 benutzt wird....

sowie ich das seh muss man das passwort erst durch base64 und dann durch unbase64 laufen lassen... aber wie schon erwähnt ich bin da noch nicht so bewandert ^^

wäre schön wenn mir jemand sagt ob ich in die richtige richtung denk

**Nur die Kenner können mit 10 Fingern bis 1023 zählen !!**
private int Main()
{
   string programmingSkills = getMySkills("programming")
   return = 1;
}
Gelöschter Account
vor 16 Jahren

wenn man selber recompalieren muss (also beim modifizieren des algorythmus), dann kann man nicht mehr sicherstellen, das auf exakt der selben bytepsoition der erwartete wert ist.

1.130 Beiträge seit 2007
vor 16 Jahren

wenn man selber recompalieren muss (also beim modifizieren des algorythmus), dann kann man nicht mehr sicherstellen, das auf exakt der selben bytepsoition der erwartete wert ist.

Wenn einem das Passwort angezeigt wird, aber die modifizierte Version ansonsten nichtmehr funktioniert (Daten nichtmehr vorhanden), bringt einen das eindeutig nicht weiter.
👍

Ich dachte eigentlich eher daran, den Algo zu modifizieren, sodass er das Passwort ausspuckt.
...
Tipp: UnBase64 spuckt den String rückwärts aus.

Projekte:Jade, HttpSaver
Zum Rechtschreiben gibts doch schon die Politiker. Aber die bauen auch nur mist!

Gelöschter Account
vor 16 Jahren

das problem ist ein anderes. man kann unbase oder jegliche art des manipulierens nicht verwenden, da man in jedem fall compalieren müsste. Die einzige möglchkeit, die ich sehe, ist den code so zu manipulieren, das er nicht in sich selber sucht, sondern auf einem origianl. also kopie von hackme gezogen, dann die kopie manipuliert, so das sie im original sucht und unbase....

1.130 Beiträge seit 2007
vor 16 Jahren

Man kann die Passwortprüfung so modifizieren, dass sie nicht prüft, sondern das Passwort ausspuckt. Das kann man mit unbase64 in der Konsole ausgeben. Die Prüfung greift, wie man unschwer erkennen kann nicht auf einen stream zu. Also benötigt man die Daten, die beim recompalieren verlohren gehen nicht, um das richtige Passwort zu bekommen. Wenn man im Original das Passwort eingibt werden die dort angehängten Daten richtig entschlüsselt. 😭
Theorethisch ist es möglich. Ich denke das eigentliche Problem bei der Sache ist den Algo zu verstehen.

das er nicht in sich selber sucht, sondern auf einem origianl.

der Weg geht natürlich auch.

Mittlerweile denke ich es ist am einfachsten sich nen hexeditor schnappen und selber entschlüsseln.
Tipp:0x7FFF0 ist das erste Byte hinter der Datei, die mit nullen aufhört.

Projekte:Jade, HttpSaver
Zum Rechtschreiben gibts doch schon die Politiker. Aber die bauen auch nur mist!

871 Beiträge seit 2005
vor 16 Jahren

Hallo,

so ich hab mir auch wieder mal ne neue Sache ausgedacht. Um was gehts:* In der Applikation wird in einer Variable eine Zahl gesetzt (gibt eh nur eine Variable). Welchen wert hat diese?

  • Ja, es ist eine .NET Applikation auch wenns nicht so aussieht.

Grüsse,
Egon

/edit: Passwort für das Archiv ist "mycsharp". Muss es leider verschlüsseln da es sonst der Proxy hier nicht durchlässt.

S
341 Beiträge seit 2008
vor 16 Jahren

Servus....

nach etlichen versuchen etwas zu manipulieren ohne großartig etwas zu verschieben bin ich daran gescheitert und hatte die idee mit einer zweiten consolen anwendung die hackme.exe aufzurufen bzw zu starten und dann befehle auszuführen. jedoch frag ich mich grad ob das überhaupt möglich ist .... die datei starten ok... das ist das eine jedoch über meine anwendungen in der anderen anwendung etwas auszuführen.... hmmm
ich bin der meinung das es geht... allerdings fehlt mir der richtige schritt in die richtige richtung 😁

**Nur die Kenner können mit 10 Fingern bis 1023 zählen !!**
private int Main()
{
   string programmingSkills = getMySkills("programming")
   return = 1;
}
M
1.439 Beiträge seit 2005
vor 16 Jahren

Hallo egrath!

Laut Reflector wird in deiner .Net Dll keine Variable erstellt!?


public class HackMe
{
    // Methods
    public static int Execute(string message)
    {
        Console.Out.WriteLine("[.NET] Hello: {0}", message);
        return 0;
    }
}

S
341 Beiträge seit 2008
vor 16 Jahren

hmmm also ich glaub du bist nicht so an der richtigen stelle.... denn laut dem code würde die anwendung doch garnicht starten.... es ist immer eine Main() function notwending als einstiegspunkt.... und irgendwas wird ja in message übergeben 😉


hmm wieso konntest du die anwendung jetzt mim reflector deassemblieren und bei mir hat er den fehlen CLS header bemängelt... check ich nit .. Oo bin doch nciht ganz doof

**Nur die Kenner können mit 10 Fingern bis 1023 zählen !!**
private int Main()
{
   string programmingSkills = getMySkills("programming")
   return = 1;
}
871 Beiträge seit 2005
vor 16 Jahren

Hallo egrath!

Laut Reflector wird in deiner .Net Dll keine Variable erstellt!?

  
public class HackMe  
{  
    // Methods  
    public static int Execute(string message)  
    {  
        Console.Out.WriteLine("[.NET] Hello: {0}", message);  
        return 0;  
    }  
}  
  

Verdammt, dann hat der Optimizer des Compilers wieder zugeschlagen und die Deklaration rausgenommen. Aber Da du schon so weit bist lüfte ich das "Geheimnis" nun:*Ich habe mir einen C++ Wrapper geschrieben der eine CLR Instanz initialisiert *Dieser CLR teile ich nun mit, dass ich die Methode "Execute" des types "egrath.test.HackMe" aufrufen möchte

  • Die Assembly selbst liegt in einem alternativen NTFS Datenstrom "Hackme.exe:NET"

Ich denke mal dass Du einen Decompiler verwendet hast wie z.b. OllyDbg oder W32Dasm um das ganze zu analysieren, oder? Im Loader überprüfe ich nämlich ob ein Debugger aktiv ist 😉

Grüsse,
Egon

M
1.439 Beiträge seit 2005
vor 16 Jahren

Ich habe IDA Pro verwendet.
Dein Debugger-Schutz ließ sich sehr leicht umgehen - einfach den Exit-Zweig ausnopen...
Allerdings hat mir das Debuggen eher wenig gebracht, da erstens dein Programm sehr klein und somit der Programmablauf ersichtlich war, und zweitens mir der Debugger auch nur die Register anzeigen hat können. Somit half eh nur Assembler Code und Funktionsaufrufe analysieren.
Btw.: Was für einen Compiler hast du verwendet? 9KB Codesize habe ich bisher nur immer ohne CRT erzielt.

Lg,
Georg

871 Beiträge seit 2005
vor 16 Jahren

Hallo,

ich habe mir eigentlich auch keine Mühe gemacht dass der resultierende Maschinencode nicht so leicht zu analysieren und zu umgehen ist 😉

Als Compiler hab ich den ordinären Visual C++ 2008 genommen, Standardeinstellungen der Release Konfiguration.

Grüsse,
Egon

Gelöschter Account
vor 16 Jahren

ein volatile bei der variable hätte wunder gewirkt ^^

871 Beiträge seit 2005
vor 16 Jahren

hrhr jo ich weiss. aber beim schnellen zusammenhacken von dingen vergisst man auf das eine oder andere ^^

X
1.177 Beiträge seit 2006
vor 16 Jahren

Hallo zusammen,

bin, hmm grad erst über den Thread gestolpert und hätte auch eine Idee, aber es sind imho ja noch 2 Aufgaben offen (bzw. nicht als gelöst vom Autor angegeben)

Wie wärs denn mit der folgenden Regel:
*der Aufgabensteller gibt eine Aufgabe als gelöst an und der Aufgabenlöser (Hacker) darf eine neue stellen bzw. diese Ehre jemand anderem übergeben. *Wenn die Aufgabe nicht binnen x Tagen gelöst wurde, darf eine neue (von irgendwem, dem mit dem besten weg, etc.) gestellt werden.

grad im Moment ist mir das hier fast zu verwirrend^^

🙂

Xynratron

PS: weil wollte jetzt keine 3. in den Raum werfen^^

Herr, schmeiss Hirn vom Himmel - Autsch!

Die Erfahrung zeigt immer wieder, dass viele Probleme sich in Luft auslösen, wenn man sich den nötigen Abstand bzw. Schlaf gönnt.

A
266 Beiträge seit 2007
vor 16 Jahren

Erstell doch einfach nen 2. Thread =)

Stimmt aber hier sieht echt keiner mehr durch...

Von all den Sachen, die mir verloren gegangen, hab ich am meisten an meinem Verstand gehangen... MfG...

Gelöschter Account
vor 16 Jahren

also gut. hier einen zwischenstand:

  1. erstellt von tscherno am 13.04.2008 um 17:55 uhr
    geknackt von: egrath am 13.04.2008 um 19:05 uhr
    bestätigt von tscherno

  2. erstellt von egrath am 13.04.2008 um 19:59 uhr
    geknackt von NeuroCoder am 13.04.2008 um 23:18 uhr
    bestätigt von egrath

  3. erstellt von NeuroCoder am 14.04.2008 um 01:15 uhr
    gecknackt von norman_timo am 14.04.2008 um 07:09
    bestätig von NeuroCoder

  4. erstellt von norman_timo am 14.04.2008 um 10:13 uhr
    gecknackt von Jack30lena am 14.04.2008 um 11:29 uhr
    bestätigt von norman_timo

  5. erstellt von floste am 15.04.2008 um 20:19 uhr
    praktisch ungecknackt theoretisch aber mehrere lösungswege vorhanden (keiner hatte lust sich die arbeit anzutun^^)

  6. erstellt von egrath am 17.04.2008 um 15:49 uhr
    wurde vom compiler wegoptimiert^^

so das wars bis jetzt. sollte es ncoh zu hackende exe geben, kann ich immer wieder mal einen zwischenstand generieren um einen überblick zu garantieren.

momentan gibt es jedoch hier nichts zu hacken, wer also zeit hat, kann hier gerne eine neue aufgabe stellen.

1.130 Beiträge seit 2007
vor 15 Jahren

Ich hatte mal wieder Lust was zu machen. Diesmal macht sich das Programm nicht selbst kaputt und enthält keine Informationen am Dateiende. Gewonnen hat, wer das Passwort herausfindet, das auch beim Original funktioniert.

Hoffentlich ist es nicht wieder zu aufwändig/schwer zu lösen.
Ich warte schon auf den ersten, der die das Passwort findet und mir mit der dann zugänglichen Verschlüsselungsfunktion eine Nachricht sendet.

Projekte:Jade, HttpSaver
Zum Rechtschreiben gibts doch schon die Politiker. Aber die bauen auch nur mist!

1.130 Beiträge seit 2007
vor 15 Jahren

Was habe ich diesmal wieder falschgemacht? X(

Wer den Durchblick verliert, kann diese version zuerst probieren. Der Aufbau ist im Wesentlichen gleich, nur dass ein paar Gemeinheiten fehlen und der Code übersichtlicher ist.

Projekte:Jade, HttpSaver
Zum Rechtschreiben gibts doch schon die Politiker. Aber die bauen auch nur mist!

Gelöschter Account
vor 15 Jahren

nun mich persönlich schreckt das bit-rumschieben ab. ich habe keine zeit und keine gedult mich mit bitpositionen und bitwerten rumzuschlagen. für so einen quelltext braucht man keinen obfuscator mehr. wenn es nicht in ein bis zwei stunden lösbar ist, dann ist es für die meisten zu schwer und für die anderen zu aufwendig. (meiner meinung nach)

A
266 Beiträge seit 2007
vor 15 Jahren

offensichtlich 😉

Von all den Sachen, die mir verloren gegangen, hab ich am meisten an meinem Verstand gehangen... MfG...

4.506 Beiträge seit 2004
vor 15 Jahren

Hallo floste,

ich persönlich habe aktuell keine Zeit mich damit zu befassen, mich würde aber grundlegend das "Bitgeschiebe" nicht aufhalten zu probieren 😁

Grüße
Norman-Timo

A: “Wie ist denn das Wetter bei euch?”
B: “Caps Lock.”
A: “Hä?”
B: “Na ja, Shift ohne Ende!”