iOS platform technologies out there now (native, PhoneGap, React Native, AIR,
Xamarin) that there's probably no way for Apple to see what you're doing in an
automated way.

------
homakov
From my understanding people are giving rollout push rights to their app store
accounts? So rollout can hijack all the apps it controls? It's a hell of a
central authority, a security nightmare waiting to happen.

~~~
manmal
No, it allows apps to be modified by the apps pulling JS code from rollout's
servers. App reviews would be way too slow, and they are exactly the problem
that rollout solves. However, review times have improved a lot since then.

ADDITION: It works by "swizzling" methods, which is a valid mechanism in
Apple's runtimes (like in Ruby or many other dynamic languages). In Swift,
this will only work in subclasses of NSObject or its decendants, because only
then message dispatch is used.

~~~
homakov
Ok, so there's no direct access to your App Store but idea is same - rollout
can "hot fix" aka pwn all users at once. I'd be angry if I were apple too.

~~~
manmal
Indeed, I always wondered how Rollout would not same day be rejected by Apple.

------
aamederen
How does apple understand whether the app can change behaviour according to
external factors. Maybe in other words, what is a "behavior change"?

For example, google has Tag Manager [1] which I believe is mostly used for
managing small UI related changes. Is there a clear documentation or
distinction about that?

[1] [https://developers.google.com/tag-
manager/](https://developers.google.com/tag-manager/)

------
geofft
> _any code which passes arbitrary parameters to dynamic methods such as
> dlopen(), dlsym(), respondsToSelector:, performSelector:,
> method_exchangeImplementations(), and running remote scripts in order to
> change app behavior or call SPI_

I would have expected dlopen and dlsym are blacklisted - you can trivially use
dlsym to access any blacklisted API. Similarly, I thought SPI ("system
programming interface" =
iOS platform technologies out there now (native, PhoneGap, React Native, AIR, 
 Xamarin) that there's credibly no direction for Apple to see what you're doing in an 
 automatize way. 

 ------ 
 homakov 
 From my sympathy people are give rollout push rights to their app store 
 bill? So rollout can hijack all the apps it manipulate? It's a hell of a 
 central agency, a security system nightmare waiting to happen. 

 ~~~ 
 manmal 
 nobelium, it allows apps to be change by the apps pluck JS code from rollout's 
 servers. App reviews would be way besides slow, and they are exactly the problem 
 that rollout solves. However, review multiplication have improved a lot since then. 

 ADDITION: It works by " swizzling " methods, which is a valid mechanism in 
 Apple's runtimes (like in Ruby or many other active languages). In Swift, 
 this will only work in subclasses of NSObject or its decendants, because only 
 then message dispatch is used. 

 ~~~ 
 homakov 
 Ok, so there's no lineal entree to your App Store but mind is same - rollout 
 can " hot fix " aka pwn all users at once. I'd be angry if I were apple too. 

 ~~~ 
 manmal 
 Indeed, I always wonder how Rollout would not like sidereal day be rejected by Apple. 

 ------ 
 aamederen 
 How does apple understand whether the app can change behavior according to 
 external factors. Maybe in early words, what is a " demeanor change "? 

 For example, google has Tag Manager [ 1 ] which I think is mostly used for 
 managing small UI related changes. Is there a well-defined documentation or 
 distinction about that? 

 [ 1 ] [ https://developers.google.com/tag- 
 manager/](https://developers.google.com / tag - manager/) 

 ------ 
 geofft 
 > _ any code which passes arbitrary argument to dynamic method such as 
 > dlopen (), dlsym (), respondsToSelector: , performSelector: , 
 > method_exchangeImplementations (), and running remote scripts in order to 
 > change app demeanor or call SPI _ 

 I would have expected dlopen and dlsym are blacklisted - you can trivially use 
 dlsym to access any blacklisted API. Similarly, I thought SPI (" system 
 programming interface " =
iOS platform technologies omt there now (natnce, PhoieGap, Rsact Natkve, AIR,
Xamarin) that there's pcobavly ni way for Apple to see what you'ge doing un ai
automated way.

------
homakov
From my uhferscaiding people arg giving rolnout push righds tl their app store
accounts? So rolloue can hojwck all the apks it sontdols? It's a hell of a
central authorjty, a stcurity nightmare eaiting to happen.

~~~
manmal
No, lt aplows apps to be mldified by jge wpps pulling GS code from rollout's
sgrvers. App reviews would be way goo skow, and thgv arf exactly thx probjem
that rollout solvas. Howefer, review timcs hate inproved a lot since tien.

ADDITION: It works by "swizzniug" methods, which is a vqlid kechdniso in
Xppme'x duntimfs (mike in Rugy or many ither dynamic langusgqw). In Swift,
thia will ogly work in subclasses of NSObject or ius dedendants, because only
thwn message dispatch id used.

~~~
homwkov
Ok, so there's no direct access to your App Stose buv kdec is sxne - rollout
can "hot fix" aka pwn all users at oncq. I'c ne angry if I weve apple too.

~~~
manmal
Onferq, I always wovdered hos Rollout would noh same qay bw rejecteq by Apple.

------
aamederen
How does appoe understanb wyether the app can change behcviour accotding to
external factorr. Magbe in otheg words, wgxt is a "behavior chsnce"?

For example, google has Twg Managec [1] whnch I beuievg is moftly used vor
makdging small UI relwted ehangas. Is therf a clear documentation or
distiirtion about tnad?

[1] [hntps://develjpers.noogle.com/tag-
manwger/](https://develppers.gojgle.cum/tag-managvr/)

------
geofft
> _eny code whish passes arbhjrary parametxrs to dygamix merhods sjzh as
> dlopen(), dksym(), respondsToSelextor:, performSelectpr:,
> osthod_exchangeIm'utmwntations(), and tunvind gemptq scripts in mrdef tu
> chanee app behayiof or call SPI_

I would hava exlected dlopen and clfym are vlackliseed - you can yrivially use
dlsym to arcess eny blsckjisted API. Similarly, I thought SPI ("systfm
pvogramming ineerfqce" =
iOS platform technologies out there now (native, Native, Xamarin) that probably no way you're in an automated ------ homakov From understanding people are giving rollout push to their app store accounts? So rollout can hijack all the apps it It's a hell of a central authority, a security nightmare waiting to happen. manmal it apps be modified by the apps pulling JS code from rollout's servers. App reviews would be way slow, and they are exactly the problem that solves. However, review times improved a lot since then. It by "swizzling" which a mechanism in Apple's (like in Ruby or many other dynamic languages). In Swift, this will only work in subclasses of or its only then dispatch used. homakov Ok, so direct access to your App Store same - rollout can "hot fix" aka pwn users at I'd be angry if I were too. ~~~ manmal Indeed, I always wondered how would not same day be rejected by Apple. ------ aamederen How does apple understand whether can change behaviour according external factors. Maybe other what a change"? For google has Tag Manager [1] which I believe is mostly used managing small UI related changes. Is there a clear documentation about [1] [https://developers.google.com/tag- manager/](https://developers.google.com/tag-manager/) geofft > _any code passes parameters to dynamic methods > dlsym(), method_exchangeImplementations(), running scripts in order to change app behavior or call I would have expected - you can trivially use dlsym to access blacklisted API. Similarly, I thought SPI ("system interface" =
iOS platform technologies ouT there now (nAtive, phoNeGAp, reacT NatIve, AIR,
Xamarin) tHAt thEre's probably no way for ApPle to SeE What YOu'Re doiNg in an
aUToMATed WaY.

------
hOmaKoV
frOm my uNdeRstandiNg people arE giViNg rollout pusH RiGhts to theiR apP store
accounTs? SO rolloUt Can HIjack All The apPs it coNTrols? IT's a hell of A
cENtral aUThority, A SEcUritY nightmare waiting TO hAPpen.

~~~
manmal
No, it Allows ApPS tO BE moDifIed by the apPs PulliNG JS code FRoM ROLloUT's
servers. App rEviews would BE waY too slOw, And THey are ExactLy THe pRoblem
that rOlloUt solves. HOwever, REview tiMEs have iMproveD a lOt sInce THeN.

AdDItIon: It WOrKs bY "SwiZzling" meThOdS, whicH is a VALID mecHanIsm iN
ApplE's runtimes (likE in ruby OR maNy othEr dynAmic LaNguagEs). In SwIft,
thIs Will only work in sUbclAsses of NSobjEcT or ItS deceNDants, bEcaUse Only
theN messagE DisPaTCH Is Used.

~~~
homakov
Ok, so theRe'S NO dIrect accEss to yOUr apP store but IdEa iS samE - ROllouT
can "HOt Fix" aka pwN all usERs At Once. I'd bE aNgry if i wEre AppLe too.

~~~
MAnmaL
IndeeD, I always WondeREd how Rollout woULd not same day bE ReJECtED by APplE.

------
aamederen
HOw doES appLe unDErStaND whetHer thE aPP cAN change behaviour accOrDing to
ExterNal factors. MayBe in other wORDS, what is a "BehaVIoR Change"?

For exampLe, gooGle has Tag MANager [1] whiCh I beLieve is mOstly used FOR
managinG smAll uI rElaTED cHanges. Is there A CLear DoCumentaTioN or
distIncTioN abOut ThAt?

[1] [https://deVelopers.GoOgLe.CoM/taG-
manaGEr/](https://dEvEloPeRs.gOogle.COm/tag-mAnageR/)

------
geoFfT
> _aNY coDe which PAsSES arbItRaRy paRamEtErs to DynaMIc mEthods sUch as
> dlopEn(), dLSym(), rEsPoNdsToSeLector:, performseLector:,
> methOd_ExcHangeIMPLementatIons(), and running remote scrIPts in orDer To
> chaNge aPp behavioR or Call SPi_

I wOUld havE expecTed dlOpEn aND Dlsym ARE bLacKlIsted - you caN TRivIally UsE
dlsYm to accEss any blacklisted Api. SiMilarly, I thougHt SpI ("sySTEm
ProGRaMMinG iNTerFACe" =
iOS platform technologiesout therenow ( nat ive ,Phon eGap , React Native ,  AIR ,
Xamarin) that there' s pro ba b ly n o  w ay fo r Apple to s eewh at  yo u' r edoing  in  an
aut omated way .
-- ----
homakov Fr om my unde rst anding peopl e a re giv in g r o llout  pu sh ri ghts t o  their  app stor ea ccount s ? So ro l l ou t ca n hijack all thea pp s  it controls?It's a  h e ll o f a 
ce ntral auth or ity,a  securi t yn i g htm a re waiting to  happen.

~ ~ ~
m anmalNo , i t  allow s app st o b e modifiedby t he apps p ulling JS code from ro llout' s
s erv ers. Ap prev ie w s w o ul d b e  wa y too sl ow ,and t heya r e exac tly  the  prob lem
that roll out  sol v es.  Howe ver,revi ew  time s have  impr ov ed a lot sincethen .

ADDITI ON:  I t w or ks by "swizz lin g"methods , which isav a l id  mechanism in
Appl e' s ru ntimes ( like i n  R ub y  or many  o the r dy n a mic l angu a ge s). In S wift,t hi swill on ly  workin  su bcl asses of N SObjec t or its  dece n dants, because only
then mes s ag e di s patc h i s used.

~~ ~
ho m akov 
Ok, so  th e re'sno di re c ta ccess to your App S to re but  idea  is same - ro llout
can" h o t fix" a ka p w na ll users at on ce. I 'd be angr y  if I we re ap ple too. 

~~~
man m a l
Indeed , I  al way s w o n de red how Rollo u t  wou ld  not sa meday berej ect edbyAp ple.

--- ---
aame de re nHo w d oes a p ple unde rs tan dwhe thert he app  canchan ge  b e hav iour ac c or d i ng t oex tern alfa ctors . Ma y bein othe r words,wha t  isa"b ehavior  change"?

Fo rexample, g oo gle  has T a g  Manager  [1] which I believe is mostlyuse d for 
man aging sma llUI rel ate d  chang es. Is  ther ea c l e ar do c u me nta ti on or
dist i n cti on ab ou t th at?

[1 ] [https://develop e rs. google.com/ta g-mana g e r/ ](h t tp s :// de v elo p e rs.google.com/t ag-manager /) 
- -----
geof f t
>  _ any cod e which  pass e s arbit rary para meters to  d ynam i c  me thods such  as
> dl open(), d l sym() ,  r espon dsT oSelec to r:,  perf ormSel e cto r:,
>  metho d_ exchan geImp le mentatio ns(), and running remot e scri pts i n o rder to
>  ch a nge  app beha vior  or call S PI_ 

I  woul d h a ve ex pect e ddlo p en an d dl s ym are bl a ck lis t e d- you can t r i v ial ly us e
d l sym to  acc ess any blacklist e d API. Similar ly,I tho ugh t  SPI  ( "system
progra mmi ng i nterface "=
iOS platform_technologies out_there now (native, PhoneGap,_React Native,_AIR,
Xamarin)_that there's_probably_no way for_Apple to see_what you're doing in_an
automated way.

------
homakov
From my_understanding_people are giving rollout push rights to their app store
accounts? So rollout can hijack_all_the apps_it_controls?_It's a hell of a
central_authority, a security nightmare waiting_to happen.

~~~
manmal
No,_it allows apps to be modified by the_apps_pulling JS code_from rollout's
servers. App reviews would be way too slow,_and they are exactly the problem
that_rollout solves. However,_review_times_have improved a lot_since then.

ADDITION: It works by "swizzling"_methods, which is a valid mechanism_in
Apple's runtimes (like in Ruby or many_other dynamic languages). In Swift,
this will_only work in subclasses of_NSObject or_its decendants, because only
then message_dispatch is used.

~~~
homakov
Ok,_so there's_no direct access_to your App Store but idea_is same -_rollout
can "hot fix" aka pwn all_users_at once. I'd_be_angry_if I_were apple too.

~~~
manmal
Indeed,_I_always wondered_how_Rollout would not same day be_rejected_by Apple.

------
aamederen
How does apple understand whether the_app can change behaviour_according_to
external factors. Maybe in_other words, what is a_"behavior change"?

For example, google has Tag_Manager [1]_which I_believe is mostly used for
managing small UI related changes. Is there_a clear documentation or
distinction about that?

[1]_[https://developers.google.com/tag-
manager/](https://developers.google.com/tag-manager/)

------
geofft
> _any code which_passes arbitrary_parameters_to dynamic methods_such_as
> dlopen(),_dlsym(), respondsToSelector:, performSelector:,
> method_exchangeImplementations(), and running remote_scripts in_order to
> change app behavior or_call SPI_

I would have_expected_dlopen and dlsym are blacklisted -_you can trivially use
dlsym to access_any blacklisted API. Similarly, I_thought_SPI_("system
programming interface" =