架构师_程序员_码农网

K Hae salasana
Rekisteröidy

QQ登录

Vain yksi askel alkuun

Etsi
View:5980|Reply: 3
打印 上一主题 下一主题

Aiki-pelaajan mainosanalyysi!

[kopioi linkki]
L 跳转到指定楼层
rakennuksen omistajalle
发表于 2014-10-23 22:26:53|只看该作者回帖奖励|Palautaselaus|Lukutila

Äskettäin kiireinen avaaminen koulun sopiva sokea taitto - nämä kaksi päivää Zero kiireinen videomainoksia, sanoi mainoksia saavat yhä enemmän tulvii, jotkut video avaaminen mainoksia ovat yli 60s. Hän pääsi eroon Sohun mainoksista, mutta hän ei ole päässyt eroon Aqiyin mainoksista. Anna minun auttaa häntä etsimään.

Hän antoi minulle lähdekoodin, minulla ei ole swf-purkulaitetta.

Minulla ei ollut swf-dekompilaattoria. Katsoin luultavasti rakennetta, enkä ole oppinut ActionScriptiä. Hän sanoi, että se on samanlainen kuin Java, joten en vaivaudu katsomaan perussyntaksia, vaan menen suoraan siihen. Katsotaan ensin päätiedoston Player.as otsikkoa ja katsotaan, mitä viittauksia siellä on.

  1.     import com.iqiyi.components.global.*;
  2.     import com.iqiyi.components.tooltip.*;
  3.     import com.qiyi.player.base.pub.*;
  4.     import com.qiyi.player.base.uuid.*;
  5.     import com.qiyi.player.core.*;
  6.     import com.qiyi.player.core.model.def.*;
  7.     import com.qiyi.player.core.model.utils.*;
  8.     import com.qiyi.player.wonder.*;
  9.     import com.qiyi.player.wonder.body.view.*;
  10.     import com.qiyi.player.wonder.common.config.*;
  11.     import com.qiyi.player.wonder.common.lso.*;
  12.     import com.qiyi.player.wonder.common.pingback.*;
  13.     import com.qiyi.player.wonder.common.sw.*;
  14.     import flash.display.*;
  15.     import flash.events.*;
  16.     import flash.media.*;
  17.     import flash.system.*;
  18.     import flash.utils.*;
Kopioi koodi

Katso nimeä, com.qiyi.player.wonder.common.config.*; kiinnitti huomioni - katso konfiguraatiotietoja. Tiedostoja on kaksi, FlashVarConfig.as ja SystemConfig.as. SystemConfig.as ei näytä mitään mielenkiintoista, mutta xml-konfiguraatiotiedosto, johon viitataan FlashVarConfig.as-tiedostossa, on tutkimisen arvoinen.

  1. package com.qiyi.player.wonder.common.config
  2. {

  3.     public class FlashVarConfig extends Object
  4.     {
  5.         public static const OWNER_PAGE:String = "page";
  6.         public static const OWNER_CLIENT:String = "client";
  7.         public static const OS_XP:String = "xp";
  8.         public static const OS_WIN7:String = "win7";
  9.         public static const OS_WIN8:String = "win8";
  10.         public static const PAGE_OPEN_SRC_NONE:String = "0";
  11.         public static const PAGE_OPEN_SRC_DIRECT:String = "1";
  12.         public static const PAGE_OPEN_SRC_OTHER:String = "2";
  13.         private static var _flashVarSource:Object;
  14.         private static var _albumId:String = "";
  15.         private static var _tvid:String = "0";
  16.         private static var _vid:String = "";
  17.         private static var _autoPlay:Boolean = true;
  18.         private static var _isMemberMovie:Boolean = false;
  19.         private static var _cyclePlay:Boolean = false;
  20.         private static var _components:String = "fefff7e6";
  21.         private static var _cupId:String = "";
  22.         private static var _shareStartTime:int = -1;
  23.         private static var _shareEndTime:int = -1;
  24.         private static var _preloaderURL:String = "http://dispatcher.video.qiyi.com/dispn/player/preloader.swf";
  25.         private static var _preloaderVipURL:String = "";
  26.         private static var _exclusivePreloader:String = "";
  27.         private static var _useGPU:Boolean = true;
  28.         private static var _showBrand:Boolean = true;
  29.         private static var _expandState:Boolean = false;
  30.         private static var _tipDataURL:String = "http://static.qiyi.com/ext/tips/tipdata.xml";
  31.         private static var _coop:String = "";
  32.         private static var _owner:String = "page";
  33.         private static var _os:String = "win7";
  34.         private static var _adPlayerURL:String = "";
  35.         private static var _origin:String = "";
  36.         private static var _passportID:String = "";
  37.         private static var _playListID:String = "";
Koodin kopiointi

Rivillä 31 tässä konfigurointitiedostossa on tämä kohta. Ja rivillä 35 mainososoite kiinnitti myös huomioni, myöhemmin analyysissä. Tutustu ensin konfiguraatiotiedostoon.

  1. </item>
  2. <!-- 正在为您播放片中广告, 可选择是否要跳过, 类别是1, 持续时间是8秒 -->
  3. <!-- 限制条件是:  不是正在登录中的会员 -->
  4. <!-- 每天每人次只最多显示两次这个tips -->
  5. <item id="ToSelectWhetherToSkipPlayingMiddleAD" level="1" duration="-1" type="1">
  6. <conditions>
  7. <fields>
  8. <field name="member" operator="eq" value="false"/>
  9. </fields>
  10. <frequency count="2">
  11. <restrain name="day"/>
  12. <restrain name="user"/>
  13. </frequency>
  14. </conditions>
  15. <list>
  16. <message>
  17. <![CDATA[
  18. 正在为您播放片中广告, <a href="event:ASEvent(skipAD)"><b><u>跳过广告</u></b></a>
  19. ]]>
  20. </message>
  21. </list>
  22. </item>
  23. <!-- 提示即将跳过8秒后会显示的剧中广告, 类别是1, 持续时间是8秒 -->
  24. <!-- 必须是登录的会员 -->
  25. <item id="ToCancelSkipNextMiddleAD" level="1" duration="8" type="1">
  26. <conditions>
  27. <fields>
  28. <field name="member" operator="eq" value="true"/>
  29. </fields>
  30. <frequency count="1">
  31. <restrain name="day"/>
  32. <restrain name="user"/>
  33. </frequency>
  34. </conditions>
  35. <list>
  36. <message>
  37. <![CDATA[
  38. 即将为您跳过片中广告,<a href="event:ASEvent(cancelSkipAD)"><u>不再跳过</u></a>
  39. ]]>
  40. </message>
  41. </list>
  42. </item>
  43. <!--
  44. 提示版权下线, 如果还有小于7天的时间下线, 每天一个专辑一台电脑提醒一次, 类别是1, 从起始60秒开始显示, 持续时间是10秒
  45. -->
  46. <!-- 因为优先级很高, 前面的最高优先级是10, 所以这里把level设为11. -->
  47. <!-- 这个tip是由signal发起的. Shawn.X  -->
  48. <!--
  49. 《<span>#keyword#</span>》 将于  <span>#expiredTime#</span> 版权到期.
  50. -->
  51. <item id="NoticeThisCopyrightWillExpire" level="11" duration="10" type="1">
  52. <conditions>
Kopioi koodi

Siinä sanotaan, että kyseessä on 8 sekunnin pituinen in-show-mainos, mikä tarkoittaa, että lokalisoin sen ja kaappasin selaimen poistamaan mainokset, mutta on selvää, että kyseessä ei ole mainos ennen videon lataamista. Jatka selaamista - erittäin tylsä prosessi.

Selvitä, kuka kutsuu get adPlayerURL() ja katso ylöspäin. Kohdassa com\qiyi\player\wonder\plugins\ad löysin, että mainossoitin on olemassa pluginin muodossa, eli siellä on vielä kutsu, katsomalla ylöspäin löysin, että osoitteessa com\qiyi\cupid\adplayer\CupidAdPlayer.as CupidAdPlayer on alustettu. Ja luokka on obfuscated, mikä on epäilyttävää.

  1. public function CupidAdPlayer(param1:CupidParam)
  2.         {
  3.             this.PLAYER_TIMEOUT_LENGTHS = new Array(10000, 15000);
  4.             Log.info("init, version=" + VERSION + ", " + param1.toString());
  5.             this._videoPlayerVersion = param1.videoPlayerVersion;
  6.             this._videoId = param1.videoId;
  7.             this._tvId = param1.tvId;
  8.             this._channelId = param1.channelId;
  9.             this._collectionId = param1.collectionId;
  10.             this._playerId = param1.playerId;
  11.             this._albumId = param1.albumId;
  12.             this._userId = param1.userId;
  13.             this._webEventId = param1.webEventId;
  14.             this._videoEventId = param1.videoEventId;
  15.             this._vipRight = param1.vipRight;
  16.             this._terminal = param1.terminal;
  17.             this._duration = param1.duration;
  18.             this._passportId = param1.passportId;
  19.             this._passportCookie = param1.passportCookie;
  20.             this._passportKey = param1.passportKey;
  21.             this._videoDefinitionId = param1.videoDefinitionId;
  22.             if (this.isQiyiWebEx())
  23.             {
  24.                 this._playerUrl = this.IQIYI_WEBEX_AM_URL;
  25.             }
  26.             else if (param1.playerUrl)
  27.             {
  28.                 this._playerUrl = param1.playerUrl;
  29.             }
  30.             else
  31.             {
  32.                 this._playerUrl = this.IQIYI_WEB_AM_URL;
  33.             }
  34.             if (param1.dispatcher == null)
  35.             {
  36.                 this._dispatcher = this;
  37.             }
  38.             else
  39.             {
  40.                 this._dispatcher = param1.dispatcher;
  41.             }
  42.             this._volume = param1.volume;
  43.             this._videoIndex = param1.videoIndex;
  44.             this._stageWidth = param1.stageWidth;
  45.             this._stageHeight = param1.stageHeight;
  46.             this._displayContainer = param1.adContainer;
  47.             this._screenStatus = DisplayProperties.isFullScreen(this._displayContainer.stage) ? ("1") : ("0");
  48.             this._baiduMainVideo = param1.baiduMainVideo;
  49.             this._disablePreroll = param1.disablePreroll;
  50.             this._disableSkipAd = param1.disableSkipAd;
  51.             this._enableVideoCore = param1.enableVideoCore;
  52.             this._isUGC = param1.isUGC;
  53.             this._videoPlayerUrl = this._displayContainer.loaderInfo ? (this._displayContainer.loaderInfo.loaderURL) : ("");
  54.             this._env = this.generateEnv();
  55.             this.addAdPlayerEventListeners();
  56.             return;
  57.         }// end function
Kopioi koodi

CupidAdPlayer(param1:CupidParam) <- katsokaa sen kutsuvia parametreja, eli ylempi kerros kutsuu edelleen, mikä parametri yksi, arvo on hyvin huomattava, vipRight Tuomari, onko se vip, ja vip ei ole olemassa mainoksia, eli jos saan käyttäjän tiedot istunnossa soittimessa, käytän sitä saadakseni käyttäjän tiedot verkkosivustolla, eli jos saan käyttäjän tiedot istunnossa soittimessa, käytän sitä saadakseni käyttäjän tiedot verkkosivustolla. Toisin sanoen, jos teen muutoksen käyttäjän tietoihin istunnossa verkkosivustolla sen jälkeen, kun sen pelaaja saa käyttäjän tiedot verkkosivustolla, ja teen muutoksen paikassa, jossa arvioidaan, onko se vip vai ei, mikä aiheuttaa alemman kerroksen kutsumisen, se luulee virheellisesti, että se on vip (vain mainoksen pelaaja luulee, että olet vip, ja muut paikat eivät vaikuta). Katsotaan siis edelleen ylöspäin. Etsimme sitä, menimme takaisin mainoslisäosan hakemistoon. com\qiyi\player\wonder\plugins\ad\view ADView.as:ssa, otsikko ensin on

  1. private var _adPlayer:CupidAdPlayer;
Kopioi koodi

Määriteltiin CupidAdPlayer-olion instanssi nimeltä _adPlayer kerran, selattiin alaspäin ja selvitettiin, kuka käyttää _adPlayeriä. löytyi yllättäen mainossoittimen luomisfunktio.

  1. public function createAdPlayer(param1:CupidParam) : void
  2.         {
  3.             if (this._adPlayer)
  4.             {
  5.                 this.unloadAdPlayer();
  6.             }
  7.             this._log.info("loading adplayer...");
  8.             this._adPlayer = new CupidAdPlayer(param1);
  9.             this._adPlayer.addEventListener(AdPlayerEvent.ADPLAYER_LOADING_SUCCESS, this.onAdLoadSuccess);
  10.             this._adPlayer.addEventListener(AdPlayerEvent.ADPLAYER_LOADING_FAILURE, this.onAdLoadFailed);
  11.             this._adPlayer.addEventListener(AdPlayerEvent.ADPLAYER_AD_START, this.onAdStartPlay);
  12.             this._adPlayer.addEventListener(AdPlayerEvent.CONTROL_VIDEO_PAUSE, this.onAdAskVideoPause);
  13.             this._adPlayer.addEventListener(AdPlayerEvent.CONTROL_VIDEO_RESUME, this.onAdAskVideoResume);
  14.             this._adPlayer.addEventListener(AdPlayerEvent.CONTROL_VIDEO_START_LOADING, this.onAdAskVideoStartLoad);
  15.             this._adPlayer.addEventListener(AdPlayerEvent.CONTROL_VIDEO_START, this.onAdAskVideoStartPlay);
  16.             this._adPlayer.addEventListener(AdPlayerEvent.CONTROL_VIDEO_END, this.onAdAskVideoEnd);
  17.             this._adPlayer.addEventListener(AdPlayerEvent.ADPLAYER_AD_BLOCK, this.onAdBlock);
  18.             this._adPlayer.addEventListener(AdPlayerEvent.CONTROL_VIDEO_DISPLAY_AD_TIP, this.onAskVideoShowBonusTips);
  19.             this._adPlayer.addEventListener(AdPlayerEvent.ADPLAYER_AD_VIDEO, this.onAdFlvADAction);
  20.             this._adPlayer.load();
  21.             return;
  22.         }// end function
Koodin kopioiminen

Kun näkee, että voi edelleen välittää parametreja, tarkoittaa, että sitä kutsutaan edelleen. Löysin vihdoin lähteen ADViewMediator.as:sta kohdasta com\qiyi\player\wonder\plugins\ad\ad\view. Lopullinen kutsu hänen funktiolleen näyttää tältä

  1. private function createADPlayer() : void
  2.         {
  3.             sendNotification(BodyDef.NOTIFIC_PLAYER_STOP_LOAD);
  4.             ProcessesTimeRecord.STime_adInit = getTimer();
  5.             var _loc_1:* = facade.retrieveProxy(PlayerProxy.NAME) as PlayerProxy;
  6.             var _loc_2:* = facade.retrieveProxy(UserProxy.NAME) as UserProxy;
  7.             var _loc_3:* = new CupidParam();
  8.             _loc_3.playerUrl = FlashVarConfig.adPlayerURL;
  9.             _loc_3.videoId = _loc_1.curActor.loadMovieParams.vid;
  10.             _loc_3.tvId = _loc_1.curActor.loadMovieParams.tvid;
  11.             _loc_3.channelId = _loc_1.curActor.movieModel.channelID;
  12.             _loc_3.playerId = FlashVarConfig.cupId;
  13.             _loc_3.albumId = _loc_1.curActor.movieModel.albumId;
  14.             _loc_3.dispatcher = null;
  15.             _loc_3.adContainer = this._ADView;
  16.             _loc_3.stageWidth = GlobalStage.stage.stageWidth;
  17.             _loc_3.stageHeight = GlobalStage.stage.stageHeight;
  18.             _loc_3.userId = _loc_1.curActor.uuid;
  19.             _loc_3.webEventId = UUIDManager.instance.getWebEventID();
  20.             _loc_3.videoEventId = UUIDManager.instance.getVideoEventID();
  21.             _loc_3.vipRight = _loc_2.userLevel != UserDef.USER_LEVEL_NORMAL ? ("1") : ("0");
  22.             _loc_3.terminal = "iqiyiw";
  23.             _loc_3.duration = _loc_1.curActor.movieModel.duration / 1000;
  24.             _loc_3.passportId = _loc_2.passportID;
  25.             _loc_3.passportCookie = _loc_2.P00001;
  26.             _loc_3.passportKey = KeyUtils.getPassportKey(0);
  27.             _loc_3.enableVideoCore = true;
  28.             _loc_3.disableSkipAd = _loc_1.curActor.movieModel.forceAD;
  29.             _loc_3.volume = Settings.instance.mute ? (0) : (Settings.instance.volumn);
  30.             _loc_3.isUGC = UGCUtils.isUGC(_loc_1.curActor.movieModel.tvid);
  31.             _loc_3.collectionId = FlashVarConfig.collectionID;
  32.             _loc_3.videoDefinitionId = _loc_1.curActor.movieModel.curDefinitionInfo.type.id;
  33.             _loc_3.videoPlayerVersion = WonderVersion.VERSION_WONDER;
  34.             this._ADView.createAdPlayer(_loc_3);
  35.             return;
  36.         }// end function
Kopioi koodi

Avainkohta on kohdassa

  1. _loc_3.vipRight = _loc_2.userLevel != UserDef.USER_LEVEL_NORMAL ? ("1") : ("0");
Kopioi koodi

Tämä rivi, määrittää, onko käyttäjä on vip vai ei, ensin mukaan paikallisen muuttujan loc_2 määrittää tason käyttäjän, jos määritelmän kanssa vip-tason, se palauttaa 1. Annamme hänelle pieni muutos, se tulee pseudo-vip.

  1. _loc_3.vipRight = _loc_2.userLevel != UserDef.USER_LEVEL_NORMAL ? ("1") : ("1");
Kopioi koodi

Tällä tavoin Hex muuttaa linjaa, testi mainokset onnistuneesti poistettu (käyttämällä Chromen plug-in-toiminto, muuttaa soittimen osoite paikallisen, pelata samat parametrit siirtää).

Lisäksi AdBlockedBlackScreen.as:ssa kohdassa com\qiyi\cupid\adplayer\model on paikallinen tunnistusfunktio, jolla kielletään Chromen plug-in-esto.

  1. public static function isInBlacklist(param1:String) : Boolean
  2.         {
  3.             if (!param1)
  4.             {
  5.                 return false;
  6.             }
  7.             if (StringUtils.beginsWith(param1, "chrome-extension://"))
  8.             {
  9.                 return true;
  10.             }
  11.             var _loc_2:* = new URLParser(param1);
  12.             var _loc_3:* = _loc_2.getHost();
  13.             return HOST_BLACKLIST.indexOf(_loc_3) != -1;
  14.         }// end function
Kopioi koodi

Vaihda vain toisen if:n paluu false:ksi.






Edellinen artikkeliFreeze Restore Wizard 7.5 Vaihtoehtoinen Crack Win7:ssä
Seuraava: VMware virtuaalikoneen asennus MAC OSX Mountain Lion
Koodi Farmer-verkko, julkaistaan vain käytännön prosessissa, kohtasi teknisiä vaikeuksia, ei johda muita harhaan.
En ole varma oletko fani tästä.
En ole varma, pystynkö siihen.
发表于 2014-10-23 23:25:57|只看该作者
Xiao Ningzi on niin mahtava
Koodin viljelijäverkosto, julkaistu vain käytännön prosessissa, kohtasi teknisiä vaikeuksia, älä johda muita harhaan.
Penkki
发表于 2014-10-24 21:57:25|只看该作者
Tämä lisäosa mainosten estämiseen ei ole huono

Luokitus

Osallistujat 1 MB +1 Osallistuminen +1 Laita poisSyy
admin + 1 + 1 Erittäin voimakas!

Näytä kaikki arviot

Koodi maanviljelijäverkko, julkaistu vain käytännön prosessissa, kohtasi teknisiä vaikeuksia, älä johda muita harhaan.
lattialaudat
omistaja|发表于 2014-10-24 22:01:44|只看该作者
Kirjoittanut skywriter 2014-10-24 21:57
Tämä lisäosa mainosten estämiseen ei ole huono

Adblock Plus on suosituin mainosten suodatusohjelma, joka on saatavilla Firefox-, Chrome-, Opera, Safari-, Android- ja Internet Explorer -selaimille. Suodata kaikki ärsyttävät verkkomainokset: poista videomainokset Youtubesta, suodata Facebook-mainokset, hankkiudu eroon ponnahdusikkunamainoksista ja paljon muuta. Google Chromessa Adblock Plus on yksi nopeimmin kasvavista lisäosista.
CodeFarmer.com, julkaistaan vain käytännön prosessissa, kohtasi teknisiä vaikeuksia, älä johda muita harhaan.
Sinun täytyy kirjautua sisään ennen kuin voit lähettää viestiä takaisin Kirjaudu sisään | Rekisteröidy

T ämä versio integraalisista säännöistä


VASTUUVAPAUTUS: Kaikki ohjelmistot, ohjelmointimateriaalit tai artikkelit vapauttaa koodi maanviljelijä verkko on rajoitettu opiskelu- ja tutkimustarkoituksiin; edellä mainittua sisältöä ei saa käyttää kaupallisiin tai laittomiin tarkoituksiin, muuten kaikki seuraukset ota käyttäjä vastuussa. Tämän sivuston tiedot verkosta, tekijänoikeuskiista ei liity mitenkään tähän sivustoon. Sinun on poistettava edellä mainittu sisältö kokonaan tietokoneeltasi 24 tunnin kuluessa lataamisesta. Jos pidät ohjelmasta, tuet aitoa ohjelmistoa, osta rekisteröinti ja saat parempaa aitoa palvelua. Jos on olemassa rikkomuksia, ota meihin yhteyttä sähköpostitse, jotta voimme käsitellä sitä.

Sähköposti To:help@itsvse.com

QQ| ( 鲁ICP备14021824号-2)|Sitemap

GMT+8, 2024-9-17 14:05

Quick ReplyTakaisin alkuunTakaisin luetteloon