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ß
private int Main()
{
string programmingSkills = getMySkills("programming")
return = 1;
}
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.
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!”
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
private int Main()
{
string programmingSkills = getMySkills("programming")
return = 1;
}
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°
_
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.
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
private int Main()
{
string programmingSkills = getMySkills("programming")
return = 1;
}
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.
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....
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.
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?
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.
egrath's Blog: http://egonrath.eg.funpic.de/wordpress
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 😁
private int Main()
{
string programmingSkills = getMySkills("programming")
return = 1;
}
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;
}
}
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
private int Main()
{
string programmingSkills = getMySkills("programming")
return = 1;
}
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
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
egrath's Blog: http://egonrath.eg.funpic.de/wordpress
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
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
egrath's Blog: http://egonrath.eg.funpic.de/wordpress
hrhr jo ich weiss. aber beim schnellen zusammenhacken von dingen vergisst man auf das eine oder andere ^^
egrath's Blog: http://egonrath.eg.funpic.de/wordpress
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.
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...
also gut. hier einen zwischenstand:
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
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
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
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
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^^)
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.
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.
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.
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)
offensichtlich 😉
Von all den Sachen, die mir verloren gegangen, hab ich am meisten an meinem Verstand gehangen... MfG...
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!”