Also in wenigen Tagen ist es soweit und Diablo 3 wird uns wieder in den Schlund der Hölle schicken. Nach dem ich Diablo 1 einen No-CD Crack verpasst habe, Diablo 2 und der Expansion die Serial Algorithmen entnommen habe, liegt es nun am nächsten den 3. Teil auch zu zerschlagen, um zu schauen was seine Innereien uns sagen. Da man im vorhinein schon die Retail Version herunterladen kann, werde ich mich diesmal der Installation-Sperre widmen und versuchen diese vor dem Release zu umgehen. Also auf geht es in eine neue Cracking Runde!
Erste Ansätze
Zunächst habe ich mir die Retail Version (Download – Retail Diablo 3 deDE) heruntergeladen. Gute 7,66 GB wiegt das gute Stück. Schauen wir uns doch einmal die Dateien genauer an:
Zunächst starte ich einmal die Installationsdatei, damit man überhaupt sieht was passiert. Es öffnet sich ein Installationslauncher und wenn man nun auf Installieren geht, kommt eine Fehlermeldung.
Nun wird es Zeit sich die Installationsdatei einmal mit PEid genauer anzuschauen. Da uns PEid nun nicht wirklich weiterhilft, behelfen wir uns mit einem anderen Programm: „ExeinfoPE“! Dieses Tool sagt uns, dass die Installationsdatei in „Microsoft Visual C++ 9.0 - Visual Studio 2008 (E8)
“ geschrieben ist. Also können wir beruhigt sein und brauchen die Datei nicht entpacken. Nur noch die Installationsdatei in OllyDbg 2.01d laden und schon kann es losgehen. Wie immer, werden zum Anfang „all referenced Strings“ angeschaut, damit wir vielleicht einen guten Hinweis finden. Zuerst habe ich noch speziell nach der Fehlermeldung gesucht, jedoch ohne Erfolg. Was mir schon einmal ins Auge fällt, sind folgende Strings: „patch.battle.net:1119/patch“, „Agent.exe“, „install_dir“ und noch ein paar andere interessante Strings, jedoch habe ich durch die Strings nicht wirklich einen Anhaltspunkt gefunden. Immer wieder hat sich das Installationsprogramm in einen seperaten Thread gestartet. Vielleicht lag es auch daran dass ich mir keine große Mühe gegeben habe.
Auf ins Meer
Ich dachte mir nach einigen Fehlschlägen: „Das Ding prüft doch online, ob ich es installieren darf, also kann ich einmal das Netzwerk sniffen!„. Also wird erst einmal WireShark angeschmissen, um zu schauen was so über meine Datenleitung wandert. Beachten muss man hierbei, das man alle Internet-Anwendungen schließt, sonst snifft man nur deren unnötigen Datenmist mit. Nach dem alle Programme geschlossen waren, habe ich in WireShark das sniffing aktiviert. Nun einmal auf den Installationsbutton gedrückt, dann habe ich die bekannte Fehlermeldung erhalten und das Sniffing konnte wieder deaktivieren werden. Jetzt kann die Analyse des kleinen Sniffs beginnen. Für eine bessere Übersicht habe ich einen HTTP-Filter verwendet. Schnell extrahiere ich aus dem kleinen Sniff 2 URL’s! Leider helfen mir diese nicht wirklich weiter. Die eine URL ist eine Art Konfigurationsdatei und die andere gibt mir nur die Fehlermeldung wieder:
http://eu.battle.net/static/mediakey/d3-authenticationcode-deDE.txt (Ausgabe des Fehler im Launcher)
http://ak.worldofwarcraft.com.edgesuite.net/d3-pod/20FB5BE9/InstallData/Win/diablo3_dede_disk_encrypted_win.blob (Konfiguration der Installation)
Ein falscher Prozess!
Nach dem Sniff habe ich weiter in OllyDbg rumgespielt und durch einen Zufall habe ich im Task-Manager verfolgt, was mit dem Task „Diablo III Setup.exe“ passiert. Besser gesagt ich habe diesen vergeblich gesucht. Das einzige was ich fand war der „Blizzard Launcher.exe“. Das hat mich ein wenig verdutzt, denn woher kommt dieser Launcher auf einmal? Einen Rechtklick auf den Prozess und den „Dateipfad öffnen“ (geht ab Windows Vista/7), schon haben wir das Ergebnis. Jetzt öffnet sich der Explorer und wir befinden uns im Verzeichnis
"D:\ProgramData\Battle.net\Client\Blizzard Launcher.1506"
. Sehr interessant, dass die Installationsdatei wieder einmal nur als Verweis missbraucht wird. Sowas ähnliches hab ich schon einmal bei der Diablo II Installation gesehen, aber nur aus der Online Variante von Diablo II (lädt man direkt von Blizzard runter). Also einmal diesen Blizzard Launcher starten und schauen was er mir zurück gibt: „Bitte starten Sie den Launcher vom Hauptordner des Spiels aus.“ Hmm… sehr komisch, aber interessant. Auch interessant ist es das in dem Ordner verschiedene QT4-DLL’s liegen, was daraufhin hinweist das der Launcher in QT geschrieben wurde. Ein Blick in OllyDbg und in den „intermodular Calls“ bestätigt diese Vermutung, da man die entsprechenden QT Befehle sieht. Das erleichtert schon einmal das Verständnis des Launchers, wenn ich ihn später mit OllyDbg auseinanderbaue. Ich widme mich erst einmal wieder der Installationsdatei, denn ich muss herausfinden, wie ich den Blizzard Launcher korrekt starten kann. Nach dem ich wieder etwas herumgespielt habe, habe ich auch endlich einen passenden Breakpoint bei dem String --install
gefunden:
CPU Disasm Address Hex dump Command Comments 01270D74 |. C78424 B80400 MOV DWORD PTR SS:[ESP+4B8],1 01270D7F |. 6A 09 PUSH 9 ; /Arg2 = 9 01270D81 |. BD 0F000000 MOV EBP,0F ; | 01270D86 |. 68 9CAF2801 PUSH OFFSET 0128AF9C ; |Arg1 = ASCII "--install" 01270D8B |. 8D4C24 20 LEA ECX,[ESP+20] ; | 01270D8F |. 896C24 38 MOV DWORD PTR SS:[ESP+38],EBP ; | 01270D93 |. 895C24 34 MOV DWORD PTR SS:[ESP+34],EBX ; | 01270D97 |. 885C24 24 MOV BYTE PTR SS:[ESP+24],BL ; | 01270D9B |. E8 1E05EFFF CALL 011612BE ; \Diablo_III_Setup.011612BE 01270DA0 |. 6A FF PUSH -1 ; /Arg3 = -1 01270DA2 |. C68424 BC0400 MOV BYTE PTR SS:[ESP+4BC],2 ; | 01270DAA |. 53 PUSH EBX ; |Arg2 01270DAB |. 8D5424 20 LEA EDX,[ESP+20] ; | 01270DAF |. 52 PUSH EDX ; |Arg1 01270DB0 |. 8D4C24 40 LEA ECX,[ESP+40] ; | 01270DB4 |. 896C24 58 MOV DWORD PTR SS:[ESP+58],EBP ; | 01270DB8 |. 895C24 54 MOV DWORD PTR SS:[ESP+54],EBX ; | 01270DBC |. 885C24 44 MOV BYTE PTR SS:[ESP+44],BL ; | 01270DC0 |. E8 EB03EFFF CALL 011611B0 ; \Diablo_III_Setup.011611B0 01270DC5 |. 8D4424 34 LEA EAX,[ESP+34] //[...] 01270E99 |.-/EB 03 JMP SHORT 01270E9E 01270E9B |> |83C0 04 ADD EAX,4 01270E9E |> \50 PUSH EAX ; / 01270E9F |. 68 A8AF2801 PUSH OFFSET 0128AFA8 ; |Format = "--tomepath=%s" 01270EA4 |. 8D8424 B80000 LEA EAX,[ESP+0B8] ; | 01270EAB |. E8 6021EFFF CALL 01163010 ; \Diablo_III_Setup.01163010 01270EB0 |. 8BF0 MOV ESI,EAX 01270EB2 |. 8BCE MOV ECX,ESI //[...] 0127103C |.-/EB 03 JMP SHORT 01271041 0127103E |> |83C0 04 ADD EAX,4 01271041 |> \50 PUSH EAX ; / 01271042 |. 68 68AF2801 PUSH OFFSET 0128AF68 ; |Format = "--game=%s" 01271047 |. 8D8424 B80000 LEA EAX,[ESP+0B8] ; | 0127104E |. E8 BD1FEFFF CALL 01163010 ; \Diablo_III_Setup.01163010 01271053 |. 8BF0 MOV ESI,EAX 01271055 |. 8BCE MOV ECX,ESI //[...]
Hier werden nun die einzelnen Befehle in einen String zusammen gepackt. Nun habe ich weiter im ASM Code die folgenden Zauberworte gefunden.
CPU Disasm Address Hex dump Command Comments 013F0A0C |. E8 7F1AF1FF CALL 01302490 ; \Diablo_III_Setup.01302490 013F0A11 |. 8B55 8C MOV EDX,DWORD PTR SS:[EBP-74] ; ASCII "{ "uid" : "client", "launch_arguments" : [ "--install", "--tomepath=D:\\Spiele\\Diablo 3\\Diablo-III-8370-deDE-Installer\\Installer Tome 1.MPQE", "--game=diablo3_dede", "--diskinstall", "--encrypted" ] }" 013F0A14 |. BF 10000000 MOV EDI,10 013F0A19 |. 83C4 08 ADD ESP,8 013F0A1C |. 8945 10 MOV DWORD PTR SS:[EBP+10],EAX
Nun war es mir klar! Die angebliche Installer-Datei verweist nur auf die "Blizzard Launcher.exe"
und übergibt die folgenden Parameter. In OllyDbg öffne ich nun den Blizzard Launcher, übergebe die selben Parameter.
Und siehe da: Es funktioniert!
Auf ein Neues
Nun geht es wieder von vorne los. Die „intermodular Calls“ und „referenced Strings“ durchsuchen und schauen ob man etwas tolles findet. Natürlich habe ich zum einen nach den Übergabeparametern gesucht, denn diese müssen ja irgendwie eingelesen und interpretiert werden. So hat man schon die ersten passenden Breakpoints gefunden. Auch interessant sind die Strings „diablo3_beta
„, „diablo3
„, „s2
„, „s2_beta
„, „wow_beta
“ und „wow
„, die ich gefunden habe. Da sieht man dass der Blizzard Launcher global für diese Spiele programmiert worden ist. Der Launcher wird also durch die entsprechenden Paramter, zu dem Launcher der er werden soll. Somit unterscheidet sich zwischen den Spielen nur die mitgelieferten Grafiken (Buttons, Menü etc.) und eventuell der Musik, die im Hintergrund läuft. Im Anschluss habe ich mich nun stundenlang mit den Parametern befasst. Nach einiger Zeit viel mir wieder ein, dass der Launcher auch für die Beta gilt. Dies sieht man an den Strings die ich schon aufgezählt habe. Da die Beta ja bereits im vollen Gange ist, bzw. den Beta Clienten man noch herunterladen kann, liegt es nahe, sich einmal die Beta Installation genauer anzuschauen. Nach kurzer Zeit konnte ich aus den Log-Dateien des Blizzard Launcher entnehmen, wie die Parameter für den Start der Beta Installation sind: „--install --tomepath=D:\Spiele\Diablo 3\Diablo III Beta deDE Setup.exe --game=diablo3_beta_dede --webinstall
„. Wie man sieht ist der tomepath komplett anders und statt des diskinstall Parameter, wird die Webinstallation ausgeführt. Nun habe ich mir auch einmal den Unterschied zwischen der Beta Installation und der Retail Installation angeschaut. In der Beta Installation, werden alle Daten aus dem Internet heruntergeladen, wobei bei der Retail Installation, alle Daten aus den MPQE Dateien gelesen werden. Ich habe nun ein wenig im Internet recherchiert, was denn MPQE genau ist. Was ich schon wusste ist, das MPQ eine Art Datenbank für Blizzard Spiele ist, in denen die Graphiken, Sounds, Skripte, Namen und weitere Dinge abgespeichert sind. MPQE ist die verschlüsselte Variante der MPQ. Die MPQE wird durch einen Schlüssel entschlüsselt und dieser wird wahrscheinlich über die URL http://eu.battle.net/static/mediakey/d3-authenticationcode-deDE.txt nach dem Release abrufbar sein. Erst wenn der Authentifizierungsschlüssel vorhanden ist, wird es möglich sein die Installationsdateien zu entschlüsseln. Also kann ich eine Retail-Installation abhaken. Jedoch habe ich ein Video gesehen, wo einige Russen es geschafft haben, den Launcher so zu manipulieren, dass die Geschichte die während der Installation erzählt wird, abzuspielen. Nun ja es war nicht die eigentliche Retail-Installation, sondern es wurde einfach der Beta-Client manipuliert und man konnte darüber schon die Installations-Geschichte von Diablo 3 verfolgen.
Die zweite Aufgabe
Nun hat mich das Fieber gepackt und ich wollte wissen, wie die Russen das angestellt haben. Ich überlegte, spielte mit den Parametern rum und überlegte wieder. Diese Installationsdateien, die die Vorgeschichte zu Diablo erzählen, müssen irgendwo unverschlüsselt sein. Was feststeht ist, dass die Daten irgendwo in der Retail Version vorhanden sein müssen. In den MPQE Dateien können sie nicht sein, da diese verschlüsselt sind und keiner an den Schlüssel heran kommt. Was haben wir denn noch für Dateien in der Retail rumfliegen. Hmm… eine external_ressources.rcc! Hört sich schon einmal gut an, doch was ist eine RCC Datei. Ich wusste dass der Launcher in QT programmiert wurde, also habe ich einmal das Internet befragt, was QT und RCC gemeinsam haben: Aha! Die RCC Datei wird durch einen Ressource Compiler generiert. Die Daten werden in eine Datei kompiliert, in der dann die Inhalte der Datei super einfach per QT-Framework abgerufen werden können. Ein Blick mit Notepad++ in die RCC verrät auch schon einiges. Der Header sagt sogar dass es sich um eine „qres“ Datei handelt, was wahrscheinlich für „QT-Ressource“ steht. Außerdem befanden sich in der RCC auch kleinere XML Tags von Photoshop. Das spricht eindeutig für Bilder, die dort lagern. Wahrscheinlich sind dies auch die Installationsbilder, die die Vorgeschichte von Diablo erzählen. Hier ein kleiner Auszug aus der RCC dies verdeutlichen:
<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.0-c060 61.134777, 2010/02/12-17:32:00"> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmp:CreatorTool="Adobe Photoshop CS5 Windows" xmp:CreateDate="2011-10-07T14:21:11-07:00" xmp:MetadataDate="2011-10-07T18:33:14-07:00" xmp:ModifyDate="2011-10-07T18:33:14-07:00" photoshop:ColorMode="3" photoshop:ICCProfile="sRGB IEC61966-2.1" dc:format="image/jpeg" xmpMM:InstanceID="xmp.iid:EB443D794DF1E011AC02B2AE2813E9F6" xmpMM:DocumentID="xmp.did:B9A2824212F1E0118733A10E918EE5D4" xmpMM:OriginalDocumentID="xmp.did:B9A2824212F1E0118733A10E918EE5D4">
Wie man sieht, wurde das Bild am 07.10.2011 erstellt und Blizzard arbeitet mit Photoshop CS5 :D. Jetzt muss ich einmal im Blizzard Launcher überprüfen, ob dieser nach einer external_ressources.rcc sucht und tatsächlich, hier ist der Code:
CPU Disasm Address Hex dump Command Comments 00405AD9 |. FFD2 CALL EDX ; external_ressource abfrage 00405ADB |. 8D4C24 24 LEA ECX,[ESP+24] 00405ADF |. 51 PUSH ECX ; /Arg1 00405AE0 |. 8BC8 MOV ECX,EAX ; | 00405AE2 |. 899C24 540100 MOV DWORD PTR SS:[ESP+154],EBX ; | 00405AE9 |. FF15 A0A95600 CALL DWORD PTR DS:[<&QtCore4.?toStdStrin ; \QtCore4.?toStdString@QString@@QBE?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ 00405AEF |. 8BC8 MOV ECX,EAX 00405AF1 |. C68424 500100 MOV BYTE PTR SS:[ESP+150],1 00405AF9 |. FF15 28A25600 CALL DWORD PTR DS:[<&MSVCP90.?c_str@?$ba ; [MSVCP90.?c_str@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEPBDXZ 00405AFF |. 50 PUSH EAX ; /Arg4 = external_ressources.rcc 00405B00 |. 8D5424 44 LEA EDX,[ESP+44] ; | 00405B04 |. 52 PUSH EDX ; |Arg3 = D:\Spiele\d666\ 00405B05 |. 8BC2 MOV EAX,EDX ; | 00405B07 |. 68 04010000 PUSH 104 ; |Arg2 = 104 00405B0C |. 50 PUSH EAX ; |Arg1 = D:\Spiele\d666\ 00405B0D |. E8 6E9C0400 CALL 0044F780 ; \Blizzard_Launcher.0044F780 00405B12 |. 83C4 10 ADD ESP,10 00405B15 |. 8D4C24 24 LEA ECX,[ESP+24] 00405B19 |. 889C24 500100 MOV BYTE PTR SS:[ESP+150],BL 00405B20 |. FF15 8CA25600 CALL DWORD PTR DS:[<&MSVCP90.??1?$basic_ ; [MSVCP90.??1?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@XZ 00405B26 |. 8D4C24 10 LEA ECX,[ESP+10] 00405B2A |. C78424 500100 MOV DWORD PTR SS:[ESP+150],-1 00405B35 |. FF15 58A95600 CALL DWORD PTR DS:[<&QtCore4.??1QString@ ; [QtCore4.??1QXmlStreamStringRef@@QAE@XZ 00405B3B |. 6A FF PUSH -1 ; /Arg3 = -1 00405B3D |. 8D4C24 44 LEA ECX,[ESP+44] ; | 00405B41 |. 51 PUSH ECX ; |Arg2 = D:\Spiele\d666\external_ressources.rcc 00405B42 |. 8D5424 18 LEA EDX,[ESP+18] ; | 00405B46 |. 52 PUSH EDX ; |Arg1 00405B47 |. FF15 44AA5600 CALL DWORD PTR DS:[<&QtCore4.?fromUtf8@Q ; \QtCore4.?fromUtf8@QString@@SA?AV1@PBDH@Z 00405B4D |. 83C4 0C ADD ESP,0C 00405B50 |. 50 PUSH EAX ; /Arg1 00405B51 |. 8D4C24 1C LEA ECX,[ESP+1C] ; | 00405B55 |. C78424 540100 MOV DWORD PTR SS:[ESP+154],2 ; | 00405B60 |. FF15 40AA5600 CALL DWORD PTR DS:[<&QtCore4.??0QFile@@Q ; \QtCore4.??0QFile@@QAE@ABVQString@@@Z 00405B66 |. 8D4C24 10 LEA ECX,[ESP+10] 00405B6A |. C68424 500100 MOV BYTE PTR SS:[ESP+150],4 00405B72 |. FF15 58A95600 CALL DWORD PTR DS:[<&QtCore4.??1QString@ ; [QtCore4.??1QXmlStreamStringRef@@QAE@XZ 00405B78 |. 8D4C24 18 LEA ECX,[ESP+18] ; EXIST FILE in QT ;) 00405B7C |. FF15 3CAA5600 CALL DWORD PTR DS:[<&QtCore4.?exists@QFi ; [QtCore4.?exists@QFile@@QBE_NXZ -- existiert die Datei, danke QT :D 00405B82 |. 84C0 TEST AL,AL 00405B84 |. /0F84 9C000000 JE 00405C26 ; Datei nicht vorhanden JUMP 00405B8A |. 8D4C24 18 LEA ECX,[ESP+18] 00405B8E |. FF15 38AA5600 CALL DWORD PTR DS:[<&QtCore4.?size@QFile ; [QtCore4.?size@QFile@@UBE_JXZ -- Dateigröße 00405B94 |. 8BF0 MOV ESI,EAX 00405B96 |. 56 PUSH ESI 00405B97 |. E8 82E51000 CALL 0051411E 00405B9C |. 8BF8 MOV EDI,EAX 00405B9E |. 8BC4 MOV EAX,ESP 00405BA0 |. 8D4C24 1C LEA ECX,[ESP+1C] 00405BA4 |. 896424 18 MOV DWORD PTR SS:[ESP+18],ESP ; Öffne external und lade sie dann 00405BA8 |. C700 01000000 MOV DWORD PTR DS:[EAX],1 ; /Arg1 => 1 00405BAE |. FF15 34AA5600 CALL DWORD PTR DS:[<&QtCore4.?open@QFile ; \QtCore4.?open@QFile@@UAE_NV?$QFlags@W4OpenModeFlag@QIODevice@@@@@Z 00405BB4 |. 3AC3 CMP AL,BL
Installer Owned
Man kann super sehen was QT macht :D Danke für die Super Kommentare OllyDbg. Also muss ich nur noch die external_ressources.rcc in das selbe Verzeichnis schieben und schon liest der Launcher die Datei mit ein. So habe ich dann das Beta Setup mit der external_ressource.rcc in einen Ordner geschoben und nun sollte es eigentlich funktionieren. Wenn ich nun theoretisch die Installation starte, sollte ich während der Installation die Installationsgeschichte sehen. Also schnell in OllyDbg mit den passenden Argumenten das Setup laden und dann klappte es auf Anhieb. Die Freude war groß, doch sollte nicht lange wären. Nach einem Abbruch der Installation und ein Neustart des Beta Setup zeigten mir, dass ich mir die Geschichte nicht noch ein zweites Mal ansehen konnte.
Ich versteh es einfach nicht! Da ich den Launcher über OllyDbg gestartet habe, dachte ich dass ich irgendwo ein paar Flags geändert oder irgendwo doch zu viel am ASM Code rumgespielt habe. Ich wusste nicht mehr genau was ich eigentlich genau gemacht hatte und war nach dem Misserfolg erst einmal demotiviert. Ich ließ die Tage verstreichen und setzte mich ein paar Tage später wieder an das Geschehen. Ich habe neue Breakpoints gesetzt und alles versucht, um es wieder zum Laufen zu bringen, doch nichts half. Ich hab Schlussendlich die Beta noch einmal deinstalliert und danach weiter an den Sourcen gespielt, bis es auf einmal wieder lief. Die Installationsgeschichte lief wieder einmal vor mir! Vor Freude bin ich durch die Wohnung gehüpft, hab die Installation abgebrochen und wollte wissen, ob es nach erneutem starten wieder funktioniert. Ich sah folgendes:
Nach erneutem Start lief der Beta Launcher so wie immer. Statt einer Geschichte bekam ich Infos zur Beta zu sehen. Ich konnte es nicht fassen! Was hatte ich falsch gemacht? Ich wusste es wieder einmal nicht und nach erneutem Rückschlag, ließ ich wieder ein paar Tage verstreichen. Nach einiger Zeit setzte ich mich wieder an den Code. Ich hatte ein super gutes Gefühl und dachte mir: „Heute ist ein guter Tag, um den Mist zu knacken und du wirst es knacken!„. Ich spielte wieder ein wenig mit OllyDbg rum und löschte Zwischendurch den D:\ProgramData\Battle.net
Ordner. Diesmal merkte ich mir dies und nach erneutem Probieren funktionierte es nun wieder. Meine Freude war noch nicht groß, da ein Abbruch wieder selbiges Phänomen hervorrufen würde, welches ich nun schon zu oft erlebt habe. Aber ich hatte einen Verdacht, dass es an diesen Battle.net Ordner liegt. Nach erneuten überprüfen meines Verdachtes funktionierte es wieder und nun konnte ich durch die Wohnung springen. Ich verstand nun endlich den Prozess, den ich mit OllyDbg die ganze Zeit durchlaufen bin. Es passiert folgendes bei der Installation: Installiert man die Beta neu auf den Rechner, startet der Launcher normal und verweist auf die EULA. Dannach beginnt der Download der Beta und er lädt alle Daten in den RAM (inklusive der external_ressource.rcc). Bricht man nun diesen Vorgang der Beta ab, erkennt der Launcher dies bei einem Neustart und wechselt sofort in den Download Modus. Die external_ressources.rcc wird zwar mit in den RAM geladen, jedoch werden die Dateien nicht mehr im Code angesprochen und deswegen sieht man die Geschichte nicht mehr. Wie man sieht kann man sagen, ich hab mich zwei mal selber geowned :D.
Fazit
Blizzard benutzt einen Globalen Launcher der für Starcraft 2, World of Warcraft und Diablo 3 benutzt wird. Dieser wird durch die Parameter „--install
„, „--tomePath=%ressource_data%
„, „--game=%spiel%_%region%
„, „--webinstall
„, „--diskinstall
„, „--encrypted
“ oder „--unencrypted
“ entsprechend angepasst. Man muss sagen die wichtigsten Parameter sind der tomePath und der game Parameter die unbedingt eingetragen werden müssen. Ist --install
nicht da, wird er automatisch hinzugefügt. Desweiteren muss man sich zwischen Webinstall oder Diskinstall entscheiden und zwischen encrypted oder unencrypted entscheiden. Wird bei ersterem kein Parameter übergeben, wird immer automatisch die Webinstallation ausgeführt und bei letzterem wird bei nicht Übergabe der Unencrypted Parameter automatisch übergeben. Es war sehr interessant einmal unter die Haube des Launchers zu blicken und wie es Blizzard mit der Installation so handhabt.
Als kleinen Spaß habe ich noch einmal den String MSG herausgesucht, um die Fehlermeldung abfangen zu können und sie im RAM dann manipulieren kann ;) Der Aufwand = 0 und nichtwissende denken dann, dass du der übelste H4x0r bist, wobei man nur den RAM schnell manipuliert und ein Bild schießt :D
Ich hoffe ihr hattet auch ein wenig Spaß beim lesen und ich wünsche euch viel Glück in der Hölle. Damit endet dann an dieser Stelle die Triologie des Diablo Crackens :)
Greetz TheVamp
Spoiler! Die Vorgeschichte von Diablo 3
01 | 02 | 03 | 04 |
05 | 06 | 07 | 08 |
09 | 10 | 11 | 12 |
13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 |
21 | 22 | 23 |
Zusatz
Ihr wollt mehr „ASM – Shit“, here we go:
Die folgenden Ausschnitte sind allesamt aus den Blizzard Launcher
Fehlermeldungsausgabe vor Release
CPU Disasm Address Hex dump Command Comments 00409130 /$ 6A FF PUSH -1 ; Blizzard_Launcher.00409130(guessed Arg1) 00409132 |. 68 523E5500 PUSH 00553E52 ; Entry point 00409137 |. 64:A1 0000000 MOV EAX,DWORD PTR FS:[0] 0040913D |. 50 PUSH EAX 0040913E |. 83EC 08 SUB ESP,8 00409141 |. 53 PUSH EBX 00409142 |. A1 B0DA2A01 MOV EAX,DWORD PTR DS:[12ADAB0] 00409147 |. 33C4 XOR EAX,ESP 00409149 |. 50 PUSH EAX 0040914A |. 8D4424 10 LEA EAX,[LOCAL.2] 0040914E |. 64:A3 0000000 MOV DWORD PTR FS:[0],EAX 00409154 |. 8B4424 20 MOV EAX,DWORD PTR SS:[ARG.1] 00409158 |. 50 PUSH EAX ; /Arg2 => [ARG.1] 00409159 |. 8D4C24 10 LEA ECX,[LOCAL.3] ; | 0040915D |. 51 PUSH ECX ; |Arg1 => OFFSET LOCAL.3 0040915E |. E8 4D8D0100 CALL 00421EB0 ; \Blizzard_Launcher.00421EB0 00409163 |. 83C4 08 ADD ESP,8 00409166 |. 68 04E25600 PUSH OFFSET 0056E204 ; /Arg1 = ASCII "MSG:" 0040916B |. 8D4C24 0C LEA ECX,[LOCAL.4] ; | 0040916F |. C74424 1C 000 MOV DWORD PTR SS:[LOCAL.0],0 ; | 00409177 |. FF15 94A95600 CALL DWORD PTR DS:[<&QtCore4.??0QString@ ; \QtCore4.??0QString@@QAE@PBD@Z 0040917D |. 6A 01 PUSH 1 ; /Arg2 = 1 0040917F |. 8D5424 0C LEA EDX,[LOCAL.4] ; | 00409183 |. 52 PUSH EDX ; |Arg1 => OFFSET LOCAL.4 00409184 |. 8D4C24 14 LEA ECX,[LOCAL.3] ; | 00409188 |. C64424 20 01 MOV BYTE PTR SS:[LOCAL.0],1 ; | 0040918D |. FF15 C4AA5600 CALL DWORD PTR DS:[<&QtCore4.?startsWith ; \QtCore4.?startsWith@QString@@QBE_NABV1@W4CaseSensitivity@Qt@@@Z 00409193 |. 8D4C24 08 LEA ECX,[LOCAL.4] 00409197 |. 8AD8 MOV BL,AL 00409199 |. C64424 18 00 MOV BYTE PTR SS:[LOCAL.0],0 0040919E |. FF15 58A95600 CALL DWORD PTR DS:[<&QtCore4.??1QString@ ; [QtCore4.??1QXmlStreamStringRef@@QAE@XZ 004091A4 |. 8D4C24 0C LEA ECX,[LOCAL.3] 004091A8 |. C74424 18 FFF MOV DWORD PTR SS:[LOCAL.0],-1 004091B0 |. FF15 58A95600 CALL DWORD PTR DS:[<&QtCore4.??1QString@ ; [QtCore4.??1QXmlStreamStringRef@@QAE@XZ 004091B6 |. 8AC3 MOV AL,BL 004091B8 |. 8B4C24 10 MOV ECX,DWORD PTR SS:[LOCAL.2] 004091BC |. 64:890D 00000 MOV DWORD PTR FS:[0],ECX 004091C3 |. 59 POP ECX 004091C4 |. 5B POP EBX 004091C5 |. 83C4 14 ADD ESP,14 004091C8 \. C3 RETN
Slideshow für die Vorgeschichte
CPU Disasm Address Hex dump Command Comments 0040FC30 /$ 6A FF PUSH -1 ; Blizzard_Launcher.0040FC30(guessed Arg1) 0040FC32 |. 68 054B5500 PUSH 00554B05 ; Entry point 0040FC37 |. 64:A1 0000000 MOV EAX,DWORD PTR FS:[0] 0040FC3D |. 50 PUSH EAX 0040FC3E |. 83EC 14 SUB ESP,14 0040FC41 |. 56 PUSH ESI 0040FC42 |. 57 PUSH EDI 0040FC43 |. A1 B0DA2A01 MOV EAX,DWORD PTR DS:[12ADAB0] 0040FC48 |. 33C4 XOR EAX,ESP 0040FC4A |. 50 PUSH EAX 0040FC4B |. 8D4424 20 LEA EAX,[LOCAL.2] 0040FC4F |. 64:A3 0000000 MOV DWORD PTR FS:[0],EAX 0040FC55 |. 8BF1 MOV ESI,ECX 0040FC57 |. 68 B4F65600 PUSH OFFSET 0056F6B4 ; /Arg1 = ASCII "slide%1" 0040FC5C |. 8D4C24 18 LEA ECX,[LOCAL.5] ; | 0040FC60 |. C74424 1C 000 MOV DWORD PTR SS:[LOCAL.4],0 ; | 0040FC68 |. FF15 94A95600 CALL DWORD PTR DS:[<&QtCore4.??0QString@ ; \QtCore4.??0QString@@QAE@PBD@Z 0040FC6E |. 8BF8 MOV EDI,EAX 0040FC70 |. 6A 30 PUSH 30 ; /Arg1 = 30 0040FC72 |. 8D4C24 12 LEA ECX,[LOCAL.7+2] ; | 0040FC76 |. C74424 2C 010 MOV DWORD PTR SS:[LOCAL.0],1 ; | 0040FC7E |. FF15 B4AB5600 CALL DWORD PTR DS:[<&QtCore4.??0QChar@@Q ; \QtCore4.??0QChar@@QAE@D@Z 0040FC84 |. 50 PUSH EAX ; /Arg5 0040FC85 |. 8B46 08 MOV EAX,DWORD PTR DS:[ESI+8] ; | 0040FC88 |. 6A 0A PUSH 0A ; |Arg4 = 0A 0040FC8A |. 6A 02 PUSH 2 ; |Arg3 = 2 0040FC8C |. 40 INC EAX ; | 0040FC8D |. 50 PUSH EAX ; |Arg2 0040FC8E |. 8D4C24 20 LEA ECX,[LOCAL.6] ; | 0040FC92 |. 51 PUSH ECX ; |Arg1 => OFFSET LOCAL.6 0040FC93 |. 8BCF MOV ECX,EDI ; | 0040FC95 |. FF15 C0AB5600 CALL DWORD PTR DS:[<&QtCore4.?arg@QStrin ; \QtCore4.?arg@QString@@QBE?AV1@JHHABVQChar@@@Z 0040FC9B |. 8D4C24 14 LEA ECX,[LOCAL.5] 0040FC9F |. C64424 28 03 MOV BYTE PTR SS:[LOCAL.0],3 0040FCA4 |. FF15 58A95600 CALL DWORD PTR DS:[<&QtCore4.??1QString@ ; [QtCore4.??1QXmlStreamStringRef@@QAE@XZ 0040FCAA |. 8D5424 1C LEA EDX,[LOCAL.3] 0040FCAE |. 52 PUSH EDX ; /Arg1 => OFFSET LOCAL.3 0040FCAF |. 8D4C24 14 LEA ECX,[LOCAL.6] ; | 0040FCB3 |. FF15 A8AB5600 CALL DWORD PTR DS:[<&QtCore4.?toAscii@QS ; \QtCore4.?toAscii@QString@@QBE?AVQByteArray@@XZ 0040FCB9 |. 6A 00 PUSH 0 ; /Arg5 = 0 0040FCBB |. 6A 00 PUSH 0 ; |Arg4 = 0 0040FCBD |. 8BC8 MOV ECX,EAX ; | 0040FCBF |. C64424 30 04 MOV BYTE PTR SS:[LOCAL.0],4 ; | 0040FCC4 |. FF15 68AB5600 CALL DWORD PTR DS:[<&QtCore4.??BQByteArr ; | 0040FCCA |. 8B7424 38 MOV ESI,DWORD PTR SS:[ARG.1] ; | 0040FCCE |. 50 PUSH EAX ; |Arg3 0040FCCF |. 68 A8F65600 PUSH OFFSET 0056F6A8 ; |Arg2 = ASCII "Slideshow" 0040FCD4 |. 56 PUSH ESI ; |Arg1 => [ARG.1] 0040FCD5 |. FF15 50AA5600 CALL DWORD PTR DS:[<&QtCore4.?translate@ ; \QtCore4.?translate@QCoreApplication@@SA?AVQString@@PBD00W4Encoding@1@@Z 0040FCDB |. 83C4 14 ADD ESP,14 0040FCDE |. 8D4C24 1C LEA ECX,[LOCAL.3] 0040FCE2 |. C74424 18 010 MOV DWORD PTR SS:[LOCAL.4],1 0040FCEA |. C64424 28 03 MOV BYTE PTR SS:[LOCAL.0],3 0040FCEF |. FF15 5CAA5600 CALL DWORD PTR DS:[<&QtCore4.??1QByteArr ; [QtCore4.??1QByteArray@@QAE@XZ 0040FCF5 |. 8D4C24 10 LEA ECX,[LOCAL.6] 0040FCF9 |. C64424 28 00 MOV BYTE PTR SS:[LOCAL.0],0 0040FCFE |. FF15 58A95600 CALL DWORD PTR DS:[<&QtCore4.??1QString@ ; [QtCore4.??1QXmlStreamStringRef@@QAE@XZ 0040FD04 |. 8BC6 MOV EAX,ESI 0040FD06 |. 8B4C24 20 MOV ECX,DWORD PTR SS:[LOCAL.2] 0040FD0A |. 64:890D 00000 MOV DWORD PTR FS:[0],ECX 0040FD11 |. 59 POP ECX 0040FD12 |. 5F POP EDI 0040FD13 |. 5E POP ESI 0040FD14 |. 83C4 20 ADD ESP,20 0040FD17 \. C2 0400 RETN 4
Welcher Launcher soll es denn sein ;)
CPU Disasm Address Hex dump Command Comments 00427E01 |. 8B4424 0C MOV EAX,DWORD PTR SS:[ARG.2] 00427E05 |. 56 PUSH ESI 00427E06 |. C74424 04 000 MOV DWORD PTR SS:[LOCAL.0],0 00427E0E |. 83F8 05 CMP EAX,5 ; Switch (cases 0..5, 7 exits) 00427E11 |. 0F87 B7000000 JA 00427ECE 00427E17 |. FF2485 E47E42 JMP DWORD PTR DS:[EAX*4+427EE4] 00427E1E |> 6A 00 PUSH 0 ; Case 2 of switch Blizzard_Launcher.427E0E 00427E20 |. 6A 00 PUSH 0 00427E22 |. 68 38335700 PUSH OFFSET 00573338 ; ASCII "Diablo III Beta" 00427E27 |> 8B7424 18 MOV ESI,DWORD PTR SS:[ARG.1] 00427E2B |. 68 2C335700 PUSH OFFSET 0057332C ; |Arg2 = ASCII "ProductD3" 00427E30 |. 56 PUSH ESI ; |Arg1 => [ARG.1] 00427E31 |. FF15 50AA5600 CALL DWORD PTR DS:[<&QtCore4.?translate@ ; \QtCore4.?translate@QCoreApplication@@SA?AVQString@@PBD00W4Encoding@1@@Z 00427E37 |. 83C4 14 ADD ESP,14 00427E3A |. 8BC6 MOV EAX,ESI 00427E3C |. 5E POP ESI 00427E3D |. 59 POP ECX 00427E3E |. C3 RETN 00427E3F |> 6A 00 PUSH 0 ; Case 3 of switch Blizzard_Launcher.427E0E 00427E41 |. 6A 00 PUSH 0 00427E43 |. 68 20335700 PUSH OFFSET 00573320 ; ASCII "Diablo III" 00427E48 |.^ EB DD JMP SHORT 00427E27 00427E4A |> 8B7424 0C MOV ESI,DWORD PTR SS:[ARG.1] ; Case 0 of switch Blizzard_Launcher.427E0E 00427E4E |. 6A 00 PUSH 0 ; /Arg5 = 0 00427E50 |. 6A 00 PUSH 0 ; |Arg4 = 0 00427E52 |. 68 0C335700 PUSH OFFSET 0057330C ; |Arg3 = ASCII "StarCraft II Beta" 00427E57 |. 68 00335700 PUSH OFFSET 00573300 ; |Arg2 = ASCII "ProductSC2" 00427E5C |. 56 PUSH ESI ; |Arg1 => [ARG.1] 00427E5D |. FF15 50AA5600 CALL DWORD PTR DS:[<&QtCore4.?translate@ ; \QtCore4.?translate@QCoreApplication@@SA?AVQString@@PBD00W4Encoding@1@@Z 00427E63 |. 83C4 14 ADD ESP,14 00427E66 |. 8BC6 MOV EAX,ESI 00427E68 |. 5E POP ESI 00427E69 |. 59 POP ECX 00427E6A |. C3 RETN 00427E6B |> 8B7424 0C MOV ESI,DWORD PTR SS:[ARG.1] ; Case 1 of switch Blizzard_Launcher.427E0E 00427E6F |. 6A 00 PUSH 0 ; /Arg5 = 0 00427E71 |. 6A 00 PUSH 0 ; |Arg4 = 0 00427E73 |. 68 F0325700 PUSH OFFSET 005732F0 ; |Arg3 = ASCII "StarCraft II" 00427E78 |. 68 00335700 PUSH OFFSET 00573300 ; |Arg2 = ASCII "ProductSC2" 00427E7D |. 56 PUSH ESI ; |Arg1 => [ARG.1] 00427E7E |. FF15 50AA5600 CALL DWORD PTR DS:[<&QtCore4.?translate@ ; \QtCore4.?translate@QCoreApplication@@SA?AVQString@@PBD00W4Encoding@1@@Z 00427E84 |. 83C4 14 ADD ESP,14 00427E87 |. 8BC6 MOV EAX,ESI 00427E89 |. 5E POP ESI 00427E8A |. 59 POP ECX 00427E8B |. C3 RETN 00427E8C |> 8B7424 0C MOV ESI,DWORD PTR SS:[ARG.1] ; Case 4 of switch Blizzard_Launcher.427E0E 00427E90 |. 6A 00 PUSH 0 ; /Arg5 = 0 00427E92 |. 6A 00 PUSH 0 ; |Arg4 = 0 00427E94 |. 68 D8325700 PUSH OFFSET 005732D8 ; |Arg3 = ASCII "World of Warcraft Beta" 00427E99 |. 68 CC325700 PUSH OFFSET 005732CC ; |Arg2 = ASCII "ProductWoW" 00427E9E |. 56 PUSH ESI ; |Arg1 => [ARG.1] 00427E9F |. FF15 50AA5600 CALL DWORD PTR DS:[<&QtCore4.?translate@ ; \QtCore4.?translate@QCoreApplication@@SA?AVQString@@PBD00W4Encoding@1@@Z 00427EA5 |. 83C4 14 ADD ESP,14 00427EA8 |. 8BC6 MOV EAX,ESI 00427EAA |. 5E POP ESI 00427EAB |. 59 POP ECX 00427EAC |. C3 RETN 00427EAD |> 8B7424 0C MOV ESI,DWORD PTR SS:[ARG.1] ; Case 5 of switch Blizzard_Launcher.427E0E 00427EB1 |. 6A 00 PUSH 0 ; /Arg5 = 0 00427EB3 |. 6A 00 PUSH 0 ; |Arg4 = 0 00427EB5 |. 68 B8325700 PUSH OFFSET 005732B8 ; |Arg3 = ASCII "World of Warcraft" 00427EBA |. 68 CC325700 PUSH OFFSET 005732CC ; |Arg2 = ASCII "ProductWoW" 00427EBF |. 56 PUSH ESI ; |Arg1 => [ARG.1] 00427EC0 |. FF15 50AA5600 CALL DWORD PTR DS:[<&QtCore4.?translate@ ; \QtCore4.?translate@QCoreApplication@@SA?AVQString@@PBD00W4Encoding@1@@Z 00427EC6 |. 83C4 14 ADD ESP,14 00427EC9 |. 8BC6 MOV EAX,ESI 00427ECB |. 5E POP ESI 00427ECC |. 59 POP ECX 00427ECD |. C3 RETN 00427ECE |> 8B7424 0C MOV ESI,DWORD PTR SS:[ARG.1] ; Default case of switch Blizzard_Launcher.427E0E 00427ED2 |. 68 A8325700 PUSH OFFSET 005732A8 ; /Arg1 = ASCII "Unknown Product" 00427ED7 |. 8BCE MOV ECX,ESI ; | 00427ED9 |. FF15 94A95600 CALL DWORD PTR DS:[<&QtCore4.??0QString@ ; \QtCore4.??0QString@@QAE@PBD@Z 00427EDF |. 8BC6 MOV EAX,ESI 00427EE1 |. 5E POP ESI 00427EE2 |. 59 POP ECX 00427EE3 \. C3 RETN
Zeittimer für die Slideshow initialisieren ;9
CPU Disasm Address Hex dump Command Comments 004101A0 /$ 56 PUSH ESI 004101A1 |. 8BF1 MOV ESI,ECX 004101A3 |. 807E 44 00 CMP BYTE PTR DS:[ESI+44],0 004101A7 |. 75 03 JNE SHORT 004101AC 004101A9 |. FF46 08 INC DWORD PTR DS:[ESI+8] 004101AC |> 8D4E 0C LEA ECX,[ESI+0C] 004101AF |. FF15 BCA95600 CALL DWORD PTR DS:[<&QtCore4.?size@QList 004101B5 |. 3946 08 CMP DWORD PTR DS:[ESI+8],EAX 004101B8 |. 75 07 JNE SHORT 004101C1 004101BA |. C746 08 00000 MOV DWORD PTR DS:[ESI+8],0 004101C1 |> 8D4E 2C LEA ECX,[ESI+2C] 004101C4 |. FF15 C4AB5600 CALL DWORD PTR DS:[<&QtCore4.?stop@QTime ; [QtCore4.?stop@QTimer@@QAEXXZ 004101CA |. 8D4E 10 LEA ECX,[ESI+10] 004101CD |. C646 44 00 MOV BYTE PTR DS:[ESI+44],0 004101D1 |. FF15 C8AB5600 CALL DWORD PTR DS:[<&QtCore4.?start@QTim ; [QtCore4.?start@QTimer@@QAEXXZ 004101D7 |. D9E8 FLD1 004101D9 |. 83EC 08 SUB ESP,8 004101DC |. DD1C24 FSTP QWORD PTR SS:[ARG.RETADDR] ; /Arg1_2 004101DF |. 8BCE MOV ECX,ESI ; | 004101E1 |. E8 4A9A0200 CALL 00439C30 ; \Blizzard_Launcher.00439C30 004101E6 |. D9E8 FLD1 004101E8 |. 83EC 08 SUB ESP,8 004101EB |. DD1C24 FSTP QWORD PTR SS:[ARG.RETADDR] ; /Arg1_2 004101EE |. 8BCE MOV ECX,ESI ; | 004101F0 |. E8 6B9A0200 CALL 00439C60 ; \Blizzard_Launcher.00439C60 004101F5 |. 6A 01 PUSH 1 ; /Arg1 = 1 004101F7 |. 8BCE MOV ECX,ESI ; | 004101F9 |. E8 62FDFFFF CALL 0040FF60 ; \Blizzard_Launcher.0040FF60 004101FE |. 5E POP ESI 004101FF \. C3 RETN 00410200 /$ 56 PUSH ESI 00410201 |. 8BF1 MOV ESI,ECX 00410203 |. 8346 08 FF ADD DWORD PTR DS:[ESI+8],-1 00410207 |. 79 0D JNS SHORT 00410216 00410209 |. 8D4E 0C LEA ECX,[ESI+0C] 0041020C |. FF15 BCA95600 CALL DWORD PTR DS:[<&QtCore4.?size@QList 00410212 |. 48 DEC EAX 00410213 |. 8946 08 MOV DWORD PTR DS:[ESI+8],EAX 00410216 |> 8D4E 2C LEA ECX,[ESI+2C] 00410219 |. FF15 C4AB5600 CALL DWORD PTR DS:[<&QtCore4.?stop@QTime ; [QtCore4.?stop@QTimer@@QAEXXZ 0041021F |. 8D4E 10 LEA ECX,[ESI+10] 00410222 |. C646 44 00 MOV BYTE PTR DS:[ESI+44],0 00410226 |. FF15 C8AB5600 CALL DWORD PTR DS:[<&QtCore4.?start@QTim ; [QtCore4.?start@QTimer@@QAEXXZ 0041022C |. D9E8 FLD1 0041022E |. 83EC 08 SUB ESP,8 00410231 |. DD1C24 FSTP QWORD PTR SS:[ARG.RETADDR] ; /Arg1_2 00410234 |. 8BCE MOV ECX,ESI ; | 00410236 |. E8 F5990200 CALL 00439C30 ; \Blizzard_Launcher.00439C30 0041023B |. D9E8 FLD1 0041023D |. 83EC 08 SUB ESP,8 00410240 |. DD1C24 FSTP QWORD PTR SS:[ARG.RETADDR] ; /Arg1_2 00410243 |. 8BCE MOV ECX,ESI ; | 00410245 |. E8 169A0200 CALL 00439C60 ; \Blizzard_Launcher.00439C60 0041024A |. 6A 01 PUSH 1 ; /Arg1 = 1 0041024C |. 8BCE MOV ECX,ESI ; | 0041024E |. E8 0DFDFFFF CALL 0040FF60 ; \Blizzard_Launcher.0040FF60 00410253 |. 5E POP ESI 00410254 \. C3 RETN
Downloadseite vom Launcher wird zusammen gebastelt
CPU Disasm Address Hex dump Command Comments 004062B0 /$ 6A FF PUSH -1 004062B2 |. 68 C3365500 PUSH 005536C3 ; Entry point 004062B7 |. 64:A1 0000000 MOV EAX,DWORD PTR FS:[0] 004062BD |. 50 PUSH EAX 004062BE |. 83EC 08 SUB ESP,8 004062C1 |. 55 PUSH EBP 004062C2 |. 56 PUSH ESI 004062C3 |. 57 PUSH EDI 004062C4 |. A1 B0DA2A01 MOV EAX,DWORD PTR DS:[12ADAB0] 004062C9 |. 33C4 XOR EAX,ESP 004062CB |. 50 PUSH EAX 004062CC |. 8D4424 18 LEA EAX,[LOCAL.2] 004062D0 |. 64:A3 0000000 MOV DWORD PTR FS:[0],EAX 004062D6 |. 8BF1 MOV ESI,ECX 004062D8 |. 68 B0000000 PUSH 0B0 004062DD |. E8 B6DE1000 CALL <JMP.&MSVCR90.??2@YAPAXI@Z> ; Jump to MSVCR90.??2@YAPAXI@Z 004062E2 |. 83C4 04 ADD ESP,4 004062E5 |. 894424 14 MOV DWORD PTR SS:[LOCAL.3],EAX 004062E9 |. C74424 20 000 MOV DWORD PTR SS:[LOCAL.0],0 004062F1 |. 85C0 TEST EAX,EAX 004062F3 |. 74 0D JE SHORT 00406302 004062F5 |. 6A 01 PUSH 1 ; /Arg1 = 1 004062F7 |. 8BC8 MOV ECX,EAX ; | 004062F9 |. E8 22C00000 CALL 00412320 ; \Blizzard_Launcher.00412320 004062FE |. 8BF8 MOV EDI,EAX 00406300 |. EB 02 JMP SHORT 00406304 00406302 |> 33FF XOR EDI,EDI 00406304 |> 8B2D 9CA95600 MOV EBP,DWORD PTR DS:[<&QtCore4.?connect 0040630A |. 6A 00 PUSH 0 0040630C |. 68 BCC95600 PUSH OFFSET 0056C9BC ; ASCII "1onUpdateProgress( Phoenix::UpdateProgressData const& )" 00406311 |. 57 PUSH EDI 00406312 |. 68 80C95600 PUSH OFFSET 0056C980 ; ASCII "2gameUpdateProgressed( Phoenix::UpdateProgressData const& )" 00406317 |. 56 PUSH ESI 00406318 |. C74424 34 FFF MOV DWORD PTR SS:[LOCAL.0],-1 00406320 |. FFD5 CALL EBP 00406322 |. 8B46 08 MOV EAX,DWORD PTR DS:[ESI+8] 00406325 |. 8B48 10 MOV ECX,DWORD PTR DS:[EAX+10] 00406328 |. 6A 00 PUSH 0 0040632A |. 68 28D05600 PUSH OFFSET 0056D028 ; ASCII "1onInstallCompleted()" 0040632F |. 57 PUSH EDI 00406330 |. 68 14D05600 PUSH OFFSET 0056D014 ; ASCII "2installCompleted()" 00406335 |. 51 PUSH ECX 00406336 |. FFD5 CALL EBP 00406338 |. 8B56 08 MOV EDX,DWORD PTR DS:[ESI+8] 0040633B |. 8B42 10 MOV EAX,DWORD PTR DS:[EDX+10] 0040633E |. 6A 00 PUSH 0 00406340 |. 68 18CC5600 PUSH OFFSET 0056CC18 ; ASCII "1onUpdateImpeded(int)" 00406345 |. 57 PUSH EDI 00406346 |. 68 04CC5600 PUSH OFFSET 0056CC04 ; ASCII "2updateImpeded(int)" 0040634B |. 50 PUSH EAX 0040634C |. FFD5 CALL EBP 0040634E |. 8B4E 08 MOV ECX,DWORD PTR DS:[ESI+8] 00406351 |. 8B51 10 MOV EDX,DWORD PTR DS:[ECX+10] 00406354 |. 6A 00 PUSH 0 00406356 |. 68 ECCB5600 PUSH OFFSET 0056CBEC ; ASCII "1onUpdateNotImpeded()" 0040635B |. 57 PUSH EDI 0040635C |. 68 D8CB5600 PUSH OFFSET 0056CBD8 ; ASCII "2updateNotImpeded()" 00406361 |. 52 PUSH EDX 00406362 |. FFD5 CALL EBP 00406364 |. 83C4 50 ADD ESP,50 00406367 |. 6A 00 PUSH 0 00406369 |. 68 F8CF5600 PUSH OFFSET 0056CFF8 ; ASCII "1onCancelInstallRequested()" 0040636E |. 56 PUSH ESI 0040636F |. 68 D8CF5600 PUSH OFFSET 0056CFD8 ; ASCII "2userRequestedCancelInstall()" 00406374 |. 57 PUSH EDI 00406375 |. FFD5 CALL EBP 00406377 |. 6A 00 PUSH 0 00406379 |. 68 0CCA5600 PUSH OFFSET 0056CA0C ; ASCII "1onGameIsPlayable( bool )" 0040637E |. 57 PUSH EDI 0040637F |. 68 F4C95600 PUSH OFFSET 0056C9F4 ; ASCII "2gameIsPlayable( bool )" 00406384 |. 56 PUSH ESI 00406385 |. FFD5 CALL EBP 00406387 |. 6A 00 PUSH 0 00406389 |. 68 40CA5600 PUSH OFFSET 0056CA40 ; ASCII "1onPlayRequested()" 0040638E |. 56 PUSH ESI 0040638F |. 68 28CA5600 PUSH OFFSET 0056CA28 ; ASCII "2userRequestedPlay()" 00406394 |. 57 PUSH EDI 00406395 |. FFD5 CALL EBP 00406397 |. 6A 00 PUSH 0 00406399 |. 68 C4CF5600 PUSH OFFSET 0056CFC4 ; ASCII "1onEnableMenuBar()" 0040639E |. 56 PUSH ESI 0040639F |. 68 B0CF5600 PUSH OFFSET 0056CFB0 ; ASCII "2enableMenuBar()" 004063A4 |. 57 PUSH EDI 004063A5 |. FFD5 CALL EBP 004063A7 |. 83C4 50 ADD ESP,50 004063AA |. 57 PUSH EDI ; /Arg1 004063AB |. 8BCE MOV ECX,ESI ; | 004063AD |. E8 0EB7FFFF CALL 00401AC0 ; \Blizzard_Launcher.00401AC0 004063B2 |. 8B0D B8A95600 MOV ECX,DWORD PTR DS:[<&QtCore4.?shared_ 004063B8 |. 894C24 10 MOV DWORD PTR SS:[LOCAL.4],ECX 004063BC |. FF15 B4A95600 CALL DWORD PTR DS:[<&QtCore4.?ref@QBasic 004063C2 |. 8D4424 10 LEA EAX,[LOCAL.4] 004063C6 |. 50 PUSH EAX ; /Arg1 => OFFSET LOCAL.4 004063C7 |. 8BCE MOV ECX,ESI ; | 004063C9 |. C74424 24 010 MOV DWORD PTR SS:[LOCAL.0],1 ; | 004063D1 |. E8 8ADFFFFF CALL 00404360 ; \Blizzard_Launcher.00404360 004063D6 |. 84C0 TEST AL,AL 004063D8 |. 74 3A JE SHORT 00406414 004063DA |. 51 PUSH ECX 004063DB |. 8B4C24 14 MOV ECX,DWORD PTR SS:[LOCAL.4] 004063DF |. 8BEC MOV EBP,ESP 004063E1 |. 894D 00 MOV DWORD PTR SS:[LOCAL.9],ECX ; /Arg1 => QtCore4.?shared_null@QListData@@2UData@1@A 004063E4 |. 8B4C24 14 MOV ECX,DWORD PTR SS:[LOCAL.4] ; | 004063E8 |. 896424 18 MOV DWORD PTR SS:[LOCAL.3],ESP ; | 004063EC |. FF15 B4A95600 CALL DWORD PTR DS:[<&QtCore4.?ref@QBasic ; | 004063F2 |. 8B45 00 MOV EAX,DWORD PTR SS:[LOCAL.9] ; | 004063F5 |. F640 10 01 TEST BYTE PTR DS:[EAX+10],01 ; | 004063F9 |. 75 0B JNE SHORT 00406406 ; | 004063FB |. 8B50 04 MOV EDX,DWORD PTR DS:[EAX+4] ; | 004063FE |. 52 PUSH EDX ; |/Arg1 => [6721F78C] = 0 004063FF |. 8BCD MOV ECX,EBP ; || 00406401 |. E8 4ACDFFFF CALL 00403150 ; |\Blizzard_Launcher.00403150 00406406 |> 8BCF MOV ECX,EDI ; | 00406408 |. E8 B3B00000 CALL 004114C0 ; \Blizzard_Launcher.004114C0 0040640D |. 8BCF MOV ECX,EDI 0040640F |. E8 2CA30000 CALL 00410740 ; [Blizzard_Launcher.00410740 00406414 |> E8 F7F4FFFF CALL 00405910 00406419 |. 83EC 1C SUB ESP,1C 0040641C |. 8BE8 MOV EBP,EAX 0040641E |. 8BC4 MOV EAX,ESP 00406420 |. 896424 30 MOV DWORD PTR SS:[LOCAL.3],ESP 00406424 |. 50 PUSH EAX ; /Arg1 => OFFSET LOCAL.15 00406425 |. 8BCD MOV ECX,EBP ; | 00406427 |. E8 34ACFFFF CALL 00401060 ; \Blizzard_Launcher.00401060 0040642C |. 8BCD MOV ECX,EBP 0040642E |. E8 6DEDFFFF CALL 004051A0 ; \Blizzard_Launcher.004051A0 00406433 |. 80B8 35010000 CMP BYTE PTR DS:[EAX+135],0 0040643A |. 75 33 JNE SHORT 0040646F 0040643C |. E8 CFF4FFFF CALL 00405910 00406441 |. 83EC 1C SUB ESP,1C 00406444 |. 8BCC MOV ECX,ESP 00406446 |. 8BE8 MOV EBP,EAX 00406448 |. 896424 30 MOV DWORD PTR SS:[LOCAL.3],ESP 0040644C |. 51 PUSH ECX ; /Arg1 => OFFSET LOCAL.15 0040644D |. 8BCD MOV ECX,EBP ; | 0040644F |. E8 0CACFFFF CALL 00401060 ; \Blizzard_Launcher.00401060 00406454 |. 8BCD MOV ECX,EBP 00406456 |. E8 45EDFFFF CALL 004051A0 ; \Blizzard_Launcher.004051A0 0040645B |. 8B08 MOV ECX,DWORD PTR DS:[EAX] 0040645D |. 8B11 MOV EDX,DWORD PTR DS:[ECX] 0040645F |. 8B42 24 MOV EAX,DWORD PTR DS:[EDX+24] 00406462 |. FFD0 CALL EAX 00406464 |. 84C0 TEST AL,AL 00406466 |. 75 07 JNE SHORT 0040646F 00406468 |. 8BCF MOV ECX,EDI ; Blizzard Account nicht aktiviert 0040646A |. E8 41A40000 CALL 004108B0 ; [Blizzard_Launcher.004108B0 0040646F |> 6A 00 PUSH 0 ; /Arg10 = 0 00406471 |. 6A 32 PUSH 32 ; |Arg9 = 32 00406473 |. 6A 32 PUSH 32 ; |Arg8 = 32 00406475 |. 68 E8030000 PUSH 3E8 ; |Arg7 = 3E8 0040647A |. 6A 00 PUSH 0 ; |Arg6 = 0 0040647C |. 6A 00 PUSH 0 ; |Arg5 = 0 0040647E |. 6A 00 PUSH 0 ; |Arg4 = 0 00406480 |. 6A 01 PUSH 1 ; |Arg3 = 1 00406482 |. 6A 00 PUSH 0 ; |Arg2 = 0 00406484 |. 68 64C95600 PUSH OFFSET 0056C964 ; |Arg1 = ASCII ":slideshow/InstallLoop.ogg" 00406489 |. E8 C2F70200 CALL 00435C50 ; \Blizzard_Launcher.00435C50 0040648E |. 8B4E 08 MOV ECX,DWORD PTR DS:[ESI+8] 00406491 |. 8B49 08 MOV ECX,DWORD PTR DS:[ECX+8] 00406494 |. 83C4 28 ADD ESP,28 00406497 |. FF15 A0B35600 CALL DWORD PTR DS:[<&QtGui4.?show@QWidge ; [QtGui4.?show@QWidget@@QAEXXZ 0040649D |. 8B56 08 MOV EDX,DWORD PTR DS:[ESI+8] 004064A0 |. 8B4A 04 MOV ECX,DWORD PTR DS:[EDX+4] 004064A3 |. FF15 A4B35600 CALL DWORD PTR DS:[<&QtGui4.?hide@QWidge ; [QtGui4.?toFirst@QDataWidgetMapper@@QAEXXZ 004064A9 |. 8B4C24 10 MOV ECX,DWORD PTR SS:[ARG.4] 004064AD |. C74424 20 FFF MOV DWORD PTR SS:[ARG.8],-1 004064B5 |. 85C9 TEST ECX,ECX 004064B7 |. 74 18 JE SHORT 004064D1 004064B9 |. FF15 F4A95600 CALL DWORD PTR DS:[<&QtCore4.?deref@QBas 004064BF |. 84C0 TEST AL,AL 004064C1 |. 75 0E JNE SHORT 004064D1 004064C3 |. 8B4424 10 MOV EAX,DWORD PTR SS:[ARG.4] 004064C7 |. 50 PUSH EAX ; /Arg1 004064C8 |. 8D4C24 14 LEA ECX,[ARG.5] ; | 004064CC |. E8 CFC6FFFF CALL 00402BA0 ; \Blizzard_Launcher.00402BA0 004064D1 |> 8B4C24 18 MOV ECX,DWORD PTR SS:[ARG.6] 004064D5 |. 64:890D 00000 MOV DWORD PTR FS:[0],ECX 004064DC |. 59 POP ECX 004064DD |. 5F POP EDI 004064DE |. 5E POP ESI 004064DF |. 5D POP EBP 004064E0 |. 83C4 14 ADD ESP,14 004064E3 \. C3 RETN
Installationsoptionen
CPU Disasm Address Hex dump Command Comments 004142D0 /$ 8B49 08 MOV ECX,DWORD PTR DS:[ECX+8] ; Blizzard_Launcher.004142D0(guessed void) 004142D3 |. 68 D0FF5600 PUSH OFFSET 0056FFD0 ; /Arg1 = ASCII "not yet time" 004142D8 |. E8 13F0FFFF CALL 004132F0 ; \Blizzard_Launcher.004132F0 004142DD \. C3 RETN 004142DE CC INT3 004142DF CC INT3 004142E0 /> 8B49 08 MOV ECX,DWORD PTR DS:[ECX+8] 004142E3 |. 68 ECFF5600 PUSH OFFSET 0056FFEC ; /Arg1 = ASCII "client ready" 004142E8 |. E8 03F0FFFF CALL 004132F0 ; \Blizzard_Launcher.004132F0 004142ED \. C3 RETN 004142EE CC INT3 004142EF CC INT3 004142F0 /$ 8B49 08 MOV ECX,DWORD PTR DS:[ECX+8] 004142F3 |. 68 FCFF5600 PUSH OFFSET 0056FFFC ; /Arg1 = ASCII "install requested" 004142F8 |. E8 F3EFFFFF CALL 004132F0 ; \Blizzard_Launcher.004132F0 004142FD \. C3 RETN 004142FE CC INT3 004142FF CC INT3 00414300 /$ 8B49 08 MOV ECX,DWORD PTR DS:[ECX+8] 00414303 |. 68 10005700 PUSH OFFSET 00570010 ; /Arg1 = ASCII "play requested" 00414308 |. E8 E3EFFFFF CALL 004132F0 ; \Blizzard_Launcher.004132F0 0041430D \. C3 RETN 0041430E CC INT3 0041430F CC INT3 00414310 /> 8B49 08 MOV ECX,DWORD PTR DS:[ECX+8] 00414313 |. 68 20005700 PUSH OFFSET 00570020 ; /Arg1 = ASCII "uninstall requested" 00414318 |. E8 D3EFFFFF CALL 004132F0 ; \Blizzard_Launcher.004132F0 0041431D \. C3 RETN 0041431E CC INT3 0041431F CC INT3 00414320 /$ 8B49 08 MOV ECX,DWORD PTR DS:[ECX+8] ; Blizzard_Launcher.00414320(guessed void) 00414323 |. 68 34005700 PUSH OFFSET 00570034 ; /Arg1 = ASCII "exit requested" 00414328 |. E8 C3EFFFFF CALL 004132F0 ; \Blizzard_Launcher.004132F0 0041432D \. C3 RETN 0041432E CC INT3 0041432F CC INT3 00414330 /$ 6A FF PUSH -1 ; Blizzard_Launcher.00414330(guessed Arg1) 00414332 |. 68 098A5500 PUSH 00558A09 ; Entry point 00414337 |. 64:A1 0000000 MOV EAX,DWORD PTR FS:[0] 0041433D |. 50 PUSH EAX 0041433E |. 83EC 08 SUB ESP,8 00414341 |. 56 PUSH ESI 00414342 |. A1 B0DA2A01 MOV EAX,DWORD PTR DS:[12ADAB0] 00414347 |. 33C4 XOR EAX,ESP 00414349 |. 50 PUSH EAX 0041434A |. 8D4424 10 LEA EAX,[LOCAL.2] 0041434E |. 64:A3 0000000 MOV DWORD PTR FS:[0],EAX 00414354 |. 8BF1 MOV ESI,ECX 00414356 |. 8B4E 08 MOV ECX,DWORD PTR DS:[ESI+8] 00414359 |. E8 42EAFFFF CALL 00412DA0 0041435E |. 50 PUSH EAX ; /Arg1 0041435F |. 8D4C24 0C LEA ECX,[LOCAL.4] ; | 00414363 |. FF15 94A95600 CALL DWORD PTR DS:[<&QtCore4.??0QString@ ; \QtCore4.??0QString@@QAE@PBD@Z 00414369 |. 68 4C005700 PUSH OFFSET 0057004C ; /Arg1 = ASCII "Canceling" 0041436E |. 8D4C24 0C LEA ECX,[LOCAL.4] ; | 00414372 |. C74424 1C 000 MOV DWORD PTR SS:[LOCAL.0],0 ; | 0041437A |. FF15 D8AB5600 CALL DWORD PTR DS:[<&QtCore4.??8QString@ ; \QtCore4.??8QString@@QBE_NPBD@Z 00414380 |. 84C0 TEST AL,AL 00414382 |. 75 2E JNE SHORT 004143B2 00414384 |. 68 44005700 PUSH OFFSET 00570044 ; /Arg1 = ASCII "Exit" 00414389 |. 8D4C24 0C LEA ECX,[LOCAL.4] ; | 0041438D |. FF15 D8AB5600 CALL DWORD PTR DS:[<&QtCore4.??8QString@ ; \QtCore4.??8QString@@QBE_NPBD@Z 00414393 |. 84C0 TEST AL,AL 00414395 |. 75 1B JNE SHORT 004143B2 00414397 |. 8B4424 20 MOV EAX,DWORD PTR SS:[ARG.1] 0041439B |. 51 PUSH ECX ; /Arg1 0041439C |. 8BCC MOV ECX,ESP ; | 0041439E |. 896424 10 MOV DWORD PTR SS:[LOCAL.3],ESP ; | 004143A2 |. 50 PUSH EAX ; |/Arg1 => [ARG.1] 004143A3 |. FF15 ACA95600 CALL DWORD PTR DS:[<&QtCore4.??0QString@ ; |\QtCore4.??0QByteArray@@QAE@ABV0@@Z 004143A9 |. 8BCE MOV ECX,ESI ; | 004143AB |. E8 304C0200 CALL 00438FE0 ; \Blizzard_Launcher.00438FE0 004143B0 |. EB 1F JMP SHORT 004143D1 004143B2 |> 8B76 08 MOV ESI,DWORD PTR DS:[ESI+8] 004143B5 |. 8B8E 50060000 MOV ECX,DWORD PTR DS:[ESI+650] 004143BB |. E8 C04C0200 CALL 00439080 004143C0 |. FF15 60A95600 CALL DWORD PTR DS:[<&QtCore4.?instance@Q 004143C6 |. 6A 00 PUSH 0 ; /Arg1 = 0 004143C8 |. FF15 70AA5600 CALL DWORD PTR DS:[<&QtCore4.?exit@QCore ; \QtCore4.?exit@QCoreApplication@@SAXH@Z 004143CE |. 83C4 04 ADD ESP,4 004143D1 |> 8D4C24 08 LEA ECX,[LOCAL.4] 004143D5 |. C74424 18 FFF MOV DWORD PTR SS:[LOCAL.0],-1 004143DD |. FF15 58A95600 CALL DWORD PTR DS:[<&QtCore4.??1QString@ ; [QtCore4.??1QXmlStreamStringRef@@QAE@XZ 004143E3 |. 8B4C24 10 MOV ECX,DWORD PTR SS:[LOCAL.2] 004143E7 |. 64:890D 00000 MOV DWORD PTR FS:[0],ECX 004143EE |. 59 POP ECX 004143EF |. 5E POP ESI 004143F0 |. 83C4 14 ADD ESP,14 004143F3 \. C2 0400 RETN 4
Download der Konfiguration
CPU Disasm Address Hex dump Command Comments 00417B90 /$ 6A FF PUSH -1 ; Blizzard_Launcher.00417B90(guessed Arg1) 00417B92 |. 68 71595500 PUSH 00555971 ; Entry point 00417B97 |. 64:A1 0000000 MOV EAX,DWORD PTR FS:[0] 00417B9D |. 50 PUSH EAX 00417B9E |. 83EC 58 SUB ESP,58 00417BA1 |. 53 PUSH EBX 00417BA2 |. 55 PUSH EBP 00417BA3 |. 56 PUSH ESI 00417BA4 |. 57 PUSH EDI 00417BA5 |. A1 B0DA2A01 MOV EAX,DWORD PTR DS:[12ADAB0] 00417BAA |. 33C4 XOR EAX,ESP 00417BAC |. 50 PUSH EAX 00417BAD |. 8D4424 6C LEA EAX,[LOCAL.2] 00417BB1 |. 64:A3 0000000 MOV DWORD PTR FS:[0],EAX 00417BB7 |. 8BF9 MOV EDI,ECX 00417BB9 |. E8 52DDFEFF CALL 00405910 00417BBE |. 83EC 1C SUB ESP,1C 00417BC1 |. 8BF0 MOV ESI,EAX 00417BC3 |. 8BC4 MOV EAX,ESP 00417BC5 |. 896424 3C MOV DWORD PTR SS:[LOCAL.21],ESP 00417BC9 |. 50 PUSH EAX ; /Arg1 => OFFSET LOCAL.36 00417BCA |. 8BCE MOV ECX,ESI ; | 00417BCC |. E8 8F94FEFF CALL 00401060 ; \Blizzard_Launcher.00401060 00417BD1 |. 8BCE MOV ECX,ESI 00417BD3 |. E8 C8D5FEFF CALL 004051A0 ; \Blizzard_Launcher.004051A0 00417BD8 |. 8B6C24 7C MOV EBP,DWORD PTR SS:[ARG.1] 00417BDC |. 8BF0 MOV ESI,EAX 00417BDE |. 8A85 88000000 MOV AL,BYTE PTR SS:[EBP+88] 00417BE4 |. 84C0 TEST AL,AL 00417BE6 |. 0F84 C1000000 JE 00417CAD ; download blob 00417BEC |. 8D4E 60 LEA ECX,[ESI+60] 00417BEF |. FF15 28A25600 CALL DWORD PTR DS:[<&MSVCP90.?c_str@?$ba ; [MSVCP90.?c_str@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEPBDXZ 00417BF5 |. 50 PUSH EAX ; /Arg1 00417BF6 |. 8D4C24 1C LEA ECX,[LOCAL.23] ; | 00417BFA |. FF15 94A95600 CALL DWORD PTR DS:[<&QtCore4.??0QString@ ; \QtCore4.??0QString@@QAE@PBD@Z 00417C00 |. 8B0E MOV ECX,DWORD PTR DS:[ESI] 00417C02 |. 8B11 MOV EDX,DWORD PTR DS:[ECX] 00417C04 |. 8B52 14 MOV EDX,DWORD PTR DS:[EDX+14] 00417C07 |. 8D4424 18 LEA EAX,[LOCAL.23] 00417C0B |. 50 PUSH EAX 00417C0C |. 8D4424 24 LEA EAX,[LOCAL.21] 00417C10 |. 50 PUSH EAX 00417C11 |. C74424 7C 000 MOV DWORD PTR SS:[LOCAL.0],0 00417C19 |. FFD2 CALL EDX 00417C1B |. 8D4C24 50 LEA ECX,[ESP+50] 00417C1F |. 51 PUSH ECX ; /Arg1 00417C20 |. 8BC8 MOV ECX,EAX ; | 00417C22 |. C64424 78 01 MOV BYTE PTR SS:[ESP+78],1 ; | 00417C27 |. FF15 A0A95600 CALL DWORD PTR DS:[<&QtCore4.?toStdStrin ; \QtCore4.?toStdString@QString@@QBE?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ 00417C2D |. B3 02 MOV BL,2 00417C2F |. 50 PUSH EAX ; /Arg3 00417C30 |. 8D4D 6C LEA ECX,[EBP+6C] ; | 00417C33 |. 885C24 78 MOV BYTE PTR SS:[ESP+78],BL ; | 00417C37 |. FF15 28A25600 CALL DWORD PTR DS:[<&MSVCP90.?c_str@?$ba ; |[MSVCP90.?c_str@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEPBDXZ 00417C3D |. 50 PUSH EAX ; |Arg2 00417C3E |. 8D5424 3C LEA EDX,[ESP+3C] ; | 00417C42 |. 52 PUSH EDX ; |Arg1 00417C43 |. FF15 4CA25600 CALL DWORD PTR DS:[<&MSVCP90.??$?HDU?$ch ; \MSVCP90.??$?HDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PBDABV10@@Z 00417C49 |. 83C4 0C ADD ESP,0C 00417C4C |. 50 PUSH EAX 00417C4D |. 8D8E EC000000 LEA ECX,[ESI+0EC] 00417C53 |. C64424 78 03 MOV BYTE PTR SS:[ESP+78],3 00417C58 |. FF15 30A25600 CALL DWORD PTR DS:[<&MSVCP90.??4?$basic_ 00417C5E |. 8D4C24 34 LEA ECX,[ARG.13] 00417C62 |. 885C24 74 MOV BYTE PTR SS:[ARG.29],BL 00417C66 |. FF15 8CA25600 CALL DWORD PTR DS:[<&MSVCP90.??1?$basic_ ; [MSVCP90.??1?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@XZ 00417C6C |. 8D4C24 50 LEA ECX,[ARG.20] 00417C70 |. C64424 74 01 MOV BYTE PTR SS:[ARG.29],1 00417C75 |. FF15 8CA25600 CALL DWORD PTR DS:[<&MSVCP90.??1?$basic_ ; [MSVCP90.??1?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@XZ 00417C7B |. 8D4C24 20 LEA ECX,[ARG.8] 00417C7F |. C64424 74 00 MOV BYTE PTR SS:[ARG.29],0 00417C84 |. FF15 58A95600 CALL DWORD PTR DS:[<&QtCore4.??1QString@ ; [QtCore4.??1QXmlStreamStringRef@@QAE@XZ 00417C8A |. 8D4C24 18 LEA ECX,[ARG.6] 00417C8E |. C74424 74 FFF MOV DWORD PTR SS:[ARG.29],-1 00417C96 |. FF15 58A95600 CALL DWORD PTR DS:[<&QtCore4.??1QString@ ; [QtCore4.??1QXmlStreamStringRef@@QAE@XZ 00417C9C |. 68 F8015700 PUSH OFFSET 005701F8 ; /Arg1 = ASCII "blob url downloaded" 00417CA1 |. 8BCF MOV ECX,EDI ; | 00417CA3 |. E8 48B6FFFF CALL 004132F0 ; \Blizzard_Launcher.004132F0 00417CA8 |. E9 0E010000 JMP 00417DBB 00417CAD |> B3 20 MOV BL,20 00417CAF |. 885C24 7C MOV BYTE PTR SS:[ARG.1],BL 00417CB3 |. 8B4424 7C MOV EAX,DWORD PTR SS:[ARG.1] 00417CB7 |. 50 PUSH EAX ; /Arg1 => [ARG.1] 00417CB8 |. 8D4C24 1A LEA ECX,[LOCAL.24+2] ; | 00417CBC |. FF15 54AA5600 CALL DWORD PTR DS:[<&QtCore4.??0QChar@@Q ; \QtCore4.??0QChar@@QAE@UQLatin1Char@@@Z 00417CC2 |. E8 E9C2FFFF CALL 00413FB0 ; [Blizzard_Launcher.00413FB0 00417CC7 |. 8BC8 MOV ECX,EAX 00417CC9 |. FF15 28A25600 CALL DWORD PTR DS:[<&MSVCP90.?c_str@?$ba ; [MSVCP90.?c_str@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEPBDXZ 00417CCF |. 50 PUSH EAX ; /Arg1 00417CD0 |. 8D4C24 20 LEA ECX,[LOCAL.22] ; | 00417CD4 |. FF15 94A95600 CALL DWORD PTR DS:[<&QtCore4.??0QString@ ; \QtCore4.??0QString@@QAE@PBD@Z 00417CDA |. 885C24 20 MOV BYTE PTR SS:[LOCAL.21],BL 00417CDE |. 8B4C24 20 MOV ECX,DWORD PTR SS:[LOCAL.21] 00417CE2 |. 51 PUSH ECX ; /Arg1 => [LOCAL.21] 00417CE3 |. 8D8C24 800000 LEA ECX,[ARG.1] ; | 00417CEA |. C74424 78 040 MOV DWORD PTR SS:[LOCAL.0],4 ; | 00417CF2 |. FF15 54AA5600 CALL DWORD PTR DS:[<&QtCore4.??0QChar@@Q ; \QtCore4.??0QChar@@QAE@UQLatin1Char@@@Z 00417CF8 |. 8D5424 30 LEA EDX,[LOCAL.17] 00417CFC |. 52 PUSH EDX ; /Arg1 => OFFSET LOCAL.17 00417CFD |. E8 9E970000 CALL 004214A0 ; \Blizzard_Launcher.004214A0 00417D02 |. 8BF0 MOV ESI,EAX 00417D04 |. 6A 00 PUSH 0 ; /Arg3 = 0 00417D06 |. 8D4424 34 LEA EAX,[LOCAL.18] ; | 00417D0A |. 68 C0055700 PUSH OFFSET 005705C0 ; |Arg2 = ASCII "%1: Failed to resolve install data URL from %2. Please check your internet connection." 00417D0F |. 50 PUSH EAX ; |Arg1 => OFFSET LOCAL.18 00417D10 |. C68424 840000 MOV BYTE PTR SS:[LOCAL.0],5 ; | 00417D18 |. E8 83C3FFFF CALL 004140A0 ; \Blizzard_Launcher.004140A0 00417D1D |. 83C4 10 ADD ESP,10 00417D20 |. 8D4C24 7C LEA ECX,[ARG.1] 00417D24 |. 51 PUSH ECX ; /Arg4 => OFFSET ARG.1 00417D25 |. 6A 00 PUSH 0 ; |Arg3 = 0 00417D27 |. 56 PUSH ESI ; |Arg2 00417D28 |. 8B35 4CAA5600 MOV ESI,DWORD PTR DS:[<&QtCore4.?arg@QSt ; | 00417D2E |. 8D5424 34 LEA EDX,[LOCAL.19] ; | 00417D32 |. 52 PUSH EDX ; |Arg1 => OFFSET LOCAL.19 00417D33 |. 8BC8 MOV ECX,EAX ; | 00417D35 |. C68424 840000 MOV BYTE PTR SS:[LOCAL.0],6 ; | 00417D3D |. FFD6 CALL ESI ; \QtCore4.?arg@QString@@QBE?AV1@ABV1@HABVQChar@@@Z 00417D3F |. 8D4C24 16 LEA ECX,[LOCAL.24+2] 00417D43 |. 51 PUSH ECX 00417D44 |. 6A 00 PUSH 0 00417D46 |. 8D5424 24 LEA EDX,[LOCAL.22] 00417D4A |. 52 PUSH EDX 00417D4B |. 8D4C24 30 LEA ECX,[LOCAL.20] 00417D4F |. 51 PUSH ECX 00417D50 |. B3 07 MOV BL,7 00417D52 |. 8BC8 MOV ECX,EAX 00417D54 |. 889C24 840000 MOV BYTE PTR SS:[LOCAL.0],BL 00417D5B |. FFD6 CALL ESI 00417D5D |. 8B8F 50060000 MOV ECX,DWORD PTR DS:[EDI+650] 00417D63 |. 50 PUSH EAX ; /Arg1 00417D64 |. C64424 78 08 MOV BYTE PTR SS:[ESP+78],8 ; | 00417D69 |. E8 C2C5FFFF CALL 00414330 ; \Blizzard_Launcher.00414330 00417D6E |. 8D4C24 24 LEA ECX,[ESP+24] 00417D72 |. 885C24 74 MOV BYTE PTR SS:[ESP+74],BL 00417D76 |. FF15 58A95600 CALL DWORD PTR DS:[<&QtCore4.??1QString@ ; [QtCore4.??1QXmlStreamStringRef@@QAE@XZ 00417D7C |. 8D4C24 28 LEA ECX,[ESP+28] 00417D80 |. C64424 74 06 MOV BYTE PTR SS:[ESP+74],6 00417D85 |. FF15 58A95600 CALL DWORD PTR DS:[<&QtCore4.??1QString@ ; [QtCore4.??1QXmlStreamStringRef@@QAE@XZ 00417D8B |. 8D4C24 2C LEA ECX,[ESP+2C] 00417D8F |. C64424 74 05 MOV BYTE PTR SS:[ESP+74],5 00417D94 |. FF15 58A95600 CALL DWORD PTR DS:[<&QtCore4.??1QString@ ; [QtCore4.??1QXmlStreamStringRef@@QAE@XZ 00417D9A |. 8D4C24 30 LEA ECX,[ESP+30] 00417D9E |. C64424 74 04 MOV BYTE PTR SS:[ESP+74],4 00417DA3 |. FF15 58A95600 CALL DWORD PTR DS:[<&QtCore4.??1QString@ ; [QtCore4.??1QXmlStreamStringRef@@QAE@XZ 00417DA9 |. 8D4C24 1C LEA ECX,[ESP+1C] 00417DAD |. C74424 74 FFF MOV DWORD PTR SS:[ESP+74],-1 00417DB5 |. FF15 58A95600 CALL DWORD PTR DS:[<&QtCore4.??1QString@ ; [QtCore4.??1QXmlStreamStringRef@@QAE@XZ 00417DBB |> 8B4C24 6C MOV ECX,DWORD PTR SS:[ARG.27] 00417DBF |. 64:890D 00000 MOV DWORD PTR FS:[0],ECX 00417DC6 |. 59 POP ECX 00417DC7 |. 5F POP EDI 00417DC8 |. 5E POP ESI 00417DC9 |. 5D POP EBP 00417DCA |. 5B POP EBX 00417DCB |. 83C4 64 ADD ESP,64 00417DCE \. C2 0400 RETN 4
Programm als Installer oder Launcher starten
CPU Disasm Address Hex dump Command Comments 004077ED |. 3BFB CMP EDI,EBX 004077EF |. 75 30 JNE SHORT 00407821 004077F1 |. 83EC 1C SUB ESP,1C 004077F4 |. 8BCC MOV ECX,ESP 004077F6 |. 896424 74 MOV DWORD PTR SS:[ESP+74],ESP 004077FA |. 68 50C95600 PUSH OFFSET 0056C950 ; /Arg1 = ASCII "install" 004077FF |. FF15 24A25600 CALL DWORD PTR DS:[<&MSVCP90.??0?$basic_ ; \MSVCP90.??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBD@Z 00407805 |. E8 465A0100 CALL 0041D250 0040780A |. 83C4 1C ADD ESP,1C 0040780D |. BF 02000000 MOV EDI,2 00407812 |. 3AC3 CMP AL,BL 00407814 |. 75 05 JNE SHORT 0040781B 00407816 |. BF 01000000 MOV EDI,1 0040781B |> 893D D0DC2A01 MOV DWORD PTR DS:[12ADCD0],EDI 00407821 |> 8BC7 MOV EAX,EDI 00407823 |. 83E8 01 SUB EAX,1 ; Switch (cases 1..2, 3 exits) 00407826 |. 74 2E JE SHORT 00407856 00407828 |. 83E8 01 SUB EAX,1 0040782B |. 75 5A JNE SHORT 00407887 0040782D |. 8D5424 2C LEA EDX,[ESP+2C] ; Case 2 of switch Blizzard_Launcher.407823 00407831 |. 52 PUSH EDX ; /Arg1 00407832 |. FF15 88A95600 CALL DWORD PTR DS:[<&QtCore4.?qDebug@@YA ; \QtCore4.?qDebug@@YA?AVQDebug@@XZ 00407838 |. 83C4 04 ADD ESP,4 0040783B |. 68 B0DD5600 PUSH OFFSET 0056DDB0 ; /Arg1 = ASCII "Running as Installer" 00407840 |. 8BC8 MOV ECX,EAX ; | 00407842 |. C74424 54 0F0 MOV DWORD PTR SS:[ESP+54],0F ; | 0040784A |. FF15 84A95600 CALL DWORD PTR DS:[<&QtCore4.??6QDebug@@ ; \QtCore4.??6QDebug@@QAEAAV0@PBD@Z 00407850 |. 8D4C24 2C LEA ECX,[ESP+2C] 00407854 |. EB 27 JMP SHORT 0040787D 00407856 |> 8D4424 30 LEA EAX,[ESP+30] ; Case 1 of switch Blizzard_Launcher.407823 0040785A |. 50 PUSH EAX ; /Arg1 0040785B |. FF15 88A95600 CALL DWORD PTR DS:[<&QtCore4.?qDebug@@YA ; \QtCore4.?qDebug@@YA?AVQDebug@@XZ 00407861 |. 83C4 04 ADD ESP,4 00407864 |. 68 9CDD5600 PUSH OFFSET 0056DD9C ; /Arg1 = ASCII "Running as Launcher" 00407869 |. 8BC8 MOV ECX,EAX ; | 0040786B |. C74424 54 0E0 MOV DWORD PTR SS:[ESP+54],0E ; | 00407873 |. FF15 84A95600 CALL DWORD PTR DS:[<&QtCore4.??6QDebug@@ ; \QtCore4.??6QDebug@@QAEAAV0@PBD@Z 00407879 |. 8D4C24 30 LEA ECX,[ESP+30] 0040787D |> 896C24 50 MOV DWORD PTR SS:[ESP+50],EBP 00407881 |. FF15 7CA95600 CALL DWORD PTR DS:[<&QtCore4.??1QDebug@@ ; [QtCore4.??1QDebug@@QAE@XZ 00407887 |> 8B4E 10 MOV ECX,DWORD PTR DS:[ESI+10] ; Default case of switch Blizzard_Launcher.407823 0040788A |. 57 PUSH EDI ; /Arg1 0040788B |. E8 70C90000 CALL 00414200 ; \Blizzard_Launcher.00414200 00407890 |. 8B4E 08 MOV ECX,DWORD PTR DS:[ESI+8]
Log Einträge machen
CPU Disasm Address Hex dump Command Comments 00412D30 /$ /56 PUSH ESI ; Blizzard_Launcher.00412D30(guessed Arg1) 00412D31 |. |8BF1 MOV ESI,ECX 00412D33 |. |8B4E 18 MOV ECX,DWORD PTR DS:[ESI+18] 00412D36 |. |85C9 TEST ECX,ECX 00412D38 |. |74 25 JE SHORT 00412D5F 00412D3A |. |E8 A1FEFFFF CALL 00412BE0 00412D3F |. |50 PUSH EAX ; /<%s> 00412D40 |. |68 0CFF5600 PUSH OFFSET 0056FF0C ; |Format = "[FiniteStateMachine] Setting State(): oldState: %s" 00412D45 |. |E8 06FE0000 CALL 00422B50 ; | 00412D4A |. |50 PUSH EAX ; |Arg2 00412D4B |. |6A 04 PUSH 4 ; |Arg1 = 4 00412D4D |. |E8 FE330600 CALL 00476150 ; \Blizzard_Launcher.00476150 00412D52 |. |8B4E 18 MOV ECX,DWORD PTR DS:[ESI+18] 00412D55 |. |8B01 MOV EAX,DWORD PTR DS:[ECX] 00412D57 |. |8B50 0C MOV EDX,DWORD PTR DS:[EAX+0C] 00412D5A |. |83C4 10 ADD ESP,10 00412D5D |. |FFD2 CALL EDX 00412D5F |> |8B46 18 MOV EAX,DWORD PTR DS:[ESI+18] 00412D62 |. |8B4C24 08 MOV ECX,DWORD PTR SS:[ESP+8] 00412D66 |. |8946 1C MOV DWORD PTR DS:[ESI+1C],EAX 00412D69 |. |894E 18 MOV DWORD PTR DS:[ESI+18],ECX 00412D6C |. |E8 6FFEFFFF CALL 00412BE0 00412D71 |. |50 PUSH EAX ; /<%s> 00412D72 |. |68 D8FE5600 PUSH OFFSET 0056FED8 ; |Format = "[FiniteStateMachine] Setting State(): newState: %s" 00412D77 |. |E8 D4FD0000 CALL 00422B50 ; | 00412D7C |. |50 PUSH EAX ; |Arg2 00412D7D |. |6A 04 PUSH 4 ; |Arg1 = 4 00412D7F |. |E8 CC330600 CALL 00476150 ; \Blizzard_Launcher.00476150 00412D84 |. |8B4E 18 MOV ECX,DWORD PTR DS:[ESI+18] 00412D87 |. |8B11 MOV EDX,DWORD PTR DS:[ECX] 00412D89 |. |8B42 04 MOV EAX,DWORD PTR DS:[EDX+4] 00412D8C |. |83C4 10 ADD ESP,10 00412D8F |. |FFD0 CALL EAX 00412D91 |. |5E POP ESI 00412D92 \. |C2 0400 RETN 4
Blob URL zusammenbauen
CPU Disasm Address Hex dump Command Comments 0042A7D0 /. 6A FF PUSH -1 0042A7D2 |. 68 F0815500 PUSH 005581F0 ; Entry point 0042A7D7 |. 64:A1 0000000 MOV EAX,DWORD PTR FS:[0] 0042A7DD |. 50 PUSH EAX 0042A7DE |. 83EC 30 SUB ESP,30 0042A7E1 |. 56 PUSH ESI 0042A7E2 |. A1 B0DA2A01 MOV EAX,DWORD PTR DS:[12ADAB0] 0042A7E7 |. 33C4 XOR EAX,ESP 0042A7E9 |. 50 PUSH EAX 0042A7EA |. 8D4424 38 LEA EAX,[LOCAL.2] 0042A7EE |. 64:A3 0000000 MOV DWORD PTR FS:[0],EAX 0042A7F4 |. 68 6FCB5600 PUSH OFFSET 0056CB6F ; /Arg1 = Blizzard_Launcher.56CB6F 0042A7F9 |. 8D4C24 0C LEA ECX,[LOCAL.14] ; | 0042A7FD |. C74424 1C 000 MOV DWORD PTR SS:[LOCAL.10],0 ; | 0042A805 |. FF15 94A95600 CALL DWORD PTR DS:[<&QtCore4.??0QString@ ; \QtCore4.??0QString@@QAE@PBD@Z 0042A80B |. 68 10435700 PUSH OFFSET 00574310 ; /Arg1 = ASCII "win" 0042A810 |. 8D4C24 10 LEA ECX,[LOCAL.13] ; | 0042A814 |. C74424 44 010 MOV DWORD PTR SS:[LOCAL.0],1 ; | 0042A81C |. FF15 94A95600 CALL DWORD PTR DS:[<&QtCore4.??0QString@ ; \QtCore4.??0QString@@QAE@PBD@Z 0042A822 |. 8D7424 1C LEA ESI,[LOCAL.9] 0042A826 |. C64424 40 02 MOV BYTE PTR SS:[LOCAL.0],2 0042A82B |. E8 80FFFFFF CALL 0042A7B0 ; [Blizzard_Launcher.0042A7B0 0042A830 |. 8BC8 MOV ECX,EAX 0042A832 |. C64424 40 03 MOV BYTE PTR SS:[LOCAL.0],3 0042A837 |. FF15 28A25600 CALL DWORD PTR DS:[<&MSVCP90.?c_str@?$ba ; [MSVCP90.?c_str@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEPBDXZ 0042A83D |. 50 PUSH EAX ; /Arg1 0042A83E |. 8D4C24 18 LEA ECX,[LOCAL.11] ; | 0042A842 |. FF15 94A95600 CALL DWORD PTR DS:[<&QtCore4.??0QString@ ; \QtCore4.??0QString@@QAE@PBD@Z 0042A848 |. 68 30165700 PUSH OFFSET 00571630 ; /Arg3 = Blizzard_Launcher.571630 0042A84D |. 50 PUSH EAX ; |Arg2 0042A84E |. 8D4424 18 LEA EAX,[LOCAL.12] ; | 0042A852 |. 50 PUSH EAX ; |Arg1 => OFFSET LOCAL.12 0042A853 |. C64424 4C 04 MOV BYTE PTR SS:[LOCAL.0],4 ; | 0042A858 |. E8 E374FDFF CALL 00401D40 ; \Blizzard_Launcher.00401D40 0042A85D |. 83C4 0C ADD ESP,0C 0042A860 |. 50 PUSH EAX ; /Arg1 0042A861 |. 8D4C24 0C LEA ECX,[LOCAL.14] ; | 0042A865 |. C64424 44 05 MOV BYTE PTR SS:[LOCAL.0],5 ; | 0042A86A |. FF15 A8A95600 CALL DWORD PTR DS:[<&QtCore4.??YQString@ ; \QtCore4.?append@QString@@QAEAAV1@ABV1@@Z 0042A870 |. 8D4C24 10 LEA ECX,[LOCAL.12] 0042A874 |. C64424 40 04 MOV BYTE PTR SS:[LOCAL.0],4 0042A879 |. FF15 58A95600 CALL DWORD PTR DS:[<&QtCore4.??1QString@ ; [QtCore4.??1QXmlStreamStringRef@@QAE@XZ 0042A87F |. 8D4C24 14 LEA ECX,[LOCAL.11] 0042A883 |. C64424 40 03 MOV BYTE PTR SS:[LOCAL.0],3 0042A888 |. FF15 58A95600 CALL DWORD PTR DS:[<&QtCore4.??1QString@ ; [QtCore4.??1QXmlStreamStringRef@@QAE@XZ 0042A88E |. 8BCE MOV ECX,ESI 0042A890 |. C64424 40 02 MOV BYTE PTR SS:[LOCAL.0],2 0042A895 |. FF15 8CA25600 CALL DWORD PTR DS:[<&MSVCP90.??1?$basic_ ; [MSVCP90.??1?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@XZ 0042A89B |. E8 70B0FDFF CALL 00405910 0042A8A0 |. 83EC 1C SUB ESP,1C 0042A8A3 |. 8BCC MOV ECX,ESP 0042A8A5 |. 8BF0 MOV ESI,EAX 0042A8A7 |. 896424 30 MOV DWORD PTR SS:[LOCAL.11],ESP 0042A8AB |. 51 PUSH ECX ; /Arg1 => OFFSET LOCAL.23 0042A8AC |. 8BCE MOV ECX,ESI ; | 0042A8AE |. E8 AD67FDFF CALL 00401060 ; \Blizzard_Launcher.00401060 0042A8B3 |. 8BCE MOV ECX,ESI 0042A8B5 |. E8 E6A8FDFF CALL 004051A0 ; \Blizzard_Launcher.004051A0 0042A8BA |. 80B8 33010000 CMP BYTE PTR DS:[EAX+133],0 0042A8C1 |. B8 08435700 MOV EAX,OFFSET 00574308 ; ASCII "disk_" 0042A8C6 |. 75 05 JNE SHORT 0042A8CD 0042A8C8 |. B8 00435700 MOV EAX,OFFSET 00574300 ; ASCII "web_" 0042A8CD |> 50 PUSH EAX ; /Arg1 0042A8CE |. 8D4C24 0C LEA ECX,[LOCAL.14] ; | 0042A8D2 |. FF15 40AB5600 CALL DWORD PTR DS:[<&QtCore4.??YQString@ ; \QtCore4.??YQString@@QAEAAV0@PBD@Z 0042A8D8 |. E8 33B0FDFF CALL 00405910 0042A8DD |. 83EC 1C SUB ESP,1C 0042A8E0 |. 8BF0 MOV ESI,EAX 0042A8E2 |. 8BD4 MOV EDX,ESP 0042A8E4 |. 896424 30 MOV DWORD PTR SS:[LOCAL.11],ESP 0042A8E8 |. 52 PUSH EDX ; /Arg1 => OFFSET LOCAL.23 0042A8E9 |. 8BCE MOV ECX,ESI ; | 0042A8EB |. E8 7067FDFF CALL 00401060 ; \Blizzard_Launcher.00401060 0042A8F0 |. 8BCE MOV ECX,ESI 0042A8F2 |. E8 A9A8FDFF CALL 004051A0 ; \Blizzard_Launcher.004051A0 0042A8F7 |. 80B8 34010000 CMP BYTE PTR DS:[EAX+134],0 0042A8FE |. B8 F4425700 MOV EAX,OFFSET 005742F4 ; ASCII "encrypted_" 0042A903 |. 75 05 JNE SHORT 0042A90A 0042A905 |. B8 E4425700 MOV EAX,OFFSET 005742E4 ; ASCII "unencrypted_" 0042A90A |> 50 PUSH EAX ; /Arg1 0042A90B |. 8D4C24 0C LEA ECX,[LOCAL.14] ; | 0042A90F |. FF15 40AB5600 CALL DWORD PTR DS:[<&QtCore4.??YQString@ ; \QtCore4.??YQString@@QAEAAV0@PBD@Z 0042A915 |. 8D4424 0C LEA EAX,[LOCAL.13] 0042A919 |. 50 PUSH EAX ; /Arg1 => OFFSET LOCAL.13 0042A91A |. 8D4C24 0C LEA ECX,[LOCAL.14] ; | 0042A91E |. FF15 A8A95600 CALL DWORD PTR DS:[<&QtCore4.??YQString@ ; \QtCore4.?append@QString@@QAEAAV1@ABV1@@Z 0042A924 |. 68 DC425700 PUSH OFFSET 005742DC ; /Arg1 = ASCII ".blob" 0042A929 |. 8D4C24 0C LEA ECX,[LOCAL.14] ; | 0042A92D |. FF15 40AB5600 CALL DWORD PTR DS:[<&QtCore4.??YQString@ ; \QtCore4.??YQString@@QAEAAV0@PBD@Z 0042A933 |. 8D4C24 08 LEA ECX,[LOCAL.14] 0042A937 |. 51 PUSH ECX ; /Arg1 => OFFSET LOCAL.14 0042A938 |. 8D4C24 18 LEA ECX,[LOCAL.11] ; | 0042A93C |. FF15 ACA95600 CALL DWORD PTR DS:[<&QtCore4.??0QString@ ; \QtCore4.??0QByteArray@@QAE@ABV0@@Z 0042A942 |. 8B7424 48 MOV ESI,DWORD PTR SS:[ARG.1] 0042A946 |. 56 PUSH ESI ; /Arg1 => [ARG.1] 0042A947 |. 8BC8 MOV ECX,EAX ; | 0042A949 |. C64424 44 06 MOV BYTE PTR SS:[LOCAL.0],6 ; | 0042A94E |. FF15 94A85600 CALL DWORD PTR DS:[<&QtCore4.?toLower@QS ; \QtCore4.?toLower@QString@@QBE?AV1@XZ 0042A954 |. 8D4C24 14 LEA ECX,[LOCAL.11] 0042A958 |. C74424 18 010 MOV DWORD PTR SS:[LOCAL.10],1 0042A960 |. C64424 40 02 MOV BYTE PTR SS:[LOCAL.0],2 0042A965 |. FF15 58A95600 CALL DWORD PTR DS:[<&QtCore4.??1QString@ ; [QtCore4.??1QXmlStreamStringRef@@QAE@XZ 0042A96B |. 8D4C24 0C LEA ECX,[LOCAL.13] 0042A96F |. C64424 40 01 MOV BYTE PTR SS:[LOCAL.0],1 0042A974 |. FF15 58A95600 CALL DWORD PTR DS:[<&QtCore4.??1QString@ ; [QtCore4.??1QXmlStreamStringRef@@QAE@XZ 0042A97A |. 8D4C24 08 LEA ECX,[LOCAL.14] 0042A97E |. C64424 40 00 MOV BYTE PTR SS:[LOCAL.0],0 0042A983 |. FF15 58A95600 CALL DWORD PTR DS:[<&QtCore4.??1QString@ ; [QtCore4.??1QXmlStreamStringRef@@QAE@XZ 0042A989 |. 8BC6 MOV EAX,ESI 0042A98B |. 8B4C24 38 MOV ECX,DWORD PTR SS:[LOCAL.2] 0042A98F |. 64:890D 00000 MOV DWORD PTR FS:[0],ECX 0042A996 |. 59 POP ECX 0042A997 |. 5E POP ESI 0042A998 |. 83C4 3C ADD ESP,3C 0042A99B \. C2 0800 RETN 8
Launcher Seite einrichten (einfach mal die erste URL aufrufen ;) und mit dem Beta-Launcher Foto vergleichen)
CPU Disasm Address Hex dump Command Comments 00428B40 /. 51 PUSH ECX ; URL_fuer_launcher 00428B41 |. 8B4424 0C MOV EAX,DWORD PTR SS:[ARG.2] 00428B45 |. 56 PUSH ESI 00428B46 |. C74424 04 000 MOV DWORD PTR SS:[LOCAL.0],0 00428B4E |. 83F8 0C CMP EAX,0C ; Switch (cases 0..C, 13. exits) 00428B51 |. 0F87 A9000000 JA 00428C00 00428B57 |. FF2485 188C42 JMP DWORD PTR DS:[EAX*4+428C18] 00428B5E |> 6A 00 PUSH 0 ; Case 1 of switch Blizzard_Launcher.428B4E 00428B60 |. 6A 00 PUSH 0 00428B62 |. 68 943A5700 PUSH OFFSET 00573A94 ; ASCII "http://enUS.nydus.battle.net/D3/enUS/launcher/patchnotes" 00428B67 |> 8B7424 18 MOV ESI,DWORD PTR SS:[ARG.1] 00428B6B |. 68 8C3A5700 PUSH OFFSET 00573A8C ; |Arg2 = ASCII "LinkD3" 00428B70 |. 56 PUSH ESI ; |Arg1 => [ARG.1] 00428B71 |. FF15 50AA5600 CALL DWORD PTR DS:[<&QtCore4.?translate@ ; \QtCore4.?translate@QCoreApplication@@SA?AVQString@@PBD00W4Encoding@1@@Z 00428B77 |. 83C4 14 ADD ESP,14 00428B7A |. 8BC6 MOV EAX,ESI 00428B7C |. 5E POP ESI 00428B7D |. 59 POP ECX 00428B7E |. C2 0800 RETN 8 00428B81 |> 6A 00 PUSH 0 ; Case 2 of switch Blizzard_Launcher.428B4E 00428B83 |. 6A 00 PUSH 0 00428B85 |. 68 583A5700 PUSH OFFSET 00573A58 ; ASCII "http://enUS.nydus.battle.net/D3/enUS/launcher/news" 00428B8A |.^ EB DB JMP SHORT 00428B67 00428B8C |> 6A 00 PUSH 0 ; Case C of switch Blizzard_Launcher.428B4E 00428B8E |. 6A 00 PUSH 0 00428B90 |. 68 1C3A5700 PUSH OFFSET 00573A1C ; ASCII "http://enUS.nydus.battle.net/D3/enUS/launcher/activate-game" 00428B95 |.^ EB D0 JMP SHORT 00428B67 00428B97 |> 6A 00 PUSH 0 ; Case 0 of switch Blizzard_Launcher.428B4E 00428B99 |. 6A 00 PUSH 0 00428B9B |. 68 D8395700 PUSH OFFSET 005739D8 ; ASCII "http://enUS.nydus.battle.net/D3/enUS/launcher/systemrequirements" 00428BA0 |.^ EB C5 JMP SHORT 00428B67 00428BA2 |> 6A 00 PUSH 0 ; Case 4 of switch Blizzard_Launcher.428B4E 00428BA4 |. 6A 00 PUSH 0 00428BA6 |. 68 A0395700 PUSH OFFSET 005739A0 ; ASCII "http://enUS.nydus.battle.net/D3/enUS/launcher/manual" 00428BAB |.^ EB BA JMP SHORT 00428B67 00428BAD |> 6A 00 PUSH 0 ; Case 5 of switch Blizzard_Launcher.428B4E 00428BAF |. 6A 00 PUSH 0 00428BB1 |. 68 68395700 PUSH OFFSET 00573968 ; ASCII "http://enUS.nydus.battle.net/D3/enUS/launcher/support" 00428BB6 |.^ EB AF JMP SHORT 00428B67 00428BB8 |> 6A 00 PUSH 0 ; Case 6 of switch Blizzard_Launcher.428B4E 00428BBA |. 6A 00 PUSH 0 00428BBC |. 68 34395700 PUSH OFFSET 00573934 ; ASCII "http://enUS.nydus.battle.net/D3/enUS/launcher/forum" 00428BC1 |.^ EB A4 JMP SHORT 00428B67 00428BC3 |> 6A 00 PUSH 0 ; Case 7 of switch Blizzard_Launcher.428B4E 00428BC5 |. 6A 00 PUSH 0 00428BC7 |. 68 FC385700 PUSH OFFSET 005738FC ; ASCII "http://enUS.nydus.battle.net/D3/enUS/launcher/community" 00428BCC |.^ EB 99 JMP SHORT 00428B67 00428BCE |> 6A 00 PUSH 0 ; Case 8 of switch Blizzard_Launcher.428B4E 00428BD0 |. 6A 00 PUSH 0 00428BD2 |. 68 C0385700 PUSH OFFSET 005738C0 ; ASCII "http://enUS.nydus.battle.net/D3/enUS/launcher/test/download" 00428BD7 |.^ EB 8E JMP SHORT 00428B67 00428BD9 |> 6A 00 PUSH 0 ; Case 9 of switch Blizzard_Launcher.428B4E 00428BDB |. 6A 00 PUSH 0 00428BDD |. 68 80385700 PUSH OFFSET 00573880 ; ASCII "http://enUS.nydus.battle.net/D3/enUS/launcher/parental-controls" 00428BE2 |.^ EB 83 JMP SHORT 00428B67 00428BE4 |> 6A 00 PUSH 0 ; Case A of switch Blizzard_Launcher.428B4E 00428BE6 |. 6A 00 PUSH 0 00428BE8 |. 68 48385700 PUSH OFFSET 00573848 ; ASCII "http://us.version.blizzard.com/update/d3-video-enUS.txt" 00428BED |.^ E9 75FFFFFF JMP 00428B67 00428BF2 |> 6A 00 PUSH 0 ; Case B of switch Blizzard_Launcher.428B4E 00428BF4 |. 6A 00 PUSH 0 00428BF6 |. 68 9C335700 PUSH OFFSET 0057339C ; ASCII "http://us.blizzard.com/support/index.xml" 00428BFB |.^ E9 67FFFFFF JMP 00428B67 00428C00 |> 8B7424 0C MOV ESI,DWORD PTR SS:[ARG.1] ; Default case of switch Blizzard_Launcher.428B4E 00428C04 |. 68 6FCB5600 PUSH OFFSET 0056CB6F ; /Arg1 = Blizzard_Launcher.56CB6F 00428C09 |. 8BCE MOV ECX,ESI ; | 00428C0B |. FF15 94A95600 CALL DWORD PTR DS:[<&QtCore4.??0QString@ ; \QtCore4.??0QString@@QAE@PBD@Z 00428C11 |. 8BC6 MOV EAX,ESI 00428C13 |. 5E POP ESI 00428C14 |. 59 POP ECX 00428C15 \. C2 0800 RETN 8
Kleine Information am Rande: Im Launcher hab ich 65 Breakpoints gesetzt :D
Ich hoffe ihr hattet auch so viel Spaß wie ich. Viel Spaß und bis zum nächsten Mal.
Greetz TheVamp
Mal wieder ein sehr cooler Post, weiter so :D Bemerkenswert ist vorallem dein Durchhaltevermögen, ich hätte (spätestens nach dem zweiten Rückschlag) den Launcher zum Mond geschossen :D
Hey, haste echt nice gemacht :D
Auch schön beschrieben :)
Weiter so !