Diablo 3 – Installer Owned

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

2 thoughts on “Diablo 3 – Installer Owned

  1. 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

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.