RobCoIndustries / pipboylib

:thumbsup: Companion pip boy library for Fallout 4
Apache License 2.0
128 stars 10 forks source link

Info dump #9

Open yesitskev opened 8 years ago

yesitskev commented 8 years ago

As I investigate i'll dump my findings in this issue.

For what its worth, the mobile app was written in Unity 4.6.4p4

NimVek commented 8 years ago

Is there any free disassembler for unity? I mean to view resources or program? prefer open source ;)

yesitskev commented 8 years ago

Unfortunately not for 4.6.4p4, will update if i find something that works.

yesitskev commented 8 years ago

This may explain the binary data you are seeing in the packets: http://docs.unity3d.com/Manual/class-NetworkView.html

rgbkrk commented 8 years ago

apktool is your friend for decompiling the APK of the Android app. You'll also find a bunch of shockwave files on the inside which are the real meat of the application. flasm helps you dump the assets but doesn't give you action script. To get that out, the only decent thing I found was http://www.showmycode.com/. Didn't get a chance to try out https://github.com/jindrapetrik/jpexs-decompiler though.

Full listing of files from the apk:

.
├── AndroidManifest.xml
├── apktool.yml
├── assets
│   ├── CommDump
│   │   ├── Mess0.bin
│   │   └── RecordFile.txt
│   ├── CompanionWorldMap.png
│   ├── Components
│   │   ├── ConditionClips
│   │   │   ├── Condition_Body_0.swf
│   │   │   ├── Condition_Body_1.swf
│   │   │   ├── Condition_Body_10.swf
│   │   │   ├── Condition_Body_11.swf
│   │   │   ├── Condition_Body_12.swf
│   │   │   ├── Condition_Body_13.swf
│   │   │   ├── Condition_Body_14.swf
│   │   │   ├── Condition_Body_15.swf
│   │   │   ├── Condition_Body_16.swf
│   │   │   ├── Condition_Body_2.swf
│   │   │   ├── Condition_Body_3.swf
│   │   │   ├── Condition_Body_4.swf
│   │   │   ├── Condition_Body_5.swf
│   │   │   ├── Condition_Body_6.swf
│   │   │   ├── Condition_Body_7.swf
│   │   │   ├── Condition_Body_8.swf
│   │   │   ├── Condition_Body_9.swf
│   │   │   └── Condition_Head.swf
│   │   ├── Faction\ Vault\ boys
│   │   │   ├── Brotherhood\ of\ Steel
│   │   │   │   ├── BoS100_Fire\ Support.swf
│   │   │   │   ├── BoS101_Call\ to\ Arms.swf
│   │   │   │   ├── BoS200_Semper\ Invicta.swf
│   │   │   │   ├── BoS201B_Tour\ of\ Duty.swf
│   │   │   │   ├── BoS201_Shadow\ of\ Steel.swf
│   │   │   │   ├── BoS202_Show\ No\ Mercy.swf
│   │   │   │   ├── BoS203_From\ Within.swf
│   │   │   │   ├── BoS204_Outside\ the\ Wire.swf
│   │   │   │   ├── BoS301_Liberty\ Reprimed.swf
│   │   │   │   ├── BoS302B_Tactical\ Thinking.swf
│   │   │   │   ├── BoS302_Blind\ Betrayal.swf
│   │   │   │   ├── BoS303_Spoils\ of\ War.swf
│   │   │   │   ├── BoS304_Ad\ Victorium.swf
│   │   │   │   ├── BoS305_A\ New\ Dawn.swf
│   │   │   │   ├── BoSM01_The\ Lost\ Patrol.swf
│   │   │   │   ├── BoSM02_Duty\ or\ Dishonor.swf
│   │   │   │   ├── BoSM04_A\ Loose\ End.swf
│   │   │   │   └── Faction_VB_Brotherhood\ of\ Steel.swf
│   │   │   ├── Minutemen
│   │   │   │   ├── Faction_VB_Minutemen.swf
│   │   │   │   ├── Min00_At\ a\ Minutes\ Notice.swf
│   │   │   │   ├── Min01_Sanctuary.swf
│   │   │   │   ├── Min02_Taking\ Independence.swf
│   │   │   │   ├── Min03_Old\ Guns.swf
│   │   │   │   ├── Min301_Form\ Ranks.swf
│   │   │   │   ├── MinDefendCastle.swf
│   │   │   │   └── MinDestBos_With\ Our\ Powers\ Combined.swf
│   │   │   ├── Railroad
│   │   │   │   ├── Faction_VB_Railroad.swf
│   │   │   │   ├── RR101_Road\ to\ Freedom.swf
│   │   │   │   ├── RR102_Tradecraft.swf
│   │   │   │   ├── RR201_Underground\ Undercover.swf
│   │   │   │   ├── RR301_Operation\ Ticonderoga.swf
│   │   │   │   ├── RR302_Precipice\ of\ War.swf
│   │   │   │   ├── RR303_Rockets\ Red\ Glare.swf
│   │   │   │   ├── RRM01_Boston\ After\ Dark.swf
│   │   │   │   └── RRM02_Memory\ Interrupted.swf
│   │   │   └── the\ Institute
│   │   │       ├── Faction_VB_Institute.swf
│   │   │       ├── Inst301_Synth\ Retention.swf
│   │   │       ├── Inst302_Battle\ of\ Bunker\ Hill.swf
│   │   │       ├── Inst303_Looking\ to\ the\ Future.swf
│   │   │       ├── Inst303_Mankind-Redefined.swf
│   │   │       ├── Inst305_Powering\ Up.swf
│   │   │       ├── Inst307_End\ of\ the\ Line.swf
│   │   │       ├── Inst308_Airship\ Down.swf
│   │   │       ├── Inst309_\ Epilogue.swf
│   │   │       ├── InstM01_Building\ a\ Better\ Crop.swf
│   │   │       ├── InstM02_Plugging\ a\ Leak.swf
│   │   │       ├── InstM03_A\ House\ Divided.swf
│   │   │       ├── InstM04_The\ Replacement.swf
│   │   │       └── Inst_MinVsInst_Pinned.swf
│   │   ├── Magazine\ perks
│   │   │   ├── MP_Astoundingly\ Awesome\ Tales.swf
│   │   │   ├── MP_Covert\ Operations\ Manual.swf
│   │   │   ├── MP_Grognac.swf
│   │   │   ├── MP_Guns\ and\ Bullets.swf
│   │   │   ├── MP_Hot\ Rodder.swf
│   │   │   ├── MP_La\ Coiffe.swf
│   │   │   ├── MP_Live_Love.swf
│   │   │   ├── MP_Massachusetts\ Surgical\ Journal\ .swf
│   │   │   ├── MP_Picket\ Fences.swf
│   │   │   ├── MP_RobCo_Fun.swf
│   │   │   ├── MP_Taboo\ Tattoos.swf
│   │   │   ├── MP_Tales\ Junktown\ Jerky\ Vendor.swf
│   │   │   ├── MP_Tesla\ Science\ Magazine.swf
│   │   │   ├── MP_Total\ Hack.swf
│   │   │   ├── MP_Tumblers\ Today.swf
│   │   │   ├── MP_Unstoppables.swf
│   │   │   └── MP_Wasteland\ Survival\ Guide.swf
│   │   ├── Quest\ Vault\ Boys
│   │   │   ├── Act\ 1\ Quest
│   │   │   │   ├── MQ101_War\ Never\ Changes.swf
│   │   │   │   ├── MQ102_Out\ of\ Time.swf
│   │   │   │   ├── MQ103_Jewel\ of\ the\ Commonwealth.swf
│   │   │   │   ├── MQ104_Unlikely\ Valentine.swf
│   │   │   │   ├── MQ105_Getting\ a\ Clue.swf
│   │   │   │   └── MQ106_Reunions.swf
│   │   │   ├── Act\ 2\ Quest
│   │   │   │   ├── MQ201_The\ Enemy\ of\ my\ Enemy.swf
│   │   │   │   ├── MQ202_Dangerous\ Minds.swf
│   │   │   │   ├── MQ203_Shattered.swf
│   │   │   │   ├── MQ204_The\ Glowing\ Sea.swf
│   │   │   │   ├── MQ205_Hunter-Hunted.swf
│   │   │   │   ├── MQ206_The\ Molecular\ Level.swf
│   │   │   │   └── MQ207_Institutionalized.swf
│   │   │   └── Miscellaneous\ Quests
│   │   │       ├── DefaultBoy.swf
│   │   │       ├── MQ301_Off\ the\ Grid.swf
│   │   │       ├── MQ302_The\ Nuclear\ Option.swf
│   │   │       ├── MS01_Kid\ In\ A\ Fridge.swf
│   │   │       ├── MS02_Here\ There\ Be\ Monsters.swf
│   │   │       ├── MS03_20\ Leagues\ Under\ The\ Sea.swf
│   │   │       ├── MS04_The\ Silver\ Shroud.swf
│   │   │       ├── MS05\ The\ Devil's\ Due.swf
│   │   │       ├── MS07_Detective\ Case\ Files.swf
│   │   │       ├── MS09_The\ Secret\ of\ Cabot\ House.swf
│   │   │       ├── MS10_Curtain\ Call.swf
│   │   │       ├── MS11_Last\ Voyage\ of\ the\ U.S.S.\ Constitution.swf
│   │   │       ├── MS13_Diamond\ City\ Blues.swf
│   │   │       ├── MS14_Confidence\ Man.swf
│   │   │       ├── MS16_The\ Big\ Dig.swf
│   │   │       ├── MS17_Human\ Error.swf
│   │   │       └── MS19_Vault\ 81.swf
│   │   └── VaultBoys
│   │       ├── Perks
│   │       │   ├── Berserk.swf
│   │       │   ├── Cloak\ and\ Dagger.swf
│   │       │   ├── Close\ to\ Metal.swf
│   │       │   ├── Combat\ Medic.swf
│   │       │   ├── FortuneFinderRank4.swf
│   │       │   ├── Gift\ of\ Gab.swf
│   │       │   ├── Isodoped.swf
│   │       │   ├── Killshot.swf
│   │       │   ├── Know\ Your\ Enemy.swf
│   │       │   ├── Lovers\ Embrace.swf
│   │       │   ├── PerkClip_19aa3.swf
│   │       │   ├── PerkClip_1d02b5.swf
│   │       │   ├── PerkClip_1d2451.swf
│   │       │   ├── PerkClip_1d2456.swf
│   │       │   ├── PerkClip_1d245e.swf
│   │       │   ├── PerkClip_1d2461.swf
│   │       │   ├── PerkClip_1d246b.swf
│   │       │   ├── PerkClip_1d246f.swf
│   │       │   ├── PerkClip_1d2479.swf
│   │       │   ├── PerkClip_1d247c.swf
│   │       │   ├── PerkClip_1d247f.swf
│   │       │   ├── PerkClip_1d2487.swf
│   │       │   ├── PerkClip_1d248a.swf
│   │       │   ├── PerkClip_1dafe.swf
│   │       │   ├── PerkClip_1e67f.swf
│   │       │   ├── PerkClip_207d1.swf
│   │       │   ├── PerkClip_221fc.swf
│   │       │   ├── PerkClip_24aff.swf
│   │       │   ├── PerkClip_264d9.swf
│   │       │   ├── PerkClip_4a09f.swf
│   │       │   ├── PerkClip_4a0ab.swf
│   │       │   ├── PerkClip_4a0b0.swf
│   │       │   ├── PerkClip_4a0b5.swf
│   │       │   ├── PerkClip_4a0b6.swf
│   │       │   ├── PerkClip_4a0b9.swf
│   │       │   ├── PerkClip_4a0bb.swf
│   │       │   ├── PerkClip_4a0bc.swf
│   │       │   ├── PerkClip_4a0c5.swf
│   │       │   ├── PerkClip_4a0cf.swf
│   │       │   ├── PerkClip_4a0d4.swf
│   │       │   ├── PerkClip_4a0d5.swf
│   │       │   ├── PerkClip_4a0d6.swf
│   │       │   ├── PerkClip_4a0da.swf
│   │       │   ├── PerkClip_4b24e.swf
│   │       │   ├── PerkClip_4b253.swf
│   │       │   ├── PerkClip_4b254.swf
│   │       │   ├── PerkClip_4b258.swf
│   │       │   ├── PerkClip_4b259.swf
│   │       │   ├── PerkClip_4b26d.swf
│   │       │   ├── PerkClip_4c91f.swf
│   │       │   ├── PerkClip_4c923.swf
│   │       │   ├── PerkClip_4c926.swf
│   │       │   ├── PerkClip_4c929.swf
│   │       │   ├── PerkClip_4c92a.swf
│   │       │   ├── PerkClip_4c92d.swf
│   │       │   ├── PerkClip_4c935.swf
│   │       │   ├── PerkClip_4c93b.swf
│   │       │   ├── PerkClip_4c942.swf
│   │       │   ├── PerkClip_4d869.swf
│   │       │   ├── PerkClip_4d872.swf
│   │       │   ├── PerkClip_4d87a.swf
│   │       │   ├── PerkClip_4d881.swf
│   │       │   ├── PerkClip_4d886.swf
│   │       │   ├── PerkClip_4d887.swf
│   │       │   ├── PerkClip_4d888.swf
│   │       │   ├── PerkClip_4d889.swf
│   │       │   ├── PerkClip_4d88a.swf
│   │       │   ├── PerkClip_4d88d.swf
│   │       │   ├── PerkClip_4d890.swf
│   │       │   ├── PerkClip_4d895.swf
│   │       │   ├── PerkClip_4d89b.swf
│   │       │   ├── PerkClip_4d89e.swf
│   │       │   ├── PerkClip_4d8a2.swf
│   │       │   ├── PerkClip_4d8a6.swf
│   │       │   ├── PerkClip_4d8a7.swf
│   │       │   ├── PerkClip_4ddee.swf
│   │       │   ├── PerkClip_523ff.swf
│   │       │   ├── PerkClip_52403.swf
│   │       │   ├── PerkClip_65df9.swf
│   │       │   ├── PerkClip_65e65.swf
│   │       │   ├── PerkClip_Default.swf
│   │       │   ├── PerkClip_ca99d.swf
│   │       │   ├── PerkClip_d2287.swf
│   │       │   ├── PerkClip_d9784.swf
│   │       │   ├── PerkClip_d9789.swf
│   │       │   ├── PerkClip_d978e.swf
│   │       │   ├── PerkClip_d9793.swf
│   │       │   ├── PerkClip_d9798.swf
│   │       │   ├── PerkClip_d979d.swf
│   │       │   ├── PerkClip_d97a2.swf
│   │       │   ├── PerkClip_e36f9.swf
│   │       │   ├── PerkClip_e36ff.swf
│   │       │   ├── PerkClip_e9453.swf
│   │       │   ├── Quiet\ Reflection.swf
│   │       │   ├── Robot\ Sympathy.swf
│   │       │   ├── Shield\ Harmonics.swf
│   │       │   ├── Trigger_Rush.swf
│   │       │   ├── United\ We\ Stand.swf
│   │       │   ├── Well\ Rested.swf
│   │       │   ├── WorkbenchPerkClip_264d9.swf
│   │       │   └── WorkshopPerkClip_264d9.swf
│   │       └── SPECIAL
│   │           ├── Agility.swf
│   │           ├── Charisma.swf
│   │           ├── Endurance.swf
│   │           ├── Intelligence.swf
│   │           ├── Luck.swf
│   │           ├── Name_Clip.swf
│   │           ├── Perception.swf
│   │           └── Strength.swf
│   ├── DemoMode
│   │   └── DemoMode.bin
│   ├── IntroPipboy.swf
│   ├── IntroPipboyFrameResize.swf
│   ├── MessageBoxMenu.swf
│   ├── Minigames
│   │   ├── AtomicCommand.swf
│   │   ├── AtomicCommandAssets.swf
│   │   ├── AtomicCommandTutorialAssets.swf
│   │   ├── GenericConfirmQuitAssets.swf
│   │   ├── GenericPauseAssets.swf
│   │   ├── Grognak.swf
│   │   ├── GrognakAssets.swf
│   │   ├── GrognakGameOverAssets.swf
│   │   ├── GrognakMapAssets.swf
│   │   ├── GrognakMapTutorialAssets.swf
│   │   ├── GrognakTitleAssets.swf
│   │   ├── GrognakWindowAssets.swf
│   │   ├── GrognakWindowTutorialAssets.swf
│   │   ├── PipFall.swf
│   │   ├── PipFallAssets.swf
│   │   ├── PipFallTutorialAssets.swf
│   │   ├── RedMenace.html
│   │   ├── RedMenace.swf
│   │   ├── RedMenaceAssets.swf
│   │   ├── RedMenaceTutorialAssets.swf
│   │   ├── ZetaInvaders.swf
│   │   ├── ZetaInvadersAssets.swf
│   │   ├── ZetaInvadersTutorialAssets.swf
│   │   ├── fonts_programs.swf
│   │   └── xml
│   │       ├── AtomicCommandConfig.xml
│   │       ├── GrognakConfig.xml
│   │       ├── PipFallConfig.xml
│   │       ├── RedMenaceConfig.xml
│   │       └── ZetaInvadersConfig.xml
│   ├── PipFallAssets.swf
│   ├── PipboyMenu.swf
│   ├── PipboyMessageBox.swf
│   ├── PipboyMobileSettings.swf
│   ├── PipboyUnavailable.swf
│   ├── Pipboy_DataPage.swf
│   ├── Pipboy_InvPage.swf
│   ├── Pipboy_MapPage.swf
│   ├── Pipboy_RadioPage.swf
│   ├── Pipboy_StatsPage.swf
│   ├── bin
│   │   └── Data
│   │       ├── 3f6d0d75f9e944ec1ade35d71a3a5905
│   │       ├── 5480721b914ca72419d9c9d67cbe0851
│   │       ├── Managed
│   │       │   ├── Assembly-CSharp.dll
│   │       │   ├── ICSharpCode.SharpZipLib.dll
│   │       │   ├── System.Core.dll
│   │       │   ├── System.dll
│   │       │   ├── UnityEngine.UI.dll
│   │       │   ├── UnityEngine.dll
│   │       │   └── mscorlib.dll
│   │       ├── Resources
│   │       │   └── unity_builtin_extra
│   │       ├── e308342edd122461d8e376c70a2f7ccb
│   │       ├── mainData
│   │       ├── settings.xml
│   │       ├── sharedassets0.assets.split0
│   │       ├── sharedassets0.assets.split1
│   │       ├── sharedassets0.assets.split10
│   │       ├── sharedassets0.assets.split2
│   │       ├── sharedassets0.assets.split3
│   │       ├── sharedassets0.assets.split4
│   │       ├── sharedassets0.assets.split5
│   │       ├── sharedassets0.assets.split6
│   │       ├── sharedassets0.assets.split7
│   │       ├── sharedassets0.assets.split8
│   │       ├── sharedassets0.assets.split9
│   │       ├── splash.png
│   │       └── unity\ default\ resources
│   ├── boot.html
│   ├── fontconfig.txt
│   ├── fonts_en.swf
│   ├── menu.html
│   └── pipboybootsequence.swf
├── lib
│   └── armeabi-v7a
│       ├── libSmartGlassCore.so
│       ├── libSmartGlassSDK.so
│       ├── libgfxunity3d.so
│       ├── libgnustl_shared.so
│       ├── libmain.so
│       ├── libmono.so
│       └── libunity.so
├── original
│   ├── AndroidManifest.xml
│   └── META-INF
│       ├── CERT.RSA
│       ├── CERT.SF
│       └── MANIFEST.MF
├── res
│   ├── drawable
│   │   └── app_icon.png
│   ├── drawable-hdpi-v4
│   │   └── app_icon.png
│   ├── drawable-ldpi-v4
│   │   └── app_icon.png
│   ├── drawable-xhdpi-v4
│   │   └── app_icon.png
│   ├── drawable-xxhdpi-v4
│   │   └── app_icon.png
│   ├── drawable-xxxhdpi-v4
│   │   └── app_icon.png
│   ├── layout
│   │   └── msaauthenticatorview.xml
│   └── values
│       ├── ids.xml
│       ├── public.xml
│       └── strings.xml
├── smali
│   ├── com
│   │   ├── bhvr
│   │   │   ├── smartglassnativeplugin
│   │   │   │   └── BuildConfig.smali
│   │   │   └── smartglassnativepluginlib
│   │   │       ├── MsaAuthenticatorView.smali
│   │   │       ├── SmartGlassAPI$1.smali
│   │   │       ├── SmartGlassAPI$2.smali
│   │   │       ├── SmartGlassAPI$3.smali
│   │   │       ├── SmartGlassAPI$4.smali
│   │   │       ├── SmartGlassAPI$AuthenticatorListener.smali
│   │   │       ├── SmartGlassAPI$AuxiliaryListener.smali
│   │   │       ├── SmartGlassAPI$DiscoveryListener.smali
│   │   │       ├── SmartGlassAPI$SessionListener.smali
│   │   │       ├── SmartGlassAPI$TokenListener.smali
│   │   │       └── SmartGlassAPI.smali
│   │   ├── microsoft
│   │   │   └── xbox
│   │   │       └── smartglass
│   │   │           ├── Accelerometer$1.smali
│   │   │           ├── Accelerometer$SensorListener.smali
│   │   │           ├── Accelerometer.smali
│   │   │           ├── AccelerometerListener.smali
│   │   │           ├── AccelerometerReading.smali
│   │   │           ├── ActiveTitleLocation.smali
│   │   │           ├── ActiveTitleState.smali
│   │   │           ├── AgeGroup.smali
│   │   │           ├── AuthError.smali
│   │   │           ├── AuthInfo.smali
│   │   │           ├── AuxiliaryStream.smali
│   │   │           ├── AuxiliaryStreamListener.smali
│   │   │           ├── AuxiliaryStreamReadResult.smali
│   │   │           ├── AuxiliaryStreamReadStats.smali
│   │   │           ├── AuxiliaryStreamWriteResult.smali
│   │   │           ├── AuxiliaryStreamWriteStats.smali
│   │   │           ├── CatalogServiceManager.smali
│   │   │           ├── ClientInformation.smali
│   │   │           ├── ClientResolution.smali
│   │   │           ├── ConnectionState.smali
│   │   │           ├── ControlKey.smali
│   │   │           ├── DeviceCapabilities.smali
│   │   │           ├── DeviceStatus.smali
│   │   │           ├── DeviceType.smali
│   │   │           ├── DiscoveryManager.smali
│   │   │           ├── DiscoveryManagerListener.smali
│   │   │           ├── Environment.smali
│   │   │           ├── EnvironmentManager.smali
│   │   │           ├── EnvironmentManagerListener.smali
│   │   │           ├── EnvironmentSettings.smali
│   │   │           ├── GameDvr.smali
│   │   │           ├── GamePad.smali
│   │   │           ├── GamePadButtons.smali
│   │   │           ├── Gyrometer$1.smali
│   │   │           ├── Gyrometer$SensorListener.smali
│   │   │           ├── Gyrometer.smali
│   │   │           ├── GyrometerListener.smali
│   │   │           ├── GyrometerReading.smali
│   │   │           ├── HttpResponse.smali
│   │   │           ├── JavaScriptAdapter$AccelListener.smali
│   │   │           ├── JavaScriptAdapter$GyroListener.smali
│   │   │           ├── JavaScriptAdapter.smali
│   │   │           ├── JavaScriptAdapterListener.smali
│   │   │           ├── JavaScriptCommand.smali
│   │   │           ├── JsonMessage.smali
│   │   │           ├── Listenable.smali
│   │   │           ├── MediaCommand.smali
│   │   │           ├── MediaControlCommands.smali
│   │   │           ├── MediaMetaDataEntry.smali
│   │   │           ├── MediaPlaybackStatus.smali
│   │   │           ├── MediaState.smali
│   │   │           ├── MediaTransportCapabilities.smali
│   │   │           ├── MediaTransportState.smali
│   │   │           ├── MediaType.smali
│   │   │           ├── Message.smali
│   │   │           ├── MessageTarget.smali
│   │   │           ├── MessageType.smali
│   │   │           ├── MetricsManager.smali
│   │   │           ├── PairedIdentityState.smali
│   │   │           ├── PrimaryDevice.smali
│   │   │           ├── PrimaryDeviceFlags.smali
│   │   │           ├── PrimaryDeviceState.smali
│   │   │           ├── ReconnectPolicy.smali
│   │   │           ├── RefTPtr.smali
│   │   │           ├── SGError.smali
│   │   │           ├── SGException.smali
│   │   │           ├── SGPlatform.smali
│   │   │           ├── SGResult.smali
│   │   │           ├── Sensor.smali
│   │   │           ├── SensorArguments.smali
│   │   │           ├── SensorManager$1.smali
│   │   │           ├── SensorManager$2.smali
│   │   │           ├── SensorManager.smali
│   │   │           ├── SensorResult.smali
│   │   │           ├── ServiceChannel.smali
│   │   │           ├── ServiceManager.smali
│   │   │           ├── ServiceRequestListener.smali
│   │   │           ├── SessionManager.smali
│   │   │           ├── SessionManagerListener.smali
│   │   │           ├── SoundLevel.smali
│   │   │           ├── SurfaceType.smali
│   │   │           ├── TextAction.smali
│   │   │           ├── TextConfiguration.smali
│   │   │           ├── TextInputScope.smali
│   │   │           ├── TextManager.smali
│   │   │           ├── TextManagerListener.smali
│   │   │           ├── TextOptions.smali
│   │   │           ├── TextResult.smali
│   │   │           ├── Token.smali
│   │   │           ├── TokenListener.smali
│   │   │           ├── TokenManager.smali
│   │   │           ├── TokenManagerListener.smali
│   │   │           ├── TokenResult.smali
│   │   │           ├── TokenType.smali
│   │   │           ├── TouchAction.smali
│   │   │           ├── TouchFrame.smali
│   │   │           ├── TouchPoint.smali
│   │   │           ├── TraceLog.smali
│   │   │           ├── TraceLogLevel.smali
│   │   │           ├── TraceLogListener.smali
│   │   │           ├── XboxLiveServiceManager.smali
│   │   │           ├── controls
│   │   │           │   ├── Accelerometer$Listener.smali
│   │   │           │   ├── Accelerometer.smali
│   │   │           │   ├── AssociatedChannel.smali
│   │   │           │   ├── BridgedWebView$ChromeClient.smali
│   │   │           │   ├── BridgedWebView$JavaScriptBridge.smali
│   │   │           │   ├── BridgedWebView$ViewClient.smali
│   │   │           │   ├── BridgedWebView.smali
│   │   │           │   ├── Browser.smali
│   │   │           │   ├── CanvasComponent.smali
│   │   │           │   ├── CanvasEvent.smali
│   │   │           │   ├── CanvasFragment$1.smali
│   │   │           │   ├── CanvasFragment$SessionListener.smali
│   │   │           │   ├── CanvasFragment$WebListener.smali
│   │   │           │   ├── CanvasFragment.smali
│   │   │           │   ├── CanvasKey.smali
│   │   │           │   ├── CanvasKeyMapper$1.smali
│   │   │           │   ├── CanvasKeyMapper.smali
│   │   │           │   ├── CanvasScript.smali
│   │   │           │   ├── CanvasState.smali
│   │   │           │   ├── GameDvr.smali
│   │   │           │   ├── GamePad.smali
│   │   │           │   ├── Gyroscope$Listener.smali
│   │   │           │   ├── Gyroscope.smali
│   │   │           │   ├── HandlesIme.smali
│   │   │           │   ├── Haptic.smali
│   │   │           │   ├── HttpClient.smali
│   │   │           │   ├── Information$1.smali
│   │   │           │   ├── Information$SessionListener.smali
│   │   │           │   ├── Information.smali
│   │   │           │   ├── InformationV1.smali
│   │   │           │   ├── InformationV2.smali
│   │   │           │   ├── Input$1.smali
│   │   │           │   ├── Input.smali
│   │   │           │   ├── InputStreamUtils.smali
│   │   │           │   ├── InputV1.smali
│   │   │           │   ├── InputV2.smali
│   │   │           │   ├── JavaScriptBridge$1.smali
│   │   │           │   ├── JavaScriptBridge$AdapterListener.smali
│   │   │           │   ├── JavaScriptBridge$Bridge.smali
│   │   │           │   ├── JavaScriptBridge$ChromeClient.smali
│   │   │           │   ├── JavaScriptBridge$JsonCommand.smali
│   │   │           │   ├── JavaScriptBridge$ViewClient.smali
│   │   │           │   ├── JavaScriptBridge.smali
│   │   │           │   ├── Json.smali
│   │   │           │   ├── JsonAccelerometer.smali
│   │   │           │   ├── JsonAccelerometerCurrentState.smali
│   │   │           │   ├── JsonActiveTitle.smali
│   │   │           │   ├── JsonBrowserParameters.smali
│   │   │           │   ├── JsonCanvasClientInfo.smali
│   │   │           │   ├── JsonCanvasHostInfo.smali
│   │   │           │   ├── JsonCanvasMediaState$1.smali
│   │   │           │   ├── JsonCanvasMediaState.smali
│   │   │           │   ├── JsonCanvasParameters.smali
│   │   │           │   ├── JsonClientsUpdated.smali
│   │   │           │   ├── JsonCompleteRequest.smali
│   │   │           │   ├── JsonConnectionStateChanged.smali
│   │   │           │   ├── JsonEnvironmentSettings.smali
│   │   │           │   ├── JsonError.smali
│   │   │           │   ├── JsonGamePad.smali
│   │   │           │   ├── JsonGyroscope.smali
│   │   │           │   ├── JsonGyroscopeCurrentState.smali
│   │   │           │   ├── JsonHapticCurrentState.smali
│   │   │           │   ├── JsonInformationCurrentState.smali
│   │   │           │   ├── JsonInformationGamercard.smali
│   │   │           │   ├── JsonInformationGetPrivileges.smali
│   │   │           │   ├── JsonInformationPrivileges.smali
│   │   │           │   ├── JsonInputKey.smali
│   │   │           │   ├── JsonLaunchTitleParameters.smali
│   │   │           │   ├── JsonLaunchUriParameters.smali
│   │   │           │   ├── JsonLogMessage.smali
│   │   │           │   ├── JsonMediaGetState.smali
│   │   │           │   ├── JsonMediaSeek.smali
│   │   │           │   ├── JsonMediaSend.smali
│   │   │           │   ├── JsonPairedIdentityStateChanged.smali
│   │   │           │   ├── JsonRecordPreviousMessage.smali
│   │   │           │   ├── JsonScriptNotify.smali
│   │   │           │   ├── JsonSendMessage.smali
│   │   │           │   ├── JsonSensorStartParameters.smali
│   │   │           │   ├── JsonServiceRequest.smali
│   │   │           │   ├── JsonServiceResponse.smali
│   │   │           │   ├── JsonTitleChanged.smali
│   │   │           │   ├── JsonTitleChannelChanged.smali
│   │   │           │   ├── JsonTouchFrame.smali
│   │   │           │   ├── JsonTouchPoint.smali
│   │   │           │   ├── JsonUserGamercard.smali
│   │   │           │   ├── JsonUserInfo.smali
│   │   │           │   ├── Log.smali
│   │   │           │   ├── LogV1.smali
│   │   │           │   ├── LogV2.smali
│   │   │           │   ├── Media$1.smali
│   │   │           │   ├── Media$SessionListener.smali
│   │   │           │   ├── Media.smali
│   │   │           │   ├── MediaV1.smali
│   │   │           │   ├── MediaV2.smali
│   │   │           │   ├── Messaging$1.smali
│   │   │           │   ├── Messaging$SessionListener.smali
│   │   │           │   ├── Messaging.smali
│   │   │           │   ├── MessagingV1.smali
│   │   │           │   ├── MessagingV2.smali
│   │   │           │   ├── MsaAuthenticator.smali
│   │   │           │   ├── MsaAuthenticatorListener.smali
│   │   │           │   ├── MsaAuthenticatorView.smali
│   │   │           │   ├── NavigationComponent.smali
│   │   │           │   ├── ResourceFinder.smali
│   │   │           │   ├── RunnableScript.smali
│   │   │           │   ├── SGHttpResponse.smali
│   │   │           │   ├── ScriptRunner$1.smali
│   │   │           │   ├── ScriptRunner.smali
│   │   │           │   ├── Sensor.smali
│   │   │           │   ├── ServiceProxy$1.smali
│   │   │           │   ├── ServiceProxy.smali
│   │   │           │   ├── ServiceRequest$1.smali
│   │   │           │   ├── ServiceRequest.smali
│   │   │           │   ├── ServiceRequestListener.smali
│   │   │           │   ├── ServiceRequestTracker.smali
│   │   │           │   ├── ServiceResponse.smali
│   │   │           │   ├── TextEntryFragment$1.smali
│   │   │           │   ├── TextEntryFragment$2.smali
│   │   │           │   ├── TextEntryFragment$3.smali
│   │   │           │   ├── TextEntryFragment$TextEntryWatcher.smali
│   │   │           │   ├── TextEntryFragment.smali
│   │   │           │   ├── Touch.smali
│   │   │           │   ├── UserGamercardRequest$1.smali
│   │   │           │   ├── UserGamercardRequest.smali
│   │   │           │   ├── UserInfoRequest$1.smali
│   │   │           │   ├── UserInfoRequest.smali
│   │   │           │   ├── WebComponent.smali
│   │   │           │   ├── WebComponentContainer.smali
│   │   │           │   ├── WebComponentVersion.smali
│   │   │           │   └── WebViewListener.smali
│   │   │           └── internal
│   │   │               ├── HttpClient.smali
│   │   │               └── Random.smali
│   │   └── unity3d
│   │       └── player
│   │           ├── NativeLoader.smali
│   │           ├── PsmMainActivity.smali
│   │           ├── PsmUnityActivity.smali
│   │           ├── ReflectionHelper$1.smali
│   │           ├── ReflectionHelper$a.smali
│   │           ├── ReflectionHelper.smali
│   │           ├── UnityPlayer$1.smali
│   │           ├── UnityPlayer$10.smali
│   │           ├── UnityPlayer$11.smali
│   │           ├── UnityPlayer$12$1.smali
│   │           ├── UnityPlayer$12.smali
│   │           ├── UnityPlayer$13.smali
│   │           ├── UnityPlayer$14.smali
│   │           ├── UnityPlayer$15.smali
│   │           ├── UnityPlayer$16.smali
│   │           ├── UnityPlayer$17.smali
│   │           ├── UnityPlayer$18.smali
│   │           ├── UnityPlayer$19.smali
│   │           ├── UnityPlayer$2.smali
│   │           ├── UnityPlayer$3.smali
│   │           ├── UnityPlayer$4.smali
│   │           ├── UnityPlayer$5.smali
│   │           ├── UnityPlayer$6.smali
│   │           ├── UnityPlayer$7.smali
│   │           ├── UnityPlayer$8.smali
│   │           ├── UnityPlayer$9.smali
│   │           ├── UnityPlayer$a.smali
│   │           ├── UnityPlayer$b.smali
│   │           ├── UnityPlayer$c.smali
│   │           ├── UnityPlayer.smali
│   │           ├── UnityPlayerActivity.smali
│   │           ├── UnityPlayerNativeActivity.smali
│   │           ├── UnityPlayerProxyActivity.smali
│   │           ├── WWW.smali
│   │           ├── a$1.smali
│   │           ├── a$2.smali
│   │           ├── a$a.smali
│   │           ├── a.smali
│   │           ├── b.smali
│   │           ├── c$1.smali
│   │           ├── c$2.smali
│   │           ├── c.smali
│   │           ├── d.smali
│   │           ├── e$1.smali
│   │           ├── e$2.smali
│   │           ├── e.smali
│   │           ├── f.smali
│   │           ├── g.smali
│   │           ├── h.smali
│   │           ├── i.smali
│   │           ├── j.smali
│   │           ├── k$1.smali
│   │           ├── k.smali
│   │           ├── l.smali
│   │           ├── m.smali
│   │           ├── n$1.smali
│   │           ├── n$2.smali
│   │           ├── n$3.smali
│   │           ├── n.smali
│   │           ├── o.smali
│   │           ├── p.smali
│   │           ├── q.smali
│   │           ├── r$1.smali
│   │           └── r.smali
│   ├── net
│   │   └── hockeyapp
│   │       ├── android
│   │       │   ├── Constants.smali
│   │       │   ├── CrashManager$1.smali
│   │       │   ├── CrashManager$2.smali
│   │       │   ├── CrashManager$3.smali
│   │       │   ├── CrashManager$4.smali
│   │       │   ├── CrashManager.smali
│   │       │   ├── CrashManagerListener.smali
│   │       │   ├── ExceptionHandler.smali
│   │       │   ├── ExpiryInfoActivity.smali
│   │       │   ├── FeedbackActivity$1.smali
│   │       │   ├── FeedbackActivity$2$1.smali
│   │       │   ├── FeedbackActivity$2.smali
│   │       │   ├── FeedbackActivity$3$1.smali
│   │       │   ├── FeedbackActivity$3.smali
│   │       │   ├── FeedbackActivity$4.smali
│   │       │   ├── FeedbackActivity$5.smali
│   │       │   ├── FeedbackActivity.smali
│   │       │   ├── FeedbackActivityInterface.smali
│   │       │   ├── FeedbackManager.smali
│   │       │   ├── FeedbackManagerListener.smali
│   │       │   ├── StringListener.smali
│   │       │   ├── Strings.smali
│   │       │   ├── Tracking.smali
│   │       │   ├── UpdateActivity$1.smali
│   │       │   ├── UpdateActivity$2.smali
│   │       │   ├── UpdateActivity$3.smali
│   │       │   ├── UpdateActivity$4.smali
│   │       │   ├── UpdateActivity.smali
│   │       │   ├── UpdateActivityInterface.smali
│   │       │   ├── UpdateFragment$1.smali
│   │       │   ├── UpdateFragment.smali
│   │       │   ├── UpdateInfoListener.smali
│   │       │   ├── UpdateManager.smali
│   │       │   ├── UpdateManagerListener.smali
│   │       │   ├── adapters
│   │       │   │   └── MessagesAdapter.smali
│   │       │   ├── listeners
│   │       │   │   ├── DownloadFileListener.smali
│   │       │   │   └── SendFeedbackListener.smali
│   │       │   ├── objects
│   │       │   │   ├── ErrorObject.smali
│   │       │   │   ├── Feedback.smali
│   │       │   │   ├── FeedbackMessage.smali
│   │       │   │   └── FeedbackResponse.smali
│   │       │   ├── tasks
│   │       │   │   ├── CheckUpdateTask$1.smali
│   │       │   │   ├── CheckUpdateTask$2.smali
│   │       │   │   ├── CheckUpdateTask.smali
│   │       │   │   ├── DownloadFileTask$1.smali
│   │       │   │   ├── DownloadFileTask$2.smali
│   │       │   │   ├── DownloadFileTask.smali
│   │       │   │   ├── ParseFeedbackTask.smali
│   │       │   │   └── SendFeedbackTask.smali
│   │       │   ├── utils
│   │       │   │   ├── ConnectionManager$1.smali
│   │       │   │   ├── ConnectionManager$ConnectionManagerHolder.smali
│   │       │   │   ├── ConnectionManager.smali
│   │       │   │   ├── DeviceUtils$1.smali
│   │       │   │   ├── DeviceUtils$DeviceUtilsHolder.smali
│   │       │   │   ├── DeviceUtils.smali
│   │       │   │   ├── FeedbackParser$1.smali
│   │       │   │   ├── FeedbackParser$FeedbackParserHolder.smali
│   │       │   │   ├── FeedbackParser.smali
│   │       │   │   ├── PrefsUtil$1.smali
│   │       │   │   ├── PrefsUtil$PrefsUtilHolder.smali
│   │       │   │   ├── PrefsUtil.smali
│   │       │   │   ├── UiThreadUtil$1.smali
│   │       │   │   ├── UiThreadUtil$2.smali
│   │       │   │   ├── UiThreadUtil$3.smali
│   │       │   │   ├── UiThreadUtil$WbUtilHolder.smali
│   │       │   │   ├── UiThreadUtil.smali
│   │       │   │   ├── Util.smali
│   │       │   │   ├── VersionCache.smali
│   │       │   │   ├── VersionHelper$1.smali
│   │       │   │   ├── VersionHelper.smali
│   │       │   │   └── ViewHelper.smali
│   │       │   └── views
│   │       │       ├── ExpiryInfoView.smali
│   │       │       ├── FeedbackMessageView.smali
│   │       │       ├── FeedbackView.smali
│   │       │       └── UpdateView.smali
│   │       └── unity
│   │           ├── HockeyUnityPlugin$1.smali
│   │           ├── HockeyUnityPlugin$2$1.smali
│   │           ├── HockeyUnityPlugin$2.smali
│   │           ├── HockeyUnityPlugin$3$1.smali
│   │           ├── HockeyUnityPlugin$3.smali
│   │           ├── HockeyUnityPlugin$4.smali
│   │           ├── HockeyUnityPlugin$5.smali
│   │           └── HockeyUnityPlugin.smali
│   └── org
│       └── fmod
│           ├── FMODAudioDevice$a.smali
│           ├── FMODAudioDevice.smali
│           └── a.smali
├── source.zip
└── src
    ├── com
    │   ├── bhvr
    │   │   ├── smartglassnativeplugin
    │   │   │   └── BuildConfig.java
    │   │   └── smartglassnativepluginlib
    │   │       ├── MsaAuthenticatorView.java
    │   │       ├── SmartGlassAPI$1.java
    │   │       ├── SmartGlassAPI$2.java
    │   │       ├── SmartGlassAPI$3.java
    │   │       ├── SmartGlassAPI$4.java
    │   │       ├── SmartGlassAPI$AuthenticatorListener.java
    │   │       ├── SmartGlassAPI$AuxiliaryListener.java
    │   │       ├── SmartGlassAPI$DiscoveryListener.java
    │   │       ├── SmartGlassAPI$SessionListener.java
    │   │       ├── SmartGlassAPI$TokenListener.java
    │   │       └── SmartGlassAPI.java
    │   ├── microsoft
    │   │   └── xbox
    │   │       └── smartglass
    │   │           ├── Accelerometer$1.java
    │   │           ├── Accelerometer$SensorListener.java
    │   │           ├── Accelerometer.java
    │   │           ├── AccelerometerListener.java
    │   │           ├── AccelerometerReading.java
    │   │           ├── ActiveTitleLocation.java
    │   │           ├── ActiveTitleState.java
    │   │           ├── AgeGroup.java
    │   │           ├── AuthError.java
    │   │           ├── AuthInfo.java
    │   │           ├── AuxiliaryStream.java
    │   │           ├── AuxiliaryStreamListener.java
    │   │           ├── AuxiliaryStreamReadResult.java
    │   │           ├── AuxiliaryStreamReadStats.java
    │   │           ├── AuxiliaryStreamWriteResult.java
    │   │           ├── AuxiliaryStreamWriteStats.java
    │   │           ├── CatalogServiceManager.java
    │   │           ├── ClientInformation.java
    │   │           ├── ClientResolution.java
    │   │           ├── ConnectionState.java
    │   │           ├── ControlKey.java
    │   │           ├── DeviceCapabilities.java
    │   │           ├── DeviceStatus.java
    │   │           ├── DeviceType.java
    │   │           ├── DiscoveryManager.java
    │   │           ├── DiscoveryManagerListener.java
    │   │           ├── Environment.java
    │   │           ├── EnvironmentManager.java
    │   │           ├── EnvironmentManagerListener.java
    │   │           ├── EnvironmentSettings.java
    │   │           ├── GameDvr.java
    │   │           ├── GamePad.java
    │   │           ├── GamePadButtons.java
    │   │           ├── Gyrometer$1.java
    │   │           ├── Gyrometer$SensorListener.java
    │   │           ├── Gyrometer.java
    │   │           ├── GyrometerListener.java
    │   │           ├── GyrometerReading.java
    │   │           ├── HttpResponse.java
    │   │           ├── JavaScriptAdapter$AccelListener.java
    │   │           ├── JavaScriptAdapter$GyroListener.java
    │   │           ├── JavaScriptAdapter.java
    │   │           ├── JavaScriptAdapterListener.java
    │   │           ├── JavaScriptCommand.java
    │   │           ├── JsonMessage.java
    │   │           ├── Listenable.java
    │   │           ├── MediaCommand.java
    │   │           ├── MediaControlCommands.java
    │   │           ├── MediaMetaDataEntry.java
    │   │           ├── MediaPlaybackStatus.java
    │   │           ├── MediaState.java
    │   │           ├── MediaTransportCapabilities.java
    │   │           ├── MediaTransportState.java
    │   │           ├── MediaType.java
    │   │           ├── Message.java
    │   │           ├── MessageTarget.java
    │   │           ├── MessageType.java
    │   │           ├── MetricsManager.java
    │   │           ├── PairedIdentityState.java
    │   │           ├── PrimaryDevice.java
    │   │           ├── PrimaryDeviceFlags.java
    │   │           ├── PrimaryDeviceState.java
    │   │           ├── ReconnectPolicy.java
    │   │           ├── RefTPtr.java
    │   │           ├── SGError.java
    │   │           ├── SGException.java
    │   │           ├── SGPlatform.java
    │   │           ├── SGResult.java
    │   │           ├── Sensor.java
    │   │           ├── SensorArguments.java
    │   │           ├── SensorManager$1.java
    │   │           ├── SensorManager$2.java
    │   │           ├── SensorManager.java
    │   │           ├── SensorResult.java
    │   │           ├── ServiceChannel.java
    │   │           ├── ServiceManager.java
    │   │           ├── ServiceRequestListener.java
    │   │           ├── SessionManager.java
    │   │           ├── SessionManagerListener.java
    │   │           ├── SoundLevel.java
    │   │           ├── SurfaceType.java
    │   │           ├── TextAction.java
    │   │           ├── TextConfiguration.java
    │   │           ├── TextInputScope.java
    │   │           ├── TextManager.java
    │   │           ├── TextManagerListener.java
    │   │           ├── TextOptions.java
    │   │           ├── TextResult.java
    │   │           ├── Token.java
    │   │           ├── TokenListener.java
    │   │           ├── TokenManager.java
    │   │           ├── TokenManagerListener.java
    │   │           ├── TokenResult.java
    │   │           ├── TokenType.java
    │   │           ├── TouchAction.java
    │   │           ├── TouchFrame.java
    │   │           ├── TouchPoint.java
    │   │           ├── TraceLog.java
    │   │           ├── TraceLogLevel.java
    │   │           ├── TraceLogListener.java
    │   │           ├── XboxLiveServiceManager.java
    │   │           ├── controls
    │   │           │   ├── Accelerometer$Listener.java
    │   │           │   ├── Accelerometer.java
    │   │           │   ├── AssociatedChannel.java
    │   │           │   ├── BridgedWebView$ChromeClient.java
    │   │           │   ├── BridgedWebView$JavaScriptBridge.java
    │   │           │   ├── BridgedWebView$ViewClient.java
    │   │           │   ├── BridgedWebView.java
    │   │           │   ├── Browser.java
    │   │           │   ├── CanvasComponent.java
    │   │           │   ├── CanvasEvent.java
    │   │           │   ├── CanvasFragment$1.java
    │   │           │   ├── CanvasFragment$SessionListener.java
    │   │           │   ├── CanvasFragment$WebListener.java
    │   │           │   ├── CanvasFragment.java
    │   │           │   ├── CanvasKey.java
    │   │           │   ├── CanvasKeyMapper$1.java
    │   │           │   ├── CanvasKeyMapper.java
    │   │           │   ├── CanvasScript.java
    │   │           │   ├── CanvasState.java
    │   │           │   ├── GameDvr.java
    │   │           │   ├── GamePad.java
    │   │           │   ├── Gyroscope$Listener.java
    │   │           │   ├── Gyroscope.java
    │   │           │   ├── HandlesIme.java
    │   │           │   ├── Haptic.java
    │   │           │   ├── HttpClient.java
    │   │           │   ├── Information$1.java
    │   │           │   ├── Information$SessionListener.java
    │   │           │   ├── Information.java
    │   │           │   ├── InformationV1.java
    │   │           │   ├── InformationV2.java
    │   │           │   ├── Input$1.java
    │   │           │   ├── Input.java
    │   │           │   ├── InputStreamUtils.java
    │   │           │   ├── InputV1.java
    │   │           │   ├── InputV2.java
    │   │           │   ├── JavaScriptBridge$1.java
    │   │           │   ├── JavaScriptBridge$AdapterListener.java
    │   │           │   ├── JavaScriptBridge$Bridge.java
    │   │           │   ├── JavaScriptBridge$ChromeClient.java
    │   │           │   ├── JavaScriptBridge$JsonCommand.java
    │   │           │   ├── JavaScriptBridge$ViewClient.java
    │   │           │   ├── JavaScriptBridge.java
    │   │           │   ├── Json.java
    │   │           │   ├── JsonAccelerometer.java
    │   │           │   ├── JsonAccelerometerCurrentState.java
    │   │           │   ├── JsonActiveTitle.java
    │   │           │   ├── JsonBrowserParameters.java
    │   │           │   ├── JsonCanvasClientInfo.java
    │   │           │   ├── JsonCanvasHostInfo.java
    │   │           │   ├── JsonCanvasMediaState$1.java
    │   │           │   ├── JsonCanvasMediaState.java
    │   │           │   ├── JsonCanvasParameters.java
    │   │           │   ├── JsonClientsUpdated.java
    │   │           │   ├── JsonCompleteRequest.java
    │   │           │   ├── JsonConnectionStateChanged.java
    │   │           │   ├── JsonEnvironmentSettings.java
    │   │           │   ├── JsonError.java
    │   │           │   ├── JsonGamePad.java
    │   │           │   ├── JsonGyroscope.java
    │   │           │   ├── JsonGyroscopeCurrentState.java
    │   │           │   ├── JsonHapticCurrentState.java
    │   │           │   ├── JsonInformationCurrentState.java
    │   │           │   ├── JsonInformationGamercard.java
    │   │           │   ├── JsonInformationGetPrivileges.java
    │   │           │   ├── JsonInformationPrivileges.java
    │   │           │   ├── JsonInputKey.java
    │   │           │   ├── JsonLaunchTitleParameters.java
    │   │           │   ├── JsonLaunchUriParameters.java
    │   │           │   ├── JsonLogMessage.java
    │   │           │   ├── JsonMediaGetState.java
    │   │           │   ├── JsonMediaSeek.java
    │   │           │   ├── JsonMediaSend.java
    │   │           │   ├── JsonPairedIdentityStateChanged.java
    │   │           │   ├── JsonRecordPreviousMessage.java
    │   │           │   ├── JsonScriptNotify.java
    │   │           │   ├── JsonSendMessage.java
    │   │           │   ├── JsonSensorStartParameters.java
    │   │           │   ├── JsonServiceRequest.java
    │   │           │   ├── JsonServiceResponse.java
    │   │           │   ├── JsonTitleChanged.java
    │   │           │   ├── JsonTitleChannelChanged.java
    │   │           │   ├── JsonTouchFrame.java
    │   │           │   ├── JsonTouchPoint.java
    │   │           │   ├── JsonUserGamercard.java
    │   │           │   ├── JsonUserInfo.java
    │   │           │   ├── Log.java
    │   │           │   ├── LogV1.java
    │   │           │   ├── LogV2.java
    │   │           │   ├── Media$1.java
    │   │           │   ├── Media$SessionListener.java
    │   │           │   ├── Media.java
    │   │           │   ├── MediaV1.java
    │   │           │   ├── MediaV2.java
    │   │           │   ├── Messaging$1.java
    │   │           │   ├── Messaging$SessionListener.java
    │   │           │   ├── Messaging.java
    │   │           │   ├── MessagingV1.java
    │   │           │   ├── MessagingV2.java
    │   │           │   ├── MsaAuthenticator.java
    │   │           │   ├── MsaAuthenticatorListener.java
    │   │           │   ├── MsaAuthenticatorView.java
    │   │           │   ├── NavigationComponent.java
    │   │           │   ├── ResourceFinder.java
    │   │           │   ├── RunnableScript.java
    │   │           │   ├── SGHttpResponse.java
    │   │           │   ├── ScriptRunner$1.java
    │   │           │   ├── ScriptRunner.java
    │   │           │   ├── Sensor.java
    │   │           │   ├── ServiceProxy$1.java
    │   │           │   ├── ServiceProxy.java
    │   │           │   ├── ServiceRequest$1.java
    │   │           │   ├── ServiceRequest.java
    │   │           │   ├── ServiceRequestListener.java
    │   │           │   ├── ServiceRequestTracker.java
    │   │           │   ├── ServiceResponse.java
    │   │           │   ├── TextEntryFragment$1.java
    │   │           │   ├── TextEntryFragment$2.java
    │   │           │   ├── TextEntryFragment$3.java
    │   │           │   ├── TextEntryFragment$TextEntryWatcher.java
    │   │           │   ├── TextEntryFragment.java
    │   │           │   ├── Touch.java
    │   │           │   ├── UserGamercardRequest$1.java
    │   │           │   ├── UserGamercardRequest.java
    │   │           │   ├── UserInfoRequest$1.java
    │   │           │   ├── UserInfoRequest.java
    │   │           │   ├── WebComponent.java
    │   │           │   ├── WebComponentContainer.java
    │   │           │   ├── WebComponentVersion.java
    │   │           │   └── WebViewListener.java
    │   │           └── internal
    │   │               ├── HttpClient.java
    │   │               └── Random.java
    │   └── unity3d
    │       └── player
    │           ├── NativeLoader.java
    │           ├── PsmMainActivity.java
    │           ├── PsmUnityActivity.java
    │           ├── ReflectionHelper$1.java
    │           ├── ReflectionHelper$a.java
    │           ├── ReflectionHelper.java
    │           ├── UnityPlayer$1.java
    │           ├── UnityPlayer$10.java
    │           ├── UnityPlayer$11.java
    │           ├── UnityPlayer$12$1.java
    │           ├── UnityPlayer$12.java
    │           ├── UnityPlayer$13.java
    │           ├── UnityPlayer$14.java
    │           ├── UnityPlayer$15.java
    │           ├── UnityPlayer$16.java
    │           ├── UnityPlayer$17.java
    │           ├── UnityPlayer$18.java
    │           ├── UnityPlayer$19.java
    │           ├── UnityPlayer$2.java
    │           ├── UnityPlayer$3.java
    │           ├── UnityPlayer$4.java
    │           ├── UnityPlayer$5.java
    │           ├── UnityPlayer$6.java
    │           ├── UnityPlayer$7.java
    │           ├── UnityPlayer$8.java
    │           ├── UnityPlayer$9.java
    │           ├── UnityPlayer$a.java
    │           ├── UnityPlayer$b.java
    │           ├── UnityPlayer$c.java
    │           ├── UnityPlayer.java
    │           ├── UnityPlayerActivity.java
    │           ├── UnityPlayerNativeActivity.java
    │           ├── UnityPlayerProxyActivity.java
    │           ├── WWW.java
    │           ├── a$1.java
    │           ├── a$2.java
    │           ├── a$a.java
    │           ├── a.java
    │           ├── b.java
    │           ├── c$1.java
    │           ├── c$2.java
    │           ├── c.java
    │           ├── d.java
    │           ├── e$2.java
    │           ├── e.java
    │           ├── f.java
    │           ├── g.java
    │           ├── h.java
    │           ├── i.java
    │           ├── j.java
    │           ├── k$1.java
    │           ├── k.java
    │           ├── l.java
    │           ├── m.java
    │           ├── n$1.java
    │           ├── n$2.java
    │           ├── n$3.java
    │           ├── n.java
    │           ├── o.java
    │           ├── p.java
    │           ├── q.java
    │           ├── r$1.java
    │           └── r.java
    ├── net
    │   └── hockeyapp
    │       ├── android
    │       │   ├── Constants.java
    │       │   ├── CrashManager$1.java
    │       │   ├── CrashManager$2.java
    │       │   ├── CrashManager$3.java
    │       │   ├── CrashManager$4.java
    │       │   ├── CrashManager.java
    │       │   ├── CrashManagerListener.java
    │       │   ├── ExceptionHandler.java
    │       │   ├── ExpiryInfoActivity.java
    │       │   ├── FeedbackActivity$1.java
    │       │   ├── FeedbackActivity$2$1.java
    │       │   ├── FeedbackActivity$2.java
    │       │   ├── FeedbackActivity$3$1.java
    │       │   ├── FeedbackActivity$3.java
    │       │   ├── FeedbackActivity$4.java
    │       │   ├── FeedbackActivity$5.java
    │       │   ├── FeedbackActivity.java
    │       │   ├── FeedbackActivityInterface.java
    │       │   ├── FeedbackManager.java
    │       │   ├── FeedbackManagerListener.java
    │       │   ├── StringListener.java
    │       │   ├── Strings.java
    │       │   ├── Tracking.java
    │       │   ├── UpdateActivity$1.java
    │       │   ├── UpdateActivity$2.java
    │       │   ├── UpdateActivity$3.java
    │       │   ├── UpdateActivity$4.java
    │       │   ├── UpdateActivity.java
    │       │   ├── UpdateActivityInterface.java
    │       │   ├── UpdateFragment$1.java
    │       │   ├── UpdateFragment.java
    │       │   ├── UpdateInfoListener.java
    │       │   ├── UpdateManager.java
    │       │   ├── UpdateManagerListener.java
    │       │   ├── adapters
    │       │   │   └── MessagesAdapter.java
    │       │   ├── listeners
    │       │   │   ├── DownloadFileListener.java
    │       │   │   └── SendFeedbackListener.java
    │       │   ├── objects
    │       │   │   ├── ErrorObject.java
    │       │   │   ├── Feedback.java
    │       │   │   ├── FeedbackMessage.java
    │       │   │   └── FeedbackResponse.java
    │       │   ├── tasks
    │       │   │   ├── CheckUpdateTask$1.java
    │       │   │   ├── CheckUpdateTask$2.java
    │       │   │   ├── CheckUpdateTask.java
    │       │   │   ├── DownloadFileTask$1.java
    │       │   │   ├── DownloadFileTask$2.java
    │       │   │   ├── DownloadFileTask.java
    │       │   │   ├── ParseFeedbackTask.java
    │       │   │   └── SendFeedbackTask.java
    │       │   ├── utils
    │       │   │   ├── ConnectionManager$1.java
    │       │   │   ├── ConnectionManager$ConnectionManagerHolder.java
    │       │   │   ├── ConnectionManager.java
    │       │   │   ├── DeviceUtils$1.java
    │       │   │   ├── DeviceUtils$DeviceUtilsHolder.java
    │       │   │   ├── DeviceUtils.java
    │       │   │   ├── FeedbackParser$1.java
    │       │   │   ├── FeedbackParser$FeedbackParserHolder.java
    │       │   │   ├── FeedbackParser.java
    │       │   │   ├── PrefsUtil$1.java
    │       │   │   ├── PrefsUtil$PrefsUtilHolder.java
    │       │   │   ├── PrefsUtil.java
    │       │   │   ├── UiThreadUtil$1.java
    │       │   │   ├── UiThreadUtil$2.java
    │       │   │   ├── UiThreadUtil$3.java
    │       │   │   ├── UiThreadUtil$WbUtilHolder.java
    │       │   │   ├── UiThreadUtil.java
    │       │   │   ├── Util.java
    │       │   │   ├── VersionCache.java
    │       │   │   ├── VersionHelper$1.java
    │       │   │   ├── VersionHelper.java
    │       │   │   └── ViewHelper.java
    │       │   └── views
    │       │       ├── ExpiryInfoView.java
    │       │       ├── FeedbackMessageView.java
    │       │       ├── FeedbackView.java
    │       │       └── UpdateView.java
    │       └── unity
    │           ├── HockeyUnityPlugin$1.java
    │           ├── HockeyUnityPlugin$2$1.java
    │           ├── HockeyUnityPlugin$2.java
    │           ├── HockeyUnityPlugin$3$1.java
    │           ├── HockeyUnityPlugin$3.java
    │           ├── HockeyUnityPlugin$4.java
    │           ├── HockeyUnityPlugin$5.java
    │           └── HockeyUnityPlugin.java
    └── org
        └── fmod
            ├── FMODAudioDevice$a.java
            ├── FMODAudioDevice.java
            └── a.java

85 directories, 1114 files
yesitskev commented 8 years ago

Yeah that is the very first thing i used. Files which deserve special mention: Mess0.bin and DemoMode.bin

I don't think you'll manage to decompile any of the monoscripts used.

NimVek commented 8 years ago

Mess0.bin is in Format of that other network update (Type 3) DemoMode.bin is in another format. i decoded it, will describe it soon

yesitskev commented 8 years ago

DemoMode could be a mock server / mock data for well, the demo mode of the app. I can only assume parsing that would be similar, if not the same, as network parsing.

NimVek commented 8 years ago

DemoMode ist the Data used when app is in DemoMode for decoding look in https://github.com/NimVek/pipboy/blob/master/FILEFORMAT.md Content look at https://github.com/NimVek/pipboy/blob/master/DemoMode.json In DemoMode.bin all Strings are lowercase. In the JSON-dump i changed it to the known case.

roby65 commented 8 years ago

Open "Assembly-CSharp.dll" with a .NET decompiler, and you will have source code in plain sight. (Like https://www.red-gate.com/products/dotnet-development/reflector/ )

rgbkrk commented 8 years ago

I'm a bit wary of posting decompiled sources in this repository, though it may be helpful if you make a new one.

nkatsaros commented 8 years ago

Hey, I'm working on one of these projects too https://github.com/nkatsaros/pipboygo. Most of my work is based off the great research you all have done but you might find something useful in there.

If you pull the first commit, the application was a Mess0.bin parser that would dump the database in JSON. I found that pasting it in the Chrome Developer Tools was a good was to browse it.

Also, don't know if any of you found this yet, but fontconfig.txt contains the multilingual translations for all of the $variables in the database. It could be useful if you want to create your own user interface on top of it.

rgbkrk commented 8 years ago

@nkatsaros yours is awesome!

I especially love the local map dump

image

NimVek commented 8 years ago

I tried to combine some mapdumps, and get these little image of my walk in sanctury. Blue means the gray value in the dump is 0 (assumed no data is given) On the green channel i used the average gray value, and on the red channel i display the difference between min and max value. Because i do Nearest-neighbor interpolation the is a lot of red ;) Try to upload my script next days. test

nelix commented 8 years ago

The SmartGlass SDK makes me think that the xbox protocol will be very very different indeed. At least the initiation part anyway