@neiraza

2匹の怪獣が寝た後にプログラマーしてる、最近はサイバーエージェントでゼミ長もしてる僕のネタ帳

Cycript入門 〜アプリをハックしてデバッグしてみよう〜

はじめに

この記事は、 僕が主宰する スマートデバイス向けアプリのマネタイズ研究と実践開発』ゼミの 活動記録です。

ゼミについて

株式会社サイバーエージェント アドテク本部 アドテクスタジオ内の活動です。
詳しくは、ゼミ『スマートデバイス向けアプリのマネタイズ研究と実践開発』まとめをご参照ください。

用意するもの

  • ジェイルブレイク済みのiOS端末
  • Cydiaがインストールされている

下記のドキュメントはCydiaを前提としています。

目的

Cycriptは、既存のアプリにコードを突っ込むことができるので、リリース後のアプリに対してもデバックに使えるかなと思っています。
このツールは、Objective-CJavaScriptのハイブリッドのツールらしく、ターミナルにObjective-Cのコードを入力するだけでそのアプリ内で実行することができるらしい。

目標

参加者全員が 適当なアプリのボタンやラベルの内容を外から変更する を達成する

Cycript入門

以下の操作について、ジェイルブレイク前提であり、自己責任でお願いします。

参考になったサイト

主なオペレーション

  • Cydiaを使う
  • Cycriptをインストールする
  • OpenSSHをインストールする
  • iPhoneMacからSSHでログインする
  • Cycriptでアプリを操作する
  • Process Injection
  • アプリの画面構成をハックする
  • ボタンの色やテキストをハックする
  • ボタンイベントをハックする

Cydiaを使う

CycriptやOpenSSHをインストールするのに使用します。僕の脱獄方法の場合です。 IMG_0001.PNG

Cycriptをインストールする

今回のお題でもあるこいつをインスールします。 IMG_0016.PNG

OpenSSHをインストールする

ついでにOpenSSHもインスールします。 IMG_0004.PNG

iPhoneSSHでログインする

自分のMacのターミナルから、iPhoneIPアドレスを指定してsshログインします。初期パスワードは、alpine です。

$ ssh root@[IPアドレス]
root@IPアドレス password:[alpine]
root#

Cycriptでアプリを操作する

操作したいアプリのプロセスをチェックし、cycriptで指定して起動する。
下記では、UBER を題材にすすめます。

重要 下記作業前にUBERをインストール&起動しておきます。

起動直後の画面はこんな感じ。 IMG_0011.PNG

Process Injection

cycript -pを使って、プロセスにアタッチします。

root# ps aux | grep UberClient
mobile 1660 0.0 4.4 815456 90912 ?? Us 6:49PM 0:02.64 /var/containers/Bundle/Application/E3330-CBE5-40AC-8365-66E075C6C04C/UberClient.app/UberClient
root# cycript -p 1660
cy#

アプリの画面構成をハックする

cy# UIApp.keyWindow.recursiveDescription()
@"....現在表示中の画面構成を再帰的に表示されます、結果はキャプチャのみで"

ダーッとでます スクリーンショット 2016-09-20 23.17.40.png

中央の UBER 画像をハックする

こんな感じで、オブジェクトを取得するには、画面構成からIDを探してインスタンスを生成したります。

cy# var imageView = new Instance(0x151101f30);
cy# var droidUrl = [NSURL URLWithString:@"https://andropp.jp/webapp/wp-content/uploads/2014/11/android-wallpaper5_2560x1600_1.jpg"];
cy# var droidData = [NSData dataWithContentsOfURL:droidUrl];
cy# var droidImage = [UIImage imageWithData:droidData];
cy# imageView.image = droidImage;


UBERイコン画像が消えて、droidくんになってもーたw

IMG_0012.PNG

登録ボタンをハックする

var signupButton = new Instance(0x14fe47730);
[signupButton setTitle:@"hogeeee" forState:UIControlStateNormal];


と入力すると 登録 という文字が.... IMG_0013.PNG ....hogeeee になってるw

ちなみに、登録ボタンを端末に触らずに押しちゃうには....

cy# [signupButton sendActionsForControlEvents:UIControlEventTouchUpInside];

これで、起動! IMG_0016.PNG

まとめ

iOS端末をジェイルブレイクしないといけないので、少し敷居が高い。
Cycriptを使ったハックは、既存アプリの研究を目的とした活用に向いてそう。
また、アプリ側にバックドアを意識した仕掛けを用意しておけば、強力なデバッグができそう(そんな仕掛け、怖くてアレだけど)。

iOS10でIDFAを取得できるか!?

オプトアウトした端末のIDFAは取得できない?

iOS10 アップデート以降、オプトアウトした端末のIDFAは取得できないといった情報が、巷でまことしかやに囁かれている。 僕自身の iOS10 に端末をアップデートし、検証を試みた。

検証しみてる

iOS9 まではユーザが自身の端末上でオプトアウトしても、IDFAの取得自体は可能だった。 しかし、 iOS10 アップデート(2016年9月14日 日本時間2時)以降、有効なIDFAが取得できない。 もう少し詳細に書くと、 文字列は取得できるが、一意のユーザーを表すものではない。 実際に、オプトアウトした後に取得した値は、00000000-0000-0000-0000-000000000000 というゼロパディングされた文字列が返ってきてた。

cf. ASIdentifierManager Overview 3.
Get the advertising identifier using the advertisingIdentifier property (note that when ad tracking is limited, the value of the advertising identifier is 00000000-0000-0000-0000-000000000000).

https://developer.apple.com/reference/adsupport/asidentifiermanager

iOS端末でオプトアウトするための方法

[設定] - [プライバシー] - [広告] - 「追跡型広告を制限」 をオンにする

まとめ

大抵の広告事業者は端末側でIDFAとオプトアウトフラグの両方を取得して、広告配信サーバへ投げているはず。 CV計測目的の場合、広告配信という目的の延長線上としてオプトアウトフラグの状態に関わらずIDFAを使用していると思われる。 たぶん、問題の焦点はこの世の中でオプトアウトしているユーザが何人いるのかによって、影響度合いが大きく変わるところだと思う。

サンフランシスコビギナーでも安心!? ~旅行準備~

CA ProFit-X(CyberAgent,Inc.)というSSP事業でエンジニアをやっている @neiraza です。

初めてのサンフランシスコ!
AltConf(2016/06/13 Mon - 2016/06/16 Thu)に参加してきました!! f:id:redogu:20160617083214j:plain

WWDC2016の抽選に外れ途方にくれていましたが、なんとかお祭りの片隅に参加してきました。 僕をサンフランシスコに送り出してくれた会社とチームに感謝です。

AltConfの会場は、WWDCのメイン会場であるモスコーニの隣にあるAMCという映画館のスクリーンを借りて行われました。 f:id:redogu:20160617090732p:plain

英語も怪しく、日常生活の常識に疎い僕が初めてのサンフランシスコ初めての海外カンファレンス参加について、下記数回に分けて記事を書いてみようと思います。

  • サンフランシスコビギナーでも安心!? ~旅行準備~
  • サンフランシスコビギナーでも安心!? ~観光~
  • AltConfって何? WWDCとどう違うの?

僕の旅行レベルは初めてのおつかいレベル

国内旅行であれば年に5,6回は行きますが、海外旅行は7年ぶりくらいです。 旅行の用意とか、めんどくて前日までしない派です。

しかし、今回は観光メインではないのでそれなりに準備したので、自分なりに良かった事を紹介しようと思います。
慣れている人には当たり前なんでしょうけど。

圧縮袋が最強すぎる

初めて旅行で使ったのですが、最強です。
今回は4泊したので1日1セット毎に圧縮袋につめて小さくしただけで、4日分がすげー小さく!
しかも、1セット空けたら前日着た分を圧縮袋につめてしまえば、帰りの準備も完璧です!
僕はもともと荷物が少ないのですが、機内持ち込み荷物だけで足りました。

Uberが便利すぎる

現地ではバス&徒歩を駆使していましたが、どうしても車が必要な場面で、簡単に呼び出せるUberは便利です。
初回登録時にカード登録をしてしまうので、使い方も簡単で配車時は現在地と目的地を入力するだけ。乗車後はボーッとするだけ。

Uber登録時に2000円分無料になるプロモーションコード

vdrvm92mue

ANKERの充電地が最高でした

会社で貰ったANKER を今まで使う機会がなかったのですが、こいつすごいです。
僕の海外旅行ではiPhoneが生命線だったので、電池が少なくなってきたら、こいつに指しっぱでOK。
他にポータブルWiFiも借りていたので、そいつも充電できる状況を確保したのは旅の安心につながりました。

ユニクロのウルトラライトダウンがすごすぎる

僕は荷物を最低限しか持たないので、旅行行くのにパジャマとか持って行きません。酔いつぶれたら着ないしね。
ですが、サンフランシスコ市内は寒いと聞いていたので、先駆者のアドバイス通りに持っていきました。当然、圧縮袋でぺっちゃんこにして。
日中は、やや厚手パーカ&長袖シャツ&デニムのパンツ&キャップで大丈夫でした。
問題は宿泊したホテルの夜が寒くて、長袖シャツ&下着パンツだけでは生きていけず、酒を飲んでも寒く・・・。
そこで登場したのが、ウルトラライトダウン。こいつを着て寝れば、途中で変な汗をかくので、脱いだり着たりしながら夜を過ごしました。
すごく快適でした!

ちなみにユニクロはパウエル駅やユニオン・スクエアから近く、ケーブルカーが走っているパウエルストリートにあります! f:id:redogu:20160617095047p:plain

しめ

だいたい、こんなもんでしょうか。 次回は、サンフランシスコビギナーでも安心!? ~観光~を書く予定です。 その前に、便利だったサービス・アプリ編も書こうかな。

その間に、AltConfとWWDCの情報を整理したり、コード書いたりして準備しなきゃ。。。

『アドテクノロジーの教科書』を読んだよ

この数週間、お風呂で読んでいた『アドテクノロジーの教科書』を簡単に紹介します。

アドテクノロジーの教科書 デジタルマーケティング実践指南

アドテクノロジーの教科書 デジタルマーケティング実践指南

僕はSSP事業をやっているチームで広告配信SDKをつくったり、チームのアプリ戦略を一緒に考えたり推進したりしてます。
一応、アドテク絡みのエンジニアに分類されています。
広告配信SDK自体はアドテクの主役ではなく、モバイルアプリエンジニアの派生くらいかなと思っています。

SSP事業をつくる」、「プロダクトをつくる」という積み重ねの中で、アドテクの事をもっと知りたくなり、この本を読みました。

本の概要

アドテクの歴史、紹介から始まり、「オーディエンスターゲティング」、「リワード広告」、「DSPSSP」、「インフィード広告、イン◯◯広告」、「PMP」などの解説、「効果測定」の解説と事例紹介、プレイヤーやマーケットの話しとインタビューのおまけつき。
全体的に導入レベルですが、初学者には分かりやすい表現で解説されていると思います。

気にいった部分を紹介

Chapter3 Measurement 03 リサーチと購買データを活用した効果測定の事例

とある会社のキャンペーン効果を分析するという話しなのですが、おそらく「DSP」や「DMP」に関わるデータ分析を専門にしている人にとっては、当然な話しなのでしょうが、可視化をこんな風にしているんだなと思い、勉強になりました。

メディア(広告枠を提供する側)のお客様と「ブランディング広告」を「ネイティブ広告」として、どの様に表現したらメディアの価値を下げずに収益化を図れるか、アイデア出しをしたりする機会があるので、とても参考になりました。
(どの様に表現したらというアイデアに対し、データから推測した結果とかを提示できると、もっといいかも)

というわけで、息抜きには調度良い安価な値段で薄くて軽いので、連休中の移動時に読むには最適な本かなと思います。

次はこれらの本を読もうかな。

リアル行動ターゲティング

リアル行動ターゲティング

運用型広告 プロの思考回路 AdWords/Yahoo!/Facebook広告の効果を最大化するベストプラクティス (WEB PROFESSIONAL)

運用型広告 プロの思考回路 AdWords/Yahoo!/Facebook広告の効果を最大化するベストプラクティス (WEB PROFESSIONAL)

全部薄くて風呂とか移動時に読みやすいし。

ABC2016Springにブースを出展してきました

こんにちは!

 

去年のAB2015Summerに引き続き今年もVRネタを引っさげ、

abc.android-group.jp

ABC 2016 Springにブースを出展してきました!!

 

今年のポスターは社内のデザファクで作成して頂いたきました!

カラーはドロイド君を意識して、緑に。すげー、良いでき!!

ゼミ紹介もこれさえあれば、簡単です(笑) 

f:id:redogu:20160313203949p:plain

 

今回、ゼミ活動と共に一緒に紹介したいのはこれ!

CA Profit-X のアプリチームで企画しているセミナーイベント。

今回は「メディアの効果的な画像の選び方」です。僕達が新たにつくった広告商品も紹介する予定です。

f:id:redogu:20160313204345p:plain

 

上記イベントは下記リンクから申し込めます!

キュレーションメディア運営あるあるが聞けるかも!?

 

connpass.com 

 

さて、今回のABCの会場は青山学院大学(青山キャンパス)でした。

会社から荷物をもって直接行ったのですが、どこの校舎か迷う迷う・・・。

f:id:redogu:20160313203854j:plain

 

会場についたら、みんなで設営。

ポスターを貼り、チラシを準備し、ダンボールで作成した自作パネルを置き、ノベルティのGoogle CardBoard(簡易的なVR用のHMD)を組み立て。

f:id:redogu:20160313203900j:plain

 

今回のVRゲームは『GEARCLOPS』の展示は、Unity VR Expo Shibuyaにブースを出していたバッカム株式会社 の黒川社長のご協力のもと実現しました!

f:id:redogu:20160313204804j:plain

 

その黒川社長がイベント前日夜に、急ぎ描いた力作。

時間なくて、ぜんぶ手描きです。

f:id:redogu:20160313204821j:plain

 

今回のノベルティは後々、自分たちの手元に何かが残るように、名刺と交換とさせて頂きました。

それでも、30個が余裕でなくなる・・・。

f:id:redogu:20160313203903j:plain

 

日本Androidの会 理事 長谷川さんに、

「CAの小栗さんの力を借りたい」とノセられてしまい、急遽、学生部のアカデミックな発表の寸評役をやることに。

1人だと不安なのでメンバにも寸評をやってもらうなど。

f:id:redogu:20160313203905j:plain

 

うちの息子が大ハマリしていたウ◯コ。

f:id:redogu:20160313203909j:plain

 

ABC開催前に、実行委員長の石塚宏紀さんがオフィスに来てくださり、

今回のABCはいつもと違う、色んな人達とIoTの橋渡し・結びつきを作っていけるのは僕たちだけだ!と仰っていた通り、今回のABCは登壇される方と内容が、いつも以上に締まっていた気がします。

 

でも、やっぱりABC好きとしては、いつもどおりの混沌とした世界(ペッパーくんがウロウロして喋っていたり、床を何かのマシンが走っていたり、Android以外の人達がいたり、ウ◯コがいたり)。

 

今回も楽しかったです。

ABC 2016 Spring のスタッフ皆々様、ステキなイベントをありがとうございました!

『あなたのチームは、機能してますか?』を読んだ

※本の内容を紹介しており、ネタバレします

あなたのチームは、機能してますか?

あなたのチームは、機能してますか?

11月の始めくらいに読んだ書籍なんだけど、ずっとまとめてなかったので記載した。

書籍の内容構成

物語形式(ビジネス・フィクション)で進む200ページの中で「チームづくり」をテーマに話しが進む。 舞台はシリコンバレーの新興ハイテク企業、そこにブルーカラー企業出身の「キャサリン」がCEOに就任し、経営陣チームの健全化までの道のりを描いている。 また、他30ページ超で、書籍内で出てきた「モデル」について、解説があり、非常に親切な作りになっている。

モデル

下記の機能不全は、 「5つのまったく異なる問題で、個別に対処できるかのように誤解されるかもしれない。しかし実際には、これらは相互に関係しており、5つのうちの一つでももろい部分があれば、チームの成功は絶望的になる可能性さえある。」 と書籍内で説明のある通り、1つでも無視のできるものではない。

  1. 信頼の欠如(互いを信頼する)
  2. 衝突の恐怖(アイデアをめぐって遠慮なく衝突する)
  3. 責任感の不足(決定や行動計画に責任感をもって取り組む)
  4. 説明責任の回避(計画を守らなかった場合、互いの責任を追求する)
  5. 結果への無関心(チーム全体の結果を達成することを重視する)

結束の固いチームでは 1.から順にカッコ内に記載したとおりの内容を解消しているはず。

モデルに対しての所感

僕の個人的な感覚では、多くのチームは中身を伴わない、上辺だけのつながりが多く「1. 信頼の欠如(互いを信頼する)」がそもそも満たせていない気がする。 よって「2. 衝突の恐怖(アイデアをめぐって遠慮なく衝突する)」もそうだが、そもそも衝突すら無意味だと感じている方もいるのかもしれない。

結果として3. 4.を経由しているので、「5. 結果への無関心(チーム全体の結果を達成することを重視する)」が多発しているのかもしれない。 また、 強いリーダー(声の大きなうるさいリーダーも同意)は「4. 説明責任の回避(計画を守らなかった場合、互いの責任を追求する)」をメンバー間で追求させ、自分はフォローにまわるという動きができないので、自分で解決に翻弄されている。

まさに愚の骨頂。

VRを追いかけるゼミやってます

この記事はCyberAgent エンジニア Advent Calendar 2015の11日目の記事です。

こんちわ!アドテクスタジオの小栗です。 国内初!スマートデバイス向けインフィード特化型SSPCA ProFit-X のアプリ面を担当し、プロダクトの成功の為にSDK開発から営業まで何でもやります。

f:id:redogu:20151214093233j:plain

今日はアドテクスタジオ内の活動である スキルアップゼミ について、僕のゼミ活動の紹介を通して、アドテクスタジオの雰囲気を少しでもお伝えできたらと思います。

f:id:redogu:20151214091927j:plain

スキルアップゼミとは?

2014年6月に発足したアドテクスタジオの横串活動で、大学のゼミと同様に少数メンバにて様々な研究をしています。 ゼミ活動は研究の成果を事業に活かすことを目的としています。 その中で僕は スマートデバイス向けアプリのマネタイズ研究と実践開発 ゼミのゼミ長をしています。

スマートデバイス向けアプリのマネタイズ研究と実践開発』とは?

僕がサイバーエージェントに中途入社してから半年たった2015年4月、ゼミ長への推薦を頂き、面白そうだったので始めてみました。 このゼミでは、次世代プラットフォームに対する研究と実践開発を通して新サービスの企画開発を行うことを目標にしています。
また、ゼミ長である僕は裏テーマとして アドテクスタジオのiOS/Androidへの知識向上 / 自立したエンジニアの育成 も虎視眈々と狙ってたりします。

活動報告(2015/04〜)

活動トピック

出展「ABC 2015 Summer - Android Bazaar and Conference」

2015年7月20日にサイバーエージェントとしては初のABCに出展を行いました。 VR・360度コンテンツ・センサー を利用したアプリを開発し、展示しました。

f:id:redogu:20150807232226p:plain

出展作品の中でも、バッカム様ご協力のもと展示したSmashVRが大盛況でした! この出店にあたり、ポスター制作・ノベルティ準備・当日のブース設営まで、自分たち自身で一から準備していったので、成し遂げたという大きな自信を手にいれることができました。

f:id:redogu:20150720101512j:plain

主催「Eddystone ハンズオンセミナー」

国内初のセミナー開催ということで、微力ながら私達も協力させて頂きました。 Googleが発表したIoT技術のひとつ『Physical Web(フィジカルウェブ)』を実現するための手段であり、 2015年7月14日にGoogleが発表した、Bluetooth Low Energy(BLE)を用いた新たなビーコンの規格です。

f:id:redogu:20151214092133j:plain

当日は50名超のAndroidユーザが弊社のセミナー会場に訪れて、Eddystoneが配られ、講師の方の指示のもとハンズオンをやりました。 技術的に面白く、ビジネスアイデアも色々と浮かぶものの、実現するために必要なインフラ条件がとても難しそうでした。

f:id:redogu:20151214092649j:plain

アポ「テレビ朝日メディアプレックス様」

f:id:redogu:20151214092853j:plain

サイバーエージェントに入社する前からVRネタを企画して何かしたいと思っていたので、 ゼミを開始してから可能性を探ってきたのですが、ユーザの没入感を演出するコンテンツづくりの難しさを痛感しています。 悩んだ時は、自分たちよりも前へ進んでいる方々にお話しを聞くのが一番なので、先日もアポに行ってきました。 テレビ朝日メディアプレックス様は、各種イベント向けにVRコンテンツを自社開発&提供してきた実績がある企業です。

f:id:redogu:20151214092909j:plain

お伺いさせて頂いた際も、VRを始めたきっかけから最近のご活躍の内容を教えて頂いたり、 イベントで実際に展示してきたVRコンテンツを試させて頂くなど、大変お世話になりました。

f:id:redogu:20151214093126j:plain

今後の活動について

僕のゼミは今後もVR/360度市場を追い、コンテンツづくり・マネタイズ・広告の可能性を模索していきたいと思っています。 特に、VRに関わる方々をお呼びしてイベントを開催し、そのイベントを通して輪を広げ、世の中への布教活動に一役貢献していきたいと思います。

締め

中途入社してから1年、いまボクが思うことは・・・ この規模の企業で、今回のゼミ様に手を挙げればやりたいことがいくらでもやれる環境が揃っているのは、すごく素晴らしいことだと思います。 この記事をみて興味を持たれた方は、ぜひCAの門を叩いて入社しちゃってください。

おまけ

僕のゼミでは、VRイベントを一緒に開催したい方々、VRの情報を交換会をしたい方々とのネットワークを広げたく。 ご興味がある方は、アドテクスタジオの小栗までご連絡ください!

f:id:redogu:20151214092514j:plain