Skype + Softice

So, auf die Gefahr hin dass dies hier schwimmen gehen könnte, und vielleicht auch nicht im richtigen Forum steht, hier meine Frage.

Skype verweigert den Programmstart, wenn NuMega's Softice installiert ist. Es muss nicht mal im Hintergrund laufen, nur installiert sein, teilweise gehts sogar (laut meinen Google Ergebnissen) nicht mal, wenn man Softice bereits deinstalliert hat ("format c solves").

Nun fand ich das schon sehr dreißt, und ich beabsichtige definitiv nicht Skype überhaupt noch zu benutzen, dennoch wollte ich doch irgendwie mit einem Gefühl der Befriedigung aus der Sache aussteigen, hab also quasi aus HOHN Softice verwendet um mal ein bisschen zu schaun was passiert beim Programmstart, und tatsächlich entsprechenden Conditional Jump gefunden und geändert, so dass Skype trotz Softice startet.

Das funktionierte auch soweit, nur dass Skype dann bei incoming calls abschmierte (outgoing ging).

Hier findet sich nun eine nette Beschreibung von dem, was ich getan habe, und auch ein Loader, der das automatisch macht, aber nur mit der Version im RAM, und nicht mit der auf der HardDisk.

http://gcasiez.perso.wanadoo.fr/

Der ursächliche Grund für den Crash on Incoming war ja, dass der anrufende Skype Client offenbar die MD5 Prüfsumme der .exe ausliest (eine FRECHHEIT!) und da diese natürlich nicht so ist, wie sie sein sollte, entsprechende "Anweisung" ausführt (mein Skype abstürzen lassen, danke, immerhin nicht gleich format c :P ).

Wie im Link beschrieben kann man das Problem umgehn indem man die Änderungen erst im RAM durchführt, und die .exe auf hdd im Orginalzustand belässt.

Nun wollte ich aber etwas anderes versuchen. Irgendwie muss die MD5 Summe ja von meinem PC zum anderen Client übertragen werden, also hab ich Etherreal angemacht und mal geschaut, und auch etwas gefunden dass einigermaßen nach md5 aussieht, und hier nun endlich meine Frage:

Ist es irgendwie möglich das Paket quasi "abzufangen" und meinem Wünschen entsprechend zu ändern? Mit http headern kann man sowas ja ganz leicht machen, geht das prinzipiell mit jedem Datenstrom?

Und bevor jetzt Kommentare kommen, was fürn Sinn des hat, da es ja schon nen funzenden Workaround gibt: Es geht wieder um die Befriedigung. Auch wenn ich auf des mim Conditional Jump selbst gekommen bin, so hab ichs doch eigentlich nicht geschafft, es tatsächlich selbst zum laufen zu kriegen (weil der Loader stammt ja net von mir), ich will es aber SELBER machen (und da meien Programmier Skills net soweit reichen um nen eigenen Loader zu schreiben...). Natürlich könnt man jetzt argumentieren, ich dürfe dann auch hier net fragen, aber des stimmt net, denn immerhin war die Modifikation des md5 Tags bei der Übertragung ja meine Idee, nur an der Ausführung scheiterts noch.

Äh, dann noch ne allgemeine Entschludigung für die Länge und letzendlich doch gegebene leichte sinnfreiheit des Posts, aber ich bin scho 27 Stunden wach, ihr kennt des ja sicher...

Jo, also, wünsch euch mal nen Guten Morgen ;)

mfg gmw
 
also für 27h wach, hast du nen guten Post geschrieben. Und wenn die entwickler in skype so was einbauen, dann ham die wohl irgendwas zu verbergen. gibts ne open source alternative?

Und jetzt nochmal, ob ich dich richtig verstanden habe.. Wenn du also nen anruf bekommst, wird der hash vom anderen teilnehmer übertragen, und prüft dann bei dir, ob die exe stimmt? Bist du dir sicher? denn das macht keinen sinn. so würde ich nie mit einem client in einer anderen version telefonieren, da der Hash nicht übereinstimmen würde. Schon ein anderes build hätte einen ansturtz zu folge.

außer das ganze geht über einen umweg, und nimmt vom skypeserver alle hashes mit, die es gibt für das programm, was ich allerdings für unwarscheinlich halte.

Wenn es wirklich ne prüfsummencheck gibt muss das ganze ja bei dir ind er exe vorgesehen sein, und sollte manipulierbar sein.


PS: ich denke nicht dass es einen grund gibt hier planschen zu gehen, schließlich darfst du in deutschland soetwas machen. du darfst nur die daraus gewonnen erkenntnisse oder gar die modifizierten daten weitergeben. Die lizenzbedingungen sagen was anderes, aber wie wir wissen sind die bei uns ja nicht 100% kompatibel zum Gesetz ;)
 
tsts ... ;)

gmw schribbelte:

Jo, also, wünsch euch mal nen Guten Morgen ;)

Na, ganz meinerseits, dito!
Sag mal, wo hat Du denn eigendlich den Titel "Sprengmeister" her?

Hm,
So, auf die Gefahr hin dass dies hier schwimmen gehen könnte,
und vielleicht auch nicht im richtigen Forum steht, hier meine Frage.

Ooooch, ich denke mal nicht, da Skype und Softice ja, im Gegensatz zum
Bleistift etwa dem Frauenhandel oder dem Ablegen von gecrackter Soft
auf FirmenServern, -- legale Anwendungen sind. ;)

Nun fand ich das schon sehr dreißt,
und ich beabsichtige definitiv nicht Skype
überhaupt noch zu benutzen, ...

Warum ist es dreist, wenn eine Community oder ein
Programmierer sein Knoff Hoff vor Cracking und Missbrauch schützen will?
Warum ist eine MD5 - CheckSumme eine Frechheit?
'Ne sichere Authentifizierung ist doch eine gute Sache, nicht wahr?
Werden die Client's nicht auch bei Emule oder Kazzaa über 'nen Hash
identifiziert?

Wenn Du ein Telefonsystem, also auch Skype angreifen willst,
musst Du dir erst einmal Klarheit über das zur Signalisierung verwendete
Übertragungsprotokoll verschaffen. Das kannst Du selbstverfreilich
durch Analyse der übertragenden Pakete tun.
Wenn Du dann das Protokoll aus den "FF" kennst, kannst Du durch
'nen "Man in the middle" - Angriff die entsprechenden Sprachpakete
über Deinen Rechner leiten und somit mithören.

Dazu *musst* Du natürlich die Pakete abfangen und in Echtzeit
manipulieren, sonst würdest Du ja nicht in's Gespräch 'reinkommen. =)

Achja, Befriedigung ist ja die Triebfeder all' unseres Tun's, deshalb
würd' ich Deinen Artikel auch nicht als sinnfrei betrachten.


Mal sehen, ob es die Mod's auch so sehen ... :P



Golgy. =)
 
Ist es irgendwie möglich das Paket quasi "abzufangen" und meinem Wünschen entsprechend zu ändern? Mit http headern kann man sowas ja ganz leicht machen, geht das prinzipiell mit jedem Datenstrom?
warum einfach wenns auch kompliziert geht ;)
Wenn es eine Checksumme ermittelt, dann muss der Code dafür ja ausgeführt werden. Und weil es bei einem Memorypatch kein gemeckere gibt, wird wohl das File von der Festplatte geöffnet. Nun bin zwar kein WeichEis nutzer ;), aber man könnte ja einen BP auf ein paar Api Calls wie CreateFile (eventuell auf die naitive Apis wie NtCreateFile/NtOpenFile usw - bin leider ein User-Mod-Debug Mensch)) ansetzen.

Das Problem kann allerdings sein, dass da mehrere solcher Checks sind. Und manchmal sind Loader eben besser oder gar der einzige vertretbare Aufwand.


Programmierer sein Knoff Hoff vor Cracking und Missbrauch schützen will?
Warum ist eine MD5 - CheckSumme eine Frechheit?
'Ne sichere Authentifizierung ist doch eine gute Sache, nicht wahr?

naja
Zitat von Wikipedia
Skype ist eine unentgeltlich erhältliche, proprietäre VoIP-Software, die das kostenlose Telefonieren via Internet von PC zu PC sowie das gebührenpflichtige Telefonieren ins Festnetz und auf Mobiltelefone ermöglicht (SkypeOu
da es kostenlos ist, besteht kein "Interesse" daran, das Ding zu "cracken". Und das KnowHow ist imho auch schon so ganz gut geschütz - es wäre einfacher, so ein Teil selber zu implementieren, als zu versuchen die Routine zu verstehen. Warum muss die Software aber gleich so allergisch auf Sice reagieren? Vielleicht weil man nicht möchte, dass bestimmte Codestellen entdeckt werden :rolleyes: (man nehme als Beispiel ZoneAlarm - es sendete ja irgendwelche verschlüsselten Infos, was sich angeblich auch Programmierer nicht erklären konnten und es dann gefixt werden musste (ich meine ja, klar, ich wäre auch stolz darauf, wenn mein Programm selbstsändig noch weitere Funktionen entwickeln würde :rolleyes: ) )

Für mich persönlich hört der Schutz in dem Moment auf, in dem ich vorgeschrieben bekomme, welche Programme ich drauf haben darf und/oder welche hardware ich ausstöpseln soll - ab da beginnt die Schikane. Vor allem, da man diese Prüfung ja scheinbar relativ leicht umgehen kann - also auch kein wirklicher Schutz vor Missbrauch bzw. keine sichere Authentifizierung (man patche die MD5 Routine einfach so, dass sie immer die "originalsumme" zurückgibt oder manipuliere das Programm im Speicher). Der Schutz vor Missbrauch hat bei solchen Programmen nichts auf der Anwenderseite zu suchen ( *gerade an eine vor kurzem gesehene "Kreation" denk, bei dem der Client im Endeffekt die Usereingaben überprüft hat und an den Server ein TRUE/FALSE sendete :rolleyes: * )
 
Also das mit der MD5 Summe, da bin ich mir absolut sicher, denn man kann im EventLog Zugriff auf skype.exe bei incoming call feststellen, außerdem steht auf der von mir geposteten Seite ja drauf, wenn man SoftIce komplett entfernt funzt dann zwar die ungepatchte Version, aber dei "gecrackte" geht dann immer noch net.

Dass ich den Code dahingehend manipulieren könnte hab ich mir auch schon gedacht, also hab ich mal gekuckt was unmittelbar vorm Absturz passiert, aber ich bin kein ausreichend gut genuger SoftIce Anwender um daraus schlüsse zu ziehn. Es geht ja hier nicht um nen einfachen conditional jump "if md5 not nice, kill program" ;) Außerdem wird das Programm ja net einfach nur beendet, sondern irgendwei wird ein Memory Allocation Error heraufbeschwört, würd mich auch mal interessieren wie die des machen...

Von daher ist die weitere Modifikation der skype.exe für mich sehr unhandlich und würde enorme Einarbeit in die Materie mit sich bringen.

Aber irgendwie muss es doch möglich sein die Übertragung direkt zu manipulieren, um den Wert einfach zu ändern, so dass er zufrieden is... oO


Und wieso das Auslesen der MD5 eine Frechheit is? Na hör mal, du würdest es sicher auch nicht mögen wenn ich die MD5 deiner C:\Windows\sol.exe auslesen würde ;) Also ich mein damit, dass der Client eines anderen Menschen auf meiner Festplatte einfach nix zu suchen hat (und es muss dessen Client sein, weil sonst würde der Crash wohl auch bei Outgoing auftreten).

Den Sprengmeistertitel hab ich wegen eines von mir geposteteten "Sylvester-Hardware-Zerstörungs-Videos", das ist jetzt aber down weil Cybton probs hat, ich kanns aber ja mal bei rapidshare oder so hochladen, wenn ich ma grad Zeit hab ;)
 
Also das Erzeugen von so einem Absturz dürfte nicht weiter schwer sein, es reicht schon ein:
Code:
char c=*(char*)(0); // 0 kann man durch alle möglichen ungültigen Addressen ersetzen
Ansonsten wäre es wahrscheinlich wirklich das einfachste die Md5-Routine zu patchen und den korrekten Wert zurückzugeben. Das Abfangen des Packets usw. wäre ein weitaus größerer Aufwand und würde mehr "Einarbeiten in die Materie" erfordern als die Manipulation von Skype.exe.
Wenn du dennoch an der Idee festhälst solltest du dir die winpcap-Bibliothek anschauen.
 
Warum meinst du, dass der MD5 mit dem eines anderen Clients verglichen wird?
Incoming und Outgoing sind sehr wahrscheinlich zwei unterschiedliche Funktionen. In Incoming wird der MD5 berechnet und in Outgoing nicht.

Läuft skype in Olly oder meckert es da auch? Ansonsten stell Olly als JIT ein. Dann sollte er den Crash fangen können und du kannst nachsehen was an der Stelle passiert.

Was den MD5 an sich betrifft, bietet sich CDWs Vorschlag an. Oder du lässt dir mal den MD5 der exe errechnen, in der Hoffnnung, dass auch die ganze Datei verwendet wird und nicht nur Teile. Und suchst dann mal in der exe nach dem Hash. Ich glaube nämlich nicht, dass der erwartete Hash von aussen kommt.
 
Zurück
Oben