View Single Post
Spotify har tre typer reklame. Disse er bilde-reklame fra eksterne servere via http, bilde-reklame via Spotifys eget nettverk, og lyd-reklame (som også går via Spotifys eget nettverk).

Bilde-reklamen fra eksterne servere vises med IE, noe man lett kan se ved å sette IEs proxy til 0.0.0.0:0 eller noe slikt. Da kan ikke IE kontakte nettet og denne type reklame forsvinner.

Bilde-reklamen fra Spotifys eget nettverk blir enten rendret med IE ved bruk av file:// (eller noe lignende), eller med samme kode som brukes av Spotify for å vise f.eks bildet for pause-knappen. Et eksempel på denne type reklame er "EVACUATE THE DANCEFLOOR" eller "BUMBLEBEE" - du får se dem ofte nok hvis du sperrer IE.

Hvis denne bilde-reklamen også blir vist ved hjelp av IE, men med en lokal referanse som file://, skulle det være mulig å fjerne reklamen ved å forhindre Spotify fra å konstruere IE-kontrollen til å begynne med. Pg.a. Themidas slør har jeg ikke funnet ut hvordan Spotify gjør dette, for den kaller ikke på MFC (CWnd::CreateControl er den vanligste måten å gjøre dette på).

Begge bilde-reklamene har musebevegelse som trigger. La Spotify stå uten å bevege musa innenfor, og reklamen forsvinner. Prøv så å bevege på den eller på vinduet, så dukker snart bildereklamen opp igjen. Jeg har ikke testet om det også skjer hvis du bare bruker tastaturet.

Lyd-reklamen blir hentet fra Spotifys server som en hvilken som helst annen lydfil. Antageligvis skjer noe sånt som:
- Klienten holder orden på hvor lenge det er siden reklame sist ble spilt av, i forhold til hvor lenge brukeren "fortjener" å få slippe reklame (avhengig av om han er Premium, etc., og muligens også avhengig av hvor mye han "seeder" - dette vet jeg ikke sikkert).
- Hvis det har gått for lang tid, spør klienten serveren om en reklame, og legger denne som neste element i playlist. Dette kan verifiseres ved å prøve å hoppe forbi reklame ved å gå til neste sang rett før sangen er slutt - noe som ikke går (fordi den hopper til neste i playlist, som er reklamen).
- Når reklamen spilles av, blir de forskjellige knappene skrudd av (neste sang osv). Jeg vet ikke om det er i følge ordre fra klienten eller fra serveren, men mest sannsynlig er alle reklamefilene merket med en "dette er reklame, sperr spilleren" bit som klienten leser når den henter ned reklamen. Hvis du får til å finne en reklame å spille av mens du er Premium, og den likevel sperrer spilleren, så er det ytterligere bevis på dette - men jeg vet ikke om reklamene vises når du søker etter musikk.

Hvis jeg har rett om det førnevnte, kan man da si:
- Det er ikke mulig å filtrere ut lydreklamen fordi den kommer fra samme server. Dvs. hvis man kan knekke krypteringen og gjøre en man in the middle, så kan det muligens la seg gjøre, men krypteringsalgoritmen ligger under Themidas beskyttelse (og er trolig i "virtuell kode" hvis Spotify vet hva de holder på med). Despotify kan kanskje gi tips om hvordan krypteringen fungerer - hvis de ikke har forandret den siden den gang.
- Det er lett å sperre bildereklamen som kommer via HTTP. Sett IE til en 0.0.0.0 proxy, eller patch mshtml.dll/urlmon.dll/wininet.dll - eller for den sakens skyld, sett IE til en squid+squirm proxy.
- Det er ikke så lett å sperre bildereklamen som kommer via Spotifys nettverk. Hvis de bruker IE, burde det være rimelig lett hvis man kunne finne ut hvordan de starter IE-kontrollen. Hvis de ikke bruker IE... then what?
- Telleren som holder orden på tiden til neste lydreklame kan ikke være CRC-beskyttet av Themida, siden telleren stadig forandrer seg. Hvis vi visste hvor telleren var, ville det være lett å lage et program som overskrev den med 0 hele tiden - men dette måtte finnes ut på nytt for hver nye versjon av Spotify. En mulig strategi ville være å enten gå igjennom koden som henter lydreklame (ta en process dump og se igjennom med IDA, med mindre denne koden også er "virtuell" og kjøres med Themidas VM), eller å gjøre gjentatte process dumps og se hva som forandrer seg når du spiller men ikke når du har pause på musikken (hvis telleren bare går når det faktisk blir spilt av musikk).

Andre generelle ideer er:
- For å finne ut hvordan Spotify starter IE, kan man kanskje ta en gammel Themida-beskyttet versjon og fjerne Themida. Disse vil ikke koble til Spotifys servere, men disassembly kan si hvordan den starter IE, om den da er ny nok at den bruker IE. Versjonene som bruker Themida er: 42807 42849 42962 42974 43065 44468 44756 44764 45126 45547 45601 45614 46123 46217 46344 46431 46797 47560 47926 48737 49071 49173 50263 50369 50478 50512 51377, og de kan hentes fra http://upgrade.spotify.net/upgrade/c...ng.VERSJON.exe . Husk å sette User-Agent til "Spotify-Win32/0.71-SOMEVER" hvor SOMEVER er et versjonsnummer.
- Mac-versjonen av Spotify er ikke beskyttet i det hele tatt (så vidt jeg vet). Kanskje den kan gi noe informasjon om hvordan krypteringen fungerer / lydreklame-telleren er eller fungerer, etc?