架构师_程序员_码农网

U Pridobitev gesla
Registracija

QQ登录

Samo en korak za začetek

Iskanje
Pogled:5980|Odgovor: 3
打印 上一主题 下一主题

Analiza oglasov igralca aikija!

[kopiraj povezavo]
D 跳转到指定楼层
lastnika stavbe
发表于 2014-10-23 22:26:53|只看该作者回帖奖励|Obratnobrskanje|Način branja

V zadnjem času zaseden z odprtjem šole, primerne za slepe zgibanje - ta dva dni Zero zaseden video oglasi, je dejal, da so oglasi vedno bolj poplavljeni, nekateri od oglasov za odprtje video so več kot 60s. Znebil se je oglasov za Sohu, vendar se ni mogel znebiti oglasov za Aqiyi. Naj mu pomagam pri iskanju.

Izvorna koda je tista, ki mi jo je dal, nimam programa za razgradnjo swf.

Nisem imel razkrojevalnika swf. Verjetno sem si ogledal strukturo, ActionScripta pa se še nisem naučil. Rekel je, da je podoben Javi, zato se ne trudim, da bi pogledal osnovno sintakso, in grem naravnost k njej. Najprej si oglejmo glavo glavne datoteke Player.as in poglejmo, kakšne reference so v njej.

  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.*;
Kopirajmo kodo

Poglejte ime, com.qiyi.player.wonder.common.config.*; pritegnilo je mojo pozornost - poglejte podatke o konfiguraciji. Na voljo sta dve datoteki, FlashVarConfig.as in SystemConfig.as. SystemConfig.as ne prikazuje nič zanimivega, vendar je konfiguracijsko datoteko xml, na katero se sklicuje FlashVarConfig.as, vredno raziskati.

  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 = "";
Kopiranje kode

V vrstici 31 te konfiguracijske datoteke je naslednji odstavek. V 35. vrstici oglasnega naslova pa je mojo pozornost pritegnil tudi poznejši del analize. Najprej si oglejte konfiguracijsko datoteko.

  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>
Kopirajte kodo

V njej piše, da gre za oglas v prikazu s trajanjem 8 s, kar pomeni, da sem ga lokaliziral in ugrabil brskalnik za odstranitev oglasov, vendar je jasno, da to ni oglas pred nalaganjem videoposnetka. Nadaljujte z obračanjem - zelo dolgočasen postopek.

Ugotovite, kdo kliče funkcijo get adPlayerURL(), in poglejte navzgor. Pod com\qiyi\player\wonder\plugins\ad sem ugotovil, da predvajalnik oglasov obstaja v obliki vtičnika, to pomeni, da še vedno obstaja klic, če pogledamo navzgor, sem ugotovil, da je pri com\qiyi\cupid\adplayer\CupidAdPlayer.as inicializiran CupidAdPlayer. Razred je obfusciran, kar je sumljivo.

  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
Kopirajte kodo

CupidAdPlayer(param1:CupidParam) <- poglejte njegove klicne parametre, to pomeni, da zgornji sloj še vedno kliče, kateri parameter, vrednost je zelo opazna, vipRight Sodite, ali je vip, in vip ne obstaja oglasi, to pomeni, če dobim podatke o uporabniku v seji v predvajalniku, jih bom uporabil za pridobitev podatkov o uporabniku na spletni strani, to pomeni, če dobim podatke o uporabniku v seji v predvajalniku, jih bom uporabil za pridobitev podatkov o uporabniku na spletni strani. To pomeni, da če naredim spremembo v informacijah o uporabniku v seji spletnega mesta, potem ko njegov predvajalnik dobi informacije o uporabniku na spletnem mestu, in naredim spremembo na mestu presoje, ali je vip ali ne, zaradi česar bo spodnji sloj poklican, bo napačno mislil, da je vip (samo oglaševalski predvajalnik misli, da ste vip, na druga mesta pa to ne vpliva). Zato še naprej poglejmo navzgor. Če ga iščemo, smo se vrnili v imenik oglaševalskega vtičnika. com\qiyi\player\wonder\plugins\ad\view v ADView.as, v glavi je najprej

  1. private var _adPlayer:CupidAdPlayer;
Kopiraj kodo

Enkrat opredelil primerek CupidAdPlayer z imenom _adPlayer, se pomaknil navzdol in ugotovil, kdo uporablja _adPlayer. presenetljivo je našel funkcijo za ustvarjanje oglasnega predvajalnika.

  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
Kopiranje kode

Če vidite, da lahko še vedno posredujete parametre, to pomeni, da se funkcija še vedno kliče. Končno sem našel izvorno kodo v datoteki ADViewMediator.as v razdelku com\qiyi\player\wonder\plugins\ad\view. Končni klic njegove funkcije je videti takole

  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
Kopiraj kodo

Ključna točka je v

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

Ta vrstica, da bi ugotovila, ali je uporabnik vip ali ne, najprej glede na lokalno spremenljivko loc_2 določi raven uporabnika, če z opredelitvijo ravni vip, vrne 1. Damo mu rahlo spremembo, postane psevdo-vip.

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

Na ta način v Hex za spremembo vrstice, testni oglasi uspešno odstranjeni (s funkcijo vtičnika Chrome, spremenite naslov predvajalnika za lokalno, predvajajte iste parametre, ki jih je treba posredovati).

Poleg tega je v AdBlockedBlackScreen.as pod com\qiyi\cupid\adplayer\modelom lokalna funkcija zaznavanja, ki prepoveduje blokiranje vtičnika Chrome.

  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
Kopirajte kodo

Samo spremenite vrnitev drugega ifa v false.






Prejšnji članekFreeze Restore Wizard 7.5 Alternative Crack v Win7
Naslednji: Namestitev virtualnega stroja VMware MAC OSX Mountain Lion
Koda Kmetijsko omrežje, objavljena le v procesu prakse, naleteli na tehnične težave, ne zavaja drugih.
Nisem prepričan, ali ste ljubitelj tega.
Nisem prepričan , ali bom to lahko storil.
发表于 2014-10-23 23:25:57|只看该作者
Xiao Ningzi je tako velik
Koda mreže kmetov, objavljena le v procesu prakse, naletela na tehnične težave, ne zavajajte drugih.
Bench
发表于 2014-10-24 21:57:25|只看该作者
Ta vtičnik za blokiranje oglasov ni slab

Ocena

Udeleženci 1 MB +1 Prispevek +1 OdložiRazlog
admin + 1 + 1 Zelo močan!

Oglejte si vse ocene

Koda kmečkega omrežja, objavljena le v procesu prakse, naletela na tehnične težave, ne zavajajte drugih.
talne plošče
lastnik|发表于 2014-10-24 22:01:44|只看该作者
Objavil skywriter dne 2014-10-24 21:57
Ta vtičnik za blokiranje oglasov ni slab

Adblock Plus je najbolj priljubljena programska oprema za filtriranje oglasov, ki je na voljo za brskalnike Firefox, Chrome, Opera, Safari, Android in Internet Explorer. Filtrirajte vse nadležne spletne oglase: odstranite video oglase na YouTubu, filtrirajte oglase na Facebooku, znebite se pojavnih oglasov in še veliko več. V brskalniku Google Chrome je Adblock Plus eden najhitreje rastočih vtičnikov.
CodeFarmer.com, objavljen le v procesu prakse, naletel na tehnične težave, ne zavajajte drugih.
Preden lahko objavite nazaj, se morate prijaviti Prijava | Registracija

T a različica integralnih pravil


IZJAVA: Vsa programska oprema, programsko gradivo ali članki, ki jih je izdala mreža code farmer, so omejeni na študijske in raziskovalne namene; zgornja vsebina se ne sme uporabljati v komercialne ali nezakonite namene, sicer za vse posledice odgovarja uporabnik. To spletno mesto informacije iz omrežja, spor o avtorskih pravicah nima nobene zveze s tem spletnim mestom. Zgornjo vsebino morate v celoti odstraniti iz računalnika v 24 urah po prenosu. Če vam je program všeč, podprite pristno programsko opremo, kupite registracijo in pridobite boljšo pristno storitev. Če pride do kakršne koli kršitve, se obrnite na nas po elektronski pošti, da jo obravnavamo.

Pošta To:help@itsvse.com

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

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

Hitri odgovoriNazaj na vrhNazaj na seznam