[WinDbg Script] Hacking Minesweeper for Windows 8

<IMPORTANT UPDATE>

Today two people told me the script was not working and they also said they did not have the minesweeper_ni.dll. It puzzled me because I tested the script and all the steps below countless times.

So I started troubleshooting it (not debugging, troubleshooting :-)) and we all are running Windows 8.1, same debugger version, etc... I was in Panic Mode = ON since I already blogged the script and all the steps to hack Minesweeper.

After more troubleshooting I realized there is a new update for Microsoft Minesweeper. Guess what? I updated mine and it broke the script! Problem found, the exact same symptom reported to me is what I'm seeing now.

Here is the difference: After updating Minesweeper, the pre-compiled module minesweeper_ni.dll does NOT exist anymore along with other pre-compiled modules. Now it is all part of Minesweeper.exe and JITTED on the fly!

So although the "surgery" is exactly the same, the offset related to the base address of the module cannot be used anymore. Likewise I had to change the script while, at the same time, trying to minimize the amount of operations done by the new script, so it is just a little bigger.

 

Also now, as I mention below, you must do this: run Minesweeper, attach the debugger, load symbols, resume the game and press F5 to call the Game Options so we force one method we need to be JITTED.

Only after that we can run the script, which is going to patch in memory the machine code of the JITTED method.

More details below... Also, I modified the steps to accommodate the new changes, and hopefully didn't miss anything. Much of the debugger output is still old, but very similar to the new Minesweeper version.

I guess my blood pressure is back to normal now...

 

Note from 7/2/2014: I'm updating the script to keep up with new Minesweeper updates but not the whole debugging process. The general idea is the same, just the offsets are slightly different.

 

</IMPORTANT UPDATE>

 

This post complements my previous post in which I shared a PowerPoint presentation about debugging. Here I explain how I hacked Minesweeper for Windows 8.

Don’t get me wrong, the purpose is to demonstrate the power of debugging and the importance of thinking low level while debugging. Keep in mind that the work could have been simplified using other tools, but my goal was to use WinDbg only. Also, the goal is to cheat on Minesweeper and force the app to do what we want; not to find out the key combinations to activate the cheats. We want to display all the hidden bombs; exactly what I did for Minesweeper running on Windows XP.

 

So we go from this:

 


 
 

To this:

 

 

 

I bet you agree the approach of forcing the app to do what we want is much more fun. ;-)

Thus, to begin with, I will tell you the approach I decided to use, which is by no means not the only valid approach.

 

My first goal was to identify the part of the code where the board is assembled in memory. I realized the board is very likely an array where the elements represent an empty square or a square with a bomb based on numeric value.

If you are not familiar with Windows 8 apps, just checking the modules (dlls) would be enough to find out it uses managed code.
Based on that I loaded a few suspicious modules to find out if the code was obfuscated or not. Keep in mind it wouldn’t have been a problem if the code were obfuscated; however, it would have taken more debugging time.

After doing that I realized I could decompile the code and browse classes and methods. I used the ILSpy tool

Here is the beginning of the debugging session:

- Use WinDbg 32 bits

- Important!!!

"With typical desktop applications, the user launches an app and it runs until he terminates it. The application continues to run even when it’s not in the forefront. Windows Store apps are a bit different. When an app isn’t in the forefront, a Windows Service—the Runtime Broker—suspends all threads in the app, and wakes them back up only when the app is in the forefront. This novel feature helps preserve overall system performance and battery life. With Windows 8.1, even when an app is closed by the user, the default action is to place the app into a suspended state and not terminate it. If you prefer the older Windows 8 functionality, you can set Windows.ApplicationModel.ClosePolicy.TerminateOnClose equal to true."

 

https://msdn.microsoft.com/en-us/magazine/dn385708.aspx

 

- So you must use PLMDebug - https://msdn.microsoft.com/en-us/library/windows/hardware/jj680085%28v=vs.85%29.aspx

 

- Command line I use: plmdebug /enableDebug <PID> "C:\debuggers32bit\windbg.exe"  

- You’ll need the extension SOS.DLL.

-   Attach debugger after using plmDebug otherwise you won’t be able to debug the application.

-  Type g and resume the execution since WinDbg probably is waiting for you to type a command.

 

- Note: If you just want the script to cheat on Minesweeper, jump to the final part of this blog
article. ;-)

 

-   After you see the dlls loaded, break into the debugger and:

 

.reload /f

 

.load sos

-   Problems to load SOS.DLL very likely indicate that CLR.DLL was not initialized yet, so just type g, continue execution and break into the debugger a little after that.

-   Keep in mind the PowerPoint from my previous blog post refers to demos, so the tags below map to the PowerPoint slide.

 

#######################################

### DEMO #2

#######################################

 

- Note: Demo #1 is in the PowerPoint from the previous blog post. ;-)

 

- List modules, we see pre-compiled .NET assemblies so we can reverse engineer the modules if they are not obfuscated.

Important: Some of the assemblies below don't exist anymore after the new Minesweeper update!

 

lm1m

Minesweeper

Microsoft_TimedText_ni

Arkadium_GameNetLib_ni

WSShared

Arkadium_XboxLive_ni

Windows_Networking_ni

MinesweeperPathfinderModel_ni

Arkadium_SharpDXEngine_Win8_ni

Arkadium_GameEngine_Win8_ni

Windows_UI_Immersive

Microsoft_Xbox

MinesweeperCore_ni

SharpDX_ni

xaudio2_8

Windows_UI_Xaml

Microsoft_VideoAdvertising_ni

SharpDX_Direct2D1_ni

SharpDX_DXGI_ni

mfsrcsnk

Windows_Data_ni

Windows_Devices_ni

SharpDX_XAudio2_ni

Windows_Security_ni

SharpDX_Direct3D11_ni

Windows_Storage_ni

Windows_Graphics_ni

System_Runtime_InteropServices_ni

System_Runtime_Serialization_ni

System_ServiceModel_ni

diasymreader

comScore_ni

System_IO_ni

Arkadium_SharpDXEngine_AudioLoader

wer

Arkadium_SharpDXEngine_AudioLoader_ni

Microsoft_Games_Sentient_ni

System_ServiceModel_Internals_ni

SMDiagnostics_ni

Windows_System_ni

AUTHZ

winbio

easwrt

MicrosoftAdvertising_ni

Windows_UI_Xaml_ni

winrnr

pnrpnsp

napinsp

NLAapi

rasman

rasapi32

windowscodecsext

samcli

netutils

Arkadium_NetworkManager_ni

Microsoft_PlayerFramework_ni

Windows_Globalization_Fontgroups

Arkadium_DailyChallengeModule_ni

SAMLIB

System_Threading_Tasks_ni

System_Diagnostics_Debug_ni

Windows_Media_ni

System_Xml_Linq_ni

System_Net_Http_ni

UIAutomationCore

System_Xml_ni

System_Configuration_ni

System_Core_ni

System_ni

clrjit

mscorlib_ni

MSVCR120_CLR0400

clr

mscoreei

MSCOREE

Windows_Globalization_ni

DUI70

wevtapi

WSSync

WSClient

System_Collections_ni

Windows_ApplicationModel_Store

CEServices_ni

Microsoft_PlayerFramework_Advertising_ni

System_ServiceModel_Primitives_ni

Windows_ApplicationModel_ni

windowscodecs

Arkadium_SharedEntities_ni

Microsoft_Xbox_ni

msxml6

System_Net_Primitives_ni

ksuser

mfcore

System_Runtime_Serialization_Primitives_ni

Windows_Foundation_ni

Microsoft_Advertising_WinRT_UI_ni

System_Runtime_WindowsRuntime_UI_Xaml_ni

System_ObjectModel_ni

Arkadium_CdnModule_ni

Arkadium_Xaml_Toolkit_ni

gpapi

ncryptsslp

schannel

sppc

SLC

winhttp

ondemandconnroutehelper

dhcpcsvc

dhcpcsvc6

WINNSI

iphlpapi

wshBth

Microsoft_Xaml_Interactions_ni

Windows_Networking_Connectivity

XmlLite

Microsoft_Xaml_Interactivity_ni

MinesweeperUI_DP4_ni

Windows_Globalization

PROPSYS

Microsoft_Practices_ServiceLocation_ni

AVRT

RTWorkQ

FirewallAPI

Arkadium_Advertisement_ni

Windows_UI_ni

MFPlat

Arkadium_NavigationModule_ni

Arkadium_LeaderboardModule_ni

Arkadium_AwardsModule_ni

Common_ni

Arkadium_AchievementsModule_ni

Arkadium_WindowsStoreModule_ni

Minesweeper_ni

Arkadium_Core_Win8_ni

System_Runtime_WindowsRuntime_ni

elscore

GalaSoft_MvvmLight_Extras_Win8_ni

Arkadium_ApplicationFramework_ni

AppFramework_SharedEntities_ni

Windows_Security_Authentication_OnlineId

Windows_Graphics

PhotoMetadataHandler

wpnapps

GalaSoft_MvvmLight_Win8_ni

System_Runtime_ni

System_Runtime_InteropServices_WindowsRuntime_ni

CryptoWinRT

Windows_System_Profile_HardwareId

Windows_Networking_HostName

threadpoolwinrt

MFReadWrite

Windows_Networking

msvcp120_app

vccorlib120_app

Windows_ApplicationModel

msvcr120_app

Windows_Storage_ApplicationData

biwinrt

TWINAPI

dcomp

igdusc32

NTASN1

ncrypt

igd10iumd32

secur32

d3d11

dxgi

actxprxy

dwrite

d2d1

UxTheme

dwmapi

NInput

Windows_UI

Bcp47Langs

MrmCoreR

WININET

twinapi_appcore

urlmon

iertutil

WinTypes

profapi

fwpuclnt

rasadhlp

DNSAPI

mswsock

bcrypt

rsaenh

CRYPTSP

powrprof

AUDIOSES

MMDevApi

kernel_appcore

DEVOBJ

shcore

bcryptPrimitives

CRYPTBASE

SspiCli

ADVAPI32

ole32

msvcrt

SHELL32

SETUPAPI

sechost

KERNELBASE

GDI32

KERNEL32

WS2_32

USER32

combase

SHLWAPI

MSCTF

NSI

RPCRT4

OLEAUT32

MSASN1

IMM32

cfgmgr32

CRYPT32

ntdll

Windows.ApplicationModel.dll

wintypes.dll

shcore.dll

peerdist.dll

 

- Since this is a .NET application, let’s extract what seems to be the main module and decompile it:

 

dd minesweeper_ni L1

dd minesweeper L1

70050000 00005a4d

!savemodule 70050000 minesweeper.dll

 

4 sections in file

section 0 - VA=1000, VASize=309a0, FileAddr=400,FileSize=30a00

section 1 - VA=32000, VASize=bed4,FileAddr=30e00, FileSize=c000

section 2 - VA=3e000,VASize=11e7e8, FileAddr=3ce00, FileSize=11e800

section 3 - VA=15d000, VASize=1095c,FileAddr=15b600, FileSize=10a00

 

- Note: The address numbers you’ll get are very likely to be different from mine and during the debugging session I had to
restart the app a few times, so the addresses changed again. This is normal, don’t worry about it.

 

- Use ILSpy to decompile minesweeper.dll.

 

-  Curiosity: At Microsoft we have an internal WinDbg extension that shows the decompiled methods we want in the WinDbg window so I wouldn’t need ILSpy.

 

- Click on MineSweeper module -> Minesweeper class -> MinesweeperGame -> InitGameInternal() . Why is that? Just
my initial hypothesis:

 

- From MinesweeperGame we see:

 

// Minesweeper.MinesweeperGame

private void InitGameInternal()

{

          MinerApp.get_Instance().remove_InitGameInternal(new OnInitGameInternal(this.InitGameInternal));

          this.GameView.set_Visible(true);

          this.GameView.Initialize();

}

 

 

 

 

 

- Click on OnInitGameInternal() above. It requires Minesweeper_UI module. Locate it and use !savemodule to extract the assembly from the dump file.

 - The calls above are part of MinesweeperUI module.

 

lmv m minesweeperUI*

 

start end module name
07720000 07790000 MinesweeperUI_DP4_7720000 C (no symbols)
Loaded symbol image file: MinesweeperUI-DP4.dll
Image path: MinesweeperUI-DP4.dll
Image name: MinesweeperUI-DP4.dll
Using CLR debugging support for all symbols
Has CLR image header, track-debug-data flag not set
Timestamp: Mon Mar 24 08:12:11 2014 (53304B4B)
CheckSum: 00000000
ImageSize: 00070000
File version: 1.0.0.0
Product version: 1.0.0.0
File flags: 0 (Mask 3F)
File OS: 4 Unknown Win32
File type: 2.0 Dll
File date: 00000000.00000000
Translations: 0000.04b0
CompanyName: Microsoft
ProductName: MinesweeperUI
InternalName: MinesweeperUI-DP4.dll
OriginalFilename: MinesweeperUI-DP4.dll
ProductVersion: 1.0.0.0
FileVersion: 1.0.0.0
FileDescription: MinesweeperUI
LegalCopyright: Copyright © Microsoft 2012

 

!savemodule 06800000 MinesweeperUI_DP4.dll

4 sections in file

section 0 - VA=1000, VASize=4010c, FileAddr=400,FileSize=40200

section 1 - VA=42000, VASize=c0ac,FileAddr=40600, FileSize=c200

section 2 - VA=4f000, VASize=141438,FileAddr=4c800, FileSize=141600

section 3 - VA=191000, VASize=12768,FileAddr=18de00, FileSize=12800

 

- There are a lot of classes and methods, so scanning the source code is not an effective approach. We need to try to reduce the debugging time as much as we can while finding the parts of the code we are interested in. So let's try another approach.

 

- How do we start? Someone used to debugging Win 8 applications may have used a different starting point. A game developer may have yet another starting point. I decided to use something that virtually all games have in common: Random number generators.

 

- So now we need to find out when the mines are randomically created and put in the possible array representing the board. To do that let's Search for members which have the Random word.

 

Among many methods there is one called GenerateRandomNumbers() from Minesweeper.MvvmStructureModel/ChooseBoardDataSource/GenerateRandomNumbers():

 

private int[] GenerateRandomNumbers(int maxMines = -1)

{

          List<int> list = new List<int>();

          List<int> list2 = new List<int>();

          int num = (maxMines == -1) ? this._minesCount : maxMines;

          for (int i = 0; i < this._boardWidth * this._boardHeight; i++)

          {

                    list2.Add(i);

          }

          Random random = new Random();

          for (int j = 0; j < num; j++)

          {

                    int index = random.Next(0, list2.Count);

                    list.Add(list2[index]);

                    list2.RemoveAt(index);

          }

          return list.ToArray(); <<< It is, in fact, an Array.

}

 We could use a breakpoint here if we wanted.

 

-   Let's locate the module:

 

!Name2EE *!GenerateRandomNumbers

 

. . .

. . .

Module:     
2f741000

Assembly:   
Minesweeper.exe

. . .

. . .

 

!dumpmodule -mt 2f741000

Name:      
C:\Program
Files\WindowsApps\Microsoft.MicrosoftMinesweeper_2.2.1401.2303_x86__8wekyb3d8bbwe\Minesweeper.exe

Attributes: PEFile

Assembly:  
00fb6488

LoaderHeap: 00000000

TypeDefToMethodTableMap: 2f881008

TypeRefToMethodTableMap: 2f76a710

MethodDefToDescMap: 2f8811bc

FieldDefToDescMap: 2f76b2c0

MemberRefToDescMap: 00000000

FileReferencesMap: 2f7413b0

AssemblyReferencesMap: 2f7413b4

MetaData start address: 2f7ab090 (289932 bytes)

 

Types defined in this module

 

     
MT TypeDef Name

------------------------------------------------------------------------------

2f74806c 0x02000002 Minesweeper.App

2f860220 0x02000003
Minesweeper.BookmarkConfiguration

2f860298 0x02000004
Minesweeper.XboxLiveConfiguration

2f8600ec 0x02000005
Minesweeper.IocRegistrationHelper

2f8602cc 0x02000006
Minesweeper.IocRegistrationHelper+ThemeUpdateHelper

2f7494d8 0x02000007 Minesweeper.LoaderPage

2f858b0c 0x02000008 Minesweeper.ActivationState

2f860158 0x02000009 Minesweeper.MinesweeperGame

2f858bac 0x0200000a Minesweeper.SuspendReason

2f8658fc 0x0200000b
Minesweeper.MvvmStructure.Helpers.ExtendedTileItem

2f8661f8 0x0200000c
Minesweeper.MvvmStructure.Helpers.CollectionTileItem

2f86036c 0x0200000d
Minesweeper.MvvmStructure.Helpers.CreditsInfo

2f858be4 0x0200000e
Minesweeper.MvvmStructure.Helpers.GamesTileTemplates

2f866278 0x0200000f
Minesweeper.MvvmStructure.Helpers.GamesTileItem

2f8662c4 0x02000010
Minesweeper.MvvmStructure.Helpers.HelpTileConst

2f858c10 0x02000011
Minesweeper.MvvmStructure.Helpers.HelpTileConst+HelpIndex

2f858c48 0x02000012
Minesweeper.MvvmStructure.Helpers.HelpTileConst+HelpIndexPosition

2f866334 0x02000013
Minesweeper.MvvmStructure.Helpers.HelpTileItem

2f858c80 0x02000014
Minesweeper.MvvmStructure.Helpers.IMinesweeperPopup

2f858cbc 0x02000015
Minesweeper.MvvmStructure.Helpers.IScoreBar

2f7488c0 0x02000016
Minesweeper.MvvmStructure.Helpers.ItemDataTemplateSelector

2f858cf8 0x02000017 Minesweeper.MvvmStructure.Helpers.ItemDataTemplateSelector+ItemTemplate

2f858d44 0x02000018
Minesweeper.MvvmStructure.Helpers.ObservableRangeCollection`1

2f8601b0 0x02000019
Minesweeper.MvvmStructure.Helpers.PinArgumentsHelper

2f858e80 0x0200001a
Minesweeper.MvvmStructure.Helpers.RenderingModes

2f858eb8 0x0200001b
Minesweeper.MvvmStructure.Helpers.IRenderMode

2f8664e4 0x0200001c
Minesweeper.MvvmStructure.Helpers.CompositionRendering

2f865ce0 0x0200001d
Minesweeper.MvvmStructure.Helpers.StoryboardRendering

2f86502c 0x0200001e Minesweeper.MvvmStructure.Helpers.RenderController

2f865c70 0x0200001f
Minesweeper.MvvmStructure.Helpers.ScoreBarFactory

2f858ef8 0x02000020
Minesweeper.MvvmStructure.Helpers.StatisticsTileTemplates

2f865888 0x02000021
Minesweeper.MvvmStructure.Helpers.StatisticTileItem

2f866528 0x02000022
Minesweeper.MvvmStructure.Helpers.Gradient

2f86655c 0x02000023
Minesweeper.MvvmStructure.Helpers.TileDataItemFactory

2f858f24 0x02000024
Minesweeper.MvvmStructure.Helpers.UiVisualGroupId

2f8665e4 0x02000025 Minesweeper.MvvmStructure.Model.ModeSettingsDataSourceBase

2f865a34
0x02000026 Minesweeper.MvvmStructure.Model.ChooseBoardDataSource           

2f865e9c 0x02000027
Minesweeper.MvvmStructure.Model.MinesweeperDataSourceBase

2f866644 0x02000028
Minesweeper.MvvmStructure.Model.HelpAdventureDataSource

2f8666a0 0x02000029
Minesweeper.MvvmStructure.Model.HelpAdventureDataSourceZoomedOut

2f866714 0x0200002a
Minesweeper.MvvmStructure.Model.DailyChallengePageModel

2f860324 0x0200002b
Minesweeper.MvvmStructure.Model.Day0PopupDataSource

2f86679c 0x0200002c
Minesweeper.MvvmStructure.Model.HelpDataSource

2f8667f8 0x0200002d
Minesweeper.MvvmStructure.Model.HelpDataSourceZoomedOut

2f865a94 0x0200002e
Minesweeper.MvvmStructure.Model.GamesMenuDataSource

2f866854 0x0200002f Minesweeper.MvvmStructure.Model.HelpAdventureMenuDataSource

2f8668cc 0x02000030
Minesweeper.MvvmStructure.Model.HelpMenuDataSource

2f866930 0x02000031
Minesweeper.MvvmStructure.Model.LeaderboardsMenuDataSource

2f86698c 0x02000032
Minesweeper.MvvmStructure.Model.ZoomedLeaderboardDataSource

2f865b30 0x02000033
Minesweeper.MvvmStructure.Model.StatisticsMenuDataSource

2f865b90 0x02000034
Minesweeper.MvvmStructure.Model.ThemesMenuDataSource

2f86046c 0x02000035
Minesweeper.MvvmStructure.Model.GamePageModel

2f86599c 0x02000036 Minesweeper.MvvmStructure.Model.SettingsModel

2f860594 0x02000037
Minesweeper.MvvmStructure.Model.StatisticsPageDataSource

2f866a20 0x02000038
Minesweeper.MvvmStructure.Model.TutorialPopupModel

2f860424 0x02000039
Minesweeper.MvvmStructure.Service.MinesweeperAwardsService

2f8602f8 0x0200003a
Minesweeper.MvvmStructure.Service.MinesweeperDailyChallengeService

2f8603f8 0x0200003b
Minesweeper.MvvmStructure.Service.PopupService

2f864fec 0x0200003c
Minesweeper.MvvmStructure.Service.SettingsService

2f866ab4 0x0200003d Minesweeper.MvvmStructure.ViewModel.AwardsPageViewModel

2f860b74 0x0200003e
Minesweeper.MvvmStructure.ViewModel.ChooseBoardViewModel

2f860744 0x0200003f
Minesweeper.MvvmStructure.ViewModel.HelpAdventurePageViewModel

2f866b48 0x02000040 Minesweeper.MvvmStructure.ViewModel.DailyChallengePageViewModel

2f860d24 0x02000041
Minesweeper.MvvmStructure.ViewModel.GamePageViewModel

2f860c04 0x02000042
Minesweeper.MvvmStructure.ViewModel.GoalDescriptionPopupViewModel

2f8606b4 0x02000043
Minesweeper.MvvmStructure.ViewModel.HelpPageViewModel

2f865dc8 0x02000044
Minesweeper.MvvmStructure.ViewModel.LeaderboardsMenuControlViewModel

2f866108 0x02000045
Minesweeper.MvvmStructure.ViewModel.LeaderboardsPageViewModel

2f866b90 0x02000046
Minesweeper.MvvmStructure.ViewModel.MainPageViewModel

2f866c20 0x02000047
Minesweeper.MvvmStructure.ViewModel.Menu.AwardsMenuControlViewModel

2f8607d4 0x02000048
Minesweeper.MvvmStructure.ViewModel.GamesMenuViewModel

2f8608a4 0x02000049
Minesweeper.MvvmStructure.ViewModel.HelpAdventureMenuViewModel

2f860934 0x0200004a
Minesweeper.MvvmStructure.ViewModel.HelpMenuViewModel

2f860a54 0x0200004b
Minesweeper.MvvmStructure.ViewModel.LeaderboardsMenuViewModel

2f860664 0x0200004c
Minesweeper.MvvmStructure.ViewModel.StatisticsMenuViewModel

2f860984 0x0200004d Minesweeper.MvvmStructure.ViewModel.ThemesMenuViewModel

2f860ae4 0x0200004e
Minesweeper.MvvmStructure.ViewModel.SettingsControlViewModel

2f86053c 0x0200004f
Minesweeper.MvvmStructure.ViewModel.StatisticsPageViewModel

2f860c94 0x02000050 Minesweeper.MvvmStructure.ViewModel.TutorialPopupViewModel

2f74846c 0x02000051
Minesweeper.MvvmStructure.View.Controls.SimpleMessagePopupControl

2f748554 0x02000052
Minesweeper.MvvmStructure.View.Controls.AdventureToolPopupControl

2f858f5c 0x02000053 Minesweeper.MvvmStructure.View.Pages.AdventureHud.MinesweeperAdventureHudElements

2f858f94 0x02000054
Minesweeper.MvvmStructure.View.Pages.AdventureHud.ICommonHud

2f866cb4 0x02000055
Minesweeper.MvvmStructure.View.Pages.AdventureHud.AdventureGuiCodeBehind

2f866d68 0x02000056 Minesweeper.MvvmStructure.View.Pages.AdventureHud.AdventureGuiCurrentState

2f866da0 0x02000057
Minesweeper.MvvmStructure.View.Pages.AdventureHud.NumbersStackPanel

2f866e08 0x02000058
Minesweeper.MvvmStructure.View.Pages.AdventureHud.LevelNameStackPanel

2f866e40 0x02000059
Minesweeper.MvvmStructure.View.Pages.ClassicHud.ClassicBackPanel

2f859008 0x0200005a
Minesweeper.MvvmStructure.View.Pages.ClassicHud.GuiStates

2f866e8c 0x0200005b
Minesweeper.MvvmStructure.View.Pages.ClassicHud.ClassicGuiCodeBehind

2f866f44 0x0200005c
Minesweeper.MvvmStructure.View.Pages.ClassicHud.MinesPanel

2f866fcc 0x0200005d
Minesweeper.MvvmStructure.View.Pages.ClassicHud.SwitchModePanel

2f866f7c 0x0200005e
Minesweeper.MvvmStructure.View.Pages.ClassicHud.TimerPanel

2f867080 0x0200005f Minesweeper.MvvmStructure.View.Pages.DailyChallengeHud.DailyChallengeGuiCodeBehind

2f867444 0x02000060
Minesweeper.MvvmStructure.View.Pages.DailyChallengeHud.DailyChallengeInfoPanel

2f8670ec 0x02000061
Minesweeper.MvvmStructure.View.Pages.DailyChallengeHud.DailyChallengeTimerPanel

2f86579c 0x02000062 Minesweeper.ViewModelLocator

2f7482b0 0x02000063
Minesweeper.MvvmStructure.View.Controls.ClassicCusomModeSettingsControl

2f7481d4 0x02000064
Minesweeper.MvvmStructure.View.Controls.ChooseBoardDynamicContentControl

2f748398 0x02000065
Minesweeper.MvvmStructure.View.Controls.HelpAdventureMenuControl

2f74862c 0x02000066
Minesweeper.MvvmStructure.View.Controls.SnapDisableControl

2f748708 0x02000067
Minesweeper.MvvmStructure.View.Controls.GamesMenuControl

2f7487f4 0x02000068 Minesweeper.MvvmStructure.View.Controls.HelpMenuControl

2f74892c 0x02000069
Minesweeper.MvvmStructure.View.Controls.StatsMenuControl

2f748a10 0x0200006a
Minesweeper.MvvmStructure.View.Controls.ThemesMenuControl

2f748aec 0x0200006b Minesweeper.MvvmStructure.View.Controls.PreloaderControl

2f748bc8 0x0200006c
Minesweeper.MvvmStructure.View.Controls.SettingsControl

2f748cb0 0x0200006d
Minesweeper.MvvmStructure.View.Controls.TutorialControl

2f85a094 0x0200006e
Minesweeper.MvvmStructure.View.Controls.TutorialControl+AnimationStates

2f748d90 0x0200006f
Minesweeper.MvvmStructure.View.Controls.TutorialPopupControl

2f748e70 0x02000070
Minesweeper.MvvmStructure.View.Pages.ArkadiumLogoPage

2f8676dc 0x02000071
Minesweeper.MvvmStructure.View.Pages.DailyChallengeHud.Bar.DailyChallengeProgressBar

2f8671f4 0x02000072
Minesweeper.MvvmStructure.View.Pages.DailyChallengeHud.DailyChallengeIterationPanel

2f8677fc 0x02000073
Minesweeper.MvvmStructure.View.Pages.DailyChallengeHud.Bar.ProgressBarSettings

2f85a8f8 0x02000074 Minesweeper.MvvmStructure.View.Pages.DailyChallengeHud.IIterationBarState

2f86775c 0x02000075
Minesweeper.MvvmStructure.View.Pages.DailyChallengeHud.IterationBarStartState

2f8677cc 0x02000076
Minesweeper.MvvmStructure.View.Pages.DailyChallengeHud.IterationBarAnimateState

2f867408 0x02000077
Minesweeper.MvvmStructure.View.Pages.DailyChallengeHud.IterationBarDefaultState

2f867a60 0x02000078
Minesweeper.MvvmStructure.View.Pages.DailyChallengeHud.ProgressBarCell

2f85ab0c 0x02000079
Minesweeper.MvvmStructure.View.Pages.Gamepage.Controlls.States.IGameplayFlow

2f867b48 0x0200007a
Minesweeper.MvvmStructure.View.Pages.Gamepage.Controlls.States.DailyChallengeFlow

2f867b88 0x0200007b
Minesweeper.MvvmStructure.View.Pages.Gamepage.Controlls.States.RegularModeFlow

2f748f5c 0x0200007c
Minesweeper.MvvmStructure.View.Pages.MinesweeperBasePage

2f749040 0x0200007d
Minesweeper.MvvmStructure.View.Pages.HelpAdventurePage

2f865c0c 0x0200007e
Minesweeper.MvvmStructure.View.Pages.AppbarsController

2f865ca8 0x0200007f Minesweeper.MvvmStructure.View.Pages.ViewController

2f865bd4 0x02000080
Minesweeper.MvvmStructure.View.Pages.GameendScenario

2f749120 0x02000081
Minesweeper.MvvmStructure.View.Pages.GamePage

2f865c44 0x02000082
Minesweeper.MvvmStructure.View.Pages.Gamepage.GameplayController

2f749218 0x02000083
Minesweeper.MvvmStructure.View.Pages.HelpPage

2f749308 0x02000084
Minesweeper.MvvmStructure.View.Pages.MainPage

2f7493e8 0x02000085
Minesweeper.MvvmStructure.View.Pages.StatisticsPage

2f867c00 0x02000086 Minesweeper.Program

2f8601e8 0x02000087
Minesweeper.Minesweeper_XamlTypeInfo.XamlTypeInfoProvider

2f867c38 0x02000088
Minesweeper.Minesweeper_XamlTypeInfo.XamlSystemBaseType

2f85bc5c 0x02000089
Minesweeper.Minesweeper_XamlTypeInfo.Activator

2f85bce8 0x0200008a
Minesweeper.Minesweeper_XamlTypeInfo.AddToCollection

2f85bd4c 0x0200008b
Minesweeper.Minesweeper_XamlTypeInfo.AddToDictionary

2f865708 0x0200008c
Minesweeper.Minesweeper_XamlTypeInfo.XamlUserType

2f85be40 0x0200008d
Minesweeper.Minesweeper_XamlTypeInfo.Getter

2f85bea4 0x0200008e Minesweeper.Minesweeper_XamlTypeInfo.Setter

2f867d30 0x0200008f
Minesweeper.Minesweeper_XamlTypeInfo.XamlMember

2f867d88 0x02000090
Minesweeper.App+<OnApplicationLaunched>d__2

2f867e18 0x02000091
Minesweeper.App+<InitializeAchievements>d__7

2f867e6c 0x02000092 Minesweeper.App+<LoadMinesweeperSettings>d__c

2f867ed8 0x02000093
Minesweeper.App+<<InitGame>b__13>d__17

2f867f5c 0x02000094
Minesweeper.App+<RegisterTiles>d__1a

2f867fc8 0x02000095
Minesweeper.IocRegistrationHelper+ThemeUpdateHelper+<<OnThemeInfoLoaded>b__20>d__22

2f86802c 0x02000096
Minesweeper.MinesweeperGame+<OnGameSuspending>d__1

2f868080 0x02000097
Minesweeper.MvvmStructure.Model.ModeSettingsDataSourceBase+<CustomSettingsChanged>d__0

2f8680ec 0x02000098
Minesweeper.MvvmStructure.Model.ChooseBoardDataSource+<SaveSettings>d__1

2f868158 0x02000099
Minesweeper.MvvmStructure.Model.Day0PopupDataSource+<OnUpdate>d__1

2f8681bc 0x0200009a
Minesweeper.MvvmStructure.Model.HelpDataSource+<Init>d__3

2f868240 0x0200009b
Minesweeper.MvvmStructure.Model.HelpDataSource+<Themes_OnThemeChanged>d__7

2f8682ac 0x0200009c
Minesweeper.MvvmStructure.Model.HelpDataSource+<GetSelectedThemeBackground>d__c

2f868318 0x0200009d
Minesweeper.MvvmStructure.Model.GamesMenuDataSource+<Init>d__3

2f868384 0x0200009e Minesweeper.MvvmStructure.Model.GamesMenuDataSource+<CreateADailyChallengeTile>d__a

2f8683d8 0x0200009f
Minesweeper.MvvmStructure.Model.GamesMenuDataSource+<CreateAdventureModeTile>d__e

2f85c42c 0x020000a0 <>f__AnonymousType0`2

2f865fd4 0x020000a1
Minesweeper.MvvmStructure.Model.GamesMenuDataSource+<>c__DisplayClass1b

2f868508 0x020000a2
Minesweeper.MvvmStructure.Model.GamesMenuDataSource+<CreateClassicTileItem>d__1e

2f86855c 0x020000a3
Minesweeper.MvvmStructure.Model.LeaderboardsMenuDataSource+<Init>d__0

2f8685e0 0x020000a4 Minesweeper.MvvmStructure.Model.LeaderboardsMenuDataSource+<CreateTileLeaderboard>d__4

2f85c5a4 0x020000a5 <>f__AnonymousType1`8

2f86600c 0x020000a6
Minesweeper.MvvmStructure.Model.StatisticsMenuDataSource+<>c__DisplayClass3

2f866190 0x020000a7 Minesweeper.MvvmStructure.Model.StatisticsMenuDataSource+<>c__DisplayClass3+<>c__DisplayClass5

2f868728 0x020000a8
Minesweeper.MvvmStructure.Model.ThemesMenuDataSource+<Init>d__0

2f868794 0x020000a9
Minesweeper.MvvmStructure.Model.ThemesMenuDataSource+<CreateTile>d__3

2f868818 0x020000aa
Minesweeper.MvvmStructure.Model.GamePageModel+<PreloadPageImages>d__6

2f868884 0x020000ab
Minesweeper.MvvmStructure.Model.GamePageModel+<Update>d__9

2f8688d8 0x020000ac
Minesweeper.MvvmStructure.Model.GamePageModel+<UpdateSwitchButtonContent>d__c

2f865820 0x020000ad
Minesweeper.MvvmStructure.Service.MinesweeperAwardsService+<>c__DisplayClass2

2f8657e8 0x020000ae
Minesweeper.MvvmStructure.Service.MinesweeperDailyChallengeService+<>c__DisplayClass4

2f85c85c 0x020000af
<PrivateImplementationDetails>{B7AC8F84-9FAE-4374-B422-C42E1B374C0B}

2f86895c 0x020000b0
Minesweeper.MvvmStructure.View.Controls.ClassicCusomModeSettingsControl+<ButtonStartGameOnClick>d__0

2f8689c8 0x020000b1
Minesweeper.MvvmStructure.View.Controls.SettingsControl+<TimerOnOffToggled>d__3

2f868a34 0x020000b2
Minesweeper.MvvmStructure.View.Controls.SettingsControl+<TipsOnOffToggled>d__6

2f868a88 0x020000b3
Minesweeper.MvvmStructure.View.Controls.SettingsControl+<QuestionMarkOnOffToggled>d__9

2f868af4 0x020000b4 Minesweeper.MvvmStructure.View.Controls.SettingsControl+<OneTapOnOffToggled>d__c

2f868b78 0x020000b5
Minesweeper.MvvmStructure.View.Controls.SettingsControl+<QuickChangeOnOffToggled>d__f

2f868bcc 0x020000b6
Minesweeper.MvvmStructure.View.Controls.SettingsControl+<SwipeInControlsOnOffToggled>d__12

2f868c50 0x020000b7
Minesweeper.MvvmStructure.View.Controls.SettingsControl+<OnOfGameEndAnimationsToggled>d__15

2f868cbc 0x020000b8
Minesweeper.MvvmStructure.View.Controls.SettingsControl+<SoundsSliderOnValueChangeComplete>d__18

2f868d28 0x020000b9
Minesweeper.MvvmStructure.View.Controls.SettingsControl+<OnConfirmResetSettings>d__1f

2f868d94 0x020000ba
Minesweeper.MvvmStructure.View.Controls.SettingsControl+<ResetSettings>d__22

2f868e00 0x020000bb
Minesweeper.MvvmStructure.View.Pages.ArkadiumLogoPage+<SetModel>d__0

2f868e64 0x020000bc
Minesweeper.MvvmStructure.View.Pages.ArkadiumLogoPage+<OnAnimationCompleted>d__e

2f868ed0 0x020000bd
Minesweeper.MvvmStructure.View.Pages.Gamepage.Controlls.States.DailyChallengeFlow+<Activate>d__0

2f868f24 0x020000be
Minesweeper.MvvmStructure.View.Pages.Gamepage.Controlls.States.RegularModeFlow+<Activate>d__0

2f8660c0 0x020000bf
Minesweeper.MvvmStructure.View.Pages.GameendScenario+<>c__DisplayClass5

2f868fa8 0x020000c0
Minesweeper.MvvmStructure.View.Pages.GamePage+<<OnInputControlsSwitched>b__2>d__4

2f868ffc 0x020000c1
Minesweeper.MvvmStructure.View.Pages.Gamepage.GameplayController+<SetFlow>d__0

2f869080 0x020000c2
Minesweeper.MvvmStructure.View.Pages.Gamepage.GameplayController+<SetupCurrentMode>d__3

2f865d40 0x020000c3
Minesweeper.MvvmStructure.View.Pages.MainPage+<>c__DisplayClass1

2f865e08 0x020000c4
Minesweeper.MvvmStructure.View.Pages.MainPage+<>c__DisplayClass1a

 

Types referenced in this module

 

     
MT TypeRef Name

------------------------------------------------------------------------------

604026a4 0x02000004 System.Object

604038c4 0x02000007 System.Enum

06af8d00 0x0200000b
Common.Controls.Models.DataSourceBase

06aeb644 0x0200000c
Common.Controls.Models.ITileDataTemplate

5f82b420 0x0200000f System.Collections.ObjectModel.ObservableCollection`1

60403898 0x02000010 System.ValueType

0703f2c4 0x02000015
Arkadium.LeaderboardModule.ViewModel.Controls.LeaderboardsMenuControlBaseViewModel

603f6770 0x02000022 System.MulticastDelegate

60403424 0x02000030 System.Type

603f4420 0x02000036 System.EventHandler

603f6630 0x02000038 System.EventArgs

603f7400 0x02000048 System.Action

30c5e080 0x0200004a Windows.UI.Xaml.Visibility

06b8543c 0x0200004c Windows.UI.Color

06afad4c 0x0200004d
Common.Controls.Models.DataGroup

06b85350 0x02000058 Windows.Foundation.Size

603f76c4 0x02000059 System.Threading.Tasks.Task

07a15bbc 0x0200005c Windows.UI.Xaml.Thickness

3096cc6c 0x02000062 Windows.UI.Xaml.Media.Brush

06af9c20 0x02000065 Common.CommonCommand

5003af44 0x02000074 GalaSoft.MvvmLight.Command.RelayCommand

604069ec 0x02000093 System.Decimal

603f7254 0x020000dd System.IAsyncResult

603fbe54 0x020000df
System.Runtime.Versioning.TargetFrameworkAttribute

60401e4c 0x020000e0
System.Reflection.AssemblyTitleAttribute

60401ecc 0x020000e1
System.Reflection.AssemblyDescriptionAttribute

60401e8c 0x020000e2
System.Reflection.AssemblyConfigurationAttribute

60401f8c 0x020000e3
System.Reflection.AssemblyCompanyAttribute

60401fcc 0x020000e4
System.Reflection.AssemblyProductAttribute

60402044 0x020000e5
System.Reflection.AssemblyCopyrightAttribute

60402084 0x020000e6
System.Reflection.AssemblyTrademarkAttribute

604020c4 0x020000e9
System.Reflection.AssemblyFileVersionAttribute

60401900 0x020000ea
System.Runtime.InteropServices.ComVisibleAttribute

60401b70 0x020000eb
System.Diagnostics.DebuggableAttribute

60401c14 0x020000ed
System.Runtime.CompilerServices.CompilationRelaxationsAttribute

604017ec 0x020000ee
System.Runtime.CompilerServices.RuntimeCompatibilityAttribute

603f88cc 0x020000f6 System.Runtime.InteropServices.WindowsRuntime.EventRegistrationToken

603fa3a0 0x020000f7
System.Runtime.InteropServices.WindowsRuntime.WindowsRuntimeMarshal

60402304 0x020000fa System.String

603fadb0 0x020000fe
System.Runtime.CompilerServices.IAsyncStateMachine

603fa324 0x020000ff
System.Runtime.CompilerServices.AsyncVoidMethodBuilder

603c9010 0x02000100
System.Runtime.CompilerServices.TaskAwaiter

6040244c 0x02000109 System.Exception

6040244c 0x0200010a System.Exception

603fa068 0x02000137 System.Runtime.CompilerServices.AsyncTaskMethodBuilder

60403424 0x0200013e System.Type

60403944 0x02000148 System.Delegate

60404650 0x02000149 System.Threading.Interlocked

603f591c 0x02000175
System.NotImplementedException

5fffc6f4 0x0200019b System.IDisposable

603f7400 0x0200019f System.Action

603f82b4 0x020001ab
System.Collections.IEnumerator

5fffb534 0x020001ae System.Collections.IList

60402cfc 0x020001b0 System.Char

603f4278 0x020001bc System.Random

60403c54 0x020001bf System.Int32

60404c54 0x020001c0 System.Text.StringBuilder

5fffb5e4 0x020001c6
System.Collections.IEnumerable

6040663c 0x020001d4
System.Threading.AutoResetEvent

603fc2e8 0x020001e4 System.UInt32

603f51bc 0x02000218 System.Nullable`1

604067e0 0x02000229 System.Guid

603fb5a4 0x0200022f System.Double

603f51bc 0x0200028e System.Nullable`1

603fb4c0 0x020002bf System.Boolean

603f4b8c 0x020002db System.ArgumentException

603f4320 0x020002dd
System.InvalidOperationException

 

 

- Search for Minesweeper.MvvmStructure.Model.ChooseBoardDataSource and the the Method Table address:

 

!dumpmt -md 2f865a34

 

EEClass:        2f751884

Module:         2f741000

Name:           Minesweeper.MvvmStructure.Model.ChooseBoardDataSource

mdToken:      02000026

File: C:\Program Files\WindowsApps\Microsoft.MicrosoftMinesweeper_2.2.1401.2303_x86__8wekyb3d8bbwe\Minesweeper.exe

BaseSize:      0x38

ComponentSize:  0x0

Slots in VTable: 49

Number of IFaces in IFaceMap: 3

--------------------------------------

MethodDesc Table

   Entry
MethodDe JIT Name

6030a630 5fff801c PreJIT System.Object.ToString()

602ff750 5fff8024 PreJIT
System.Object.Equals(System.Object)

602ff380 5fff8044 PreJIT
System.Object.GetHashCode()

602ff040 5fff8058 PreJIT System.Object.Finalize()

5002a4b8 50025560 PreJIT
GalaSoft.MvvmLight.ObservableObject.add_PropertyChanged(System.ComponentModel.PropertyChangedEventHandler)

5002a4d8 50025570 PreJIT
GalaSoft.MvvmLight.ObservableObject.remove_PropertyChanged(System.ComponentModel.PropertyChangedEventHandler)

5002a4e8 50025590 PreJIT
GalaSoft.MvvmLight.ObservableObject.add_PropertyChanging(System.ComponentModel.PropertyChangingEventHandler)

5002a4f8 500255a0 PreJIT
GalaSoft.MvvmLight.ObservableObject.remove_PropertyChanging(System.ComponentModel.PropertyChangingEventHandler)

5002a4b0 500255d0 PreJIT GalaSoft.MvvmLight.ObservableObject.RaisePropertyChanging(System.String)

5002a4c0 500255dc PreJIT
GalaSoft.MvvmLight.ObservableObject.RaisePropertyChanged(System.String)

5002a020 500255ec NONE
GalaSoft.MvvmLight.ObservableObject.RaisePropertyChanging(System.Linq.Expressions.Expression`1<System.Func`1<!!0>>)

5002a040 50025600 NONE
GalaSoft.MvvmLight.ObservableObject.RaisePropertyChanged(System.Linq.Expressions.Expression`1<System.Func`1<!!0>>)

5002a530 50025770 PreJIT
GalaSoft.MvvmLight.ViewModelBase.Cleanup()

5002a050 5002577c NONE
GalaSoft.MvvmLight.ViewModelBase.Broadcast(!!0, !!0, System.String)

5002a068 50025790 NONE
GalaSoft.MvvmLight.ViewModelBase.RaisePropertyChanged(System.String, !!0, !!0,
Boolean)

5002a058 500257a4 NONE GalaSoft.MvvmLight.ViewModelBase.RaisePropertyChanged(System.Linq.Expressions.Expression`1<System.Func`1<!!0>>,
!!0, !!0, Boolean)

2f77b950 2f761308 PreJIT
Minesweeper.MvvmStructure.Model.ChooseBoardDataSource..ctor()

2f77b9d0 2f761318 PreJIT
Minesweeper.MvvmStructure.Model.ChooseBoardDataSource.Init()

2f77b960 2f76132c PreJIT
Minesweeper.MvvmStructure.Model.ChooseBoardDataSource.InitDesign()

2f77ba10 2f761340 PreJIT
Minesweeper.MvvmStructure.Model.ChooseBoardDataSource.MakeMaxMinesPlacement()

2f77b970 2f761354 PreJIT
Minesweeper.MvvmStructure.Model.ChooseBoardDataSource.SaveSettings()

2f77b9e0 2f761364 PreJIT
Minesweeper.MvvmStructure.Model.ChooseBoardDataSource.LoadSettings()

2f77b980 2f761378 PreJIT
Minesweeper.MvvmStructure.Model.ChooseBoardDataSource.CheckMinesMaxCount()

2f77ba30 2f76138c PreJIT
Minesweeper.MvvmStructure.Model.ChooseBoardDataSource.CheckInputValue(Int32,
Int32, Int32)

2f77b990 2f76139c PreJIT
Minesweeper.MvvmStructure.Model.ChooseBoardDataSource.get_BoardWidthMax()

2f77b9f0 2f7613ac PreJIT
Minesweeper.MvvmStructure.Model.ChooseBoardDataSource.get_BoardHeightMax()

2f77b9a0 2f7613bc PreJIT
Minesweeper.MvvmStructure.Model.ChooseBoardDataSource.get_SizeMinimum()

2f77ba20 2f7613cc PreJIT
Minesweeper.MvvmStructure.Model.ChooseBoardDataSource.get_MinesCountMin()

2f77b9b0 2f7613dc PreJIT
Minesweeper.MvvmStructure.Model.ChooseBoardDataSource.get_MinesText()

2f77ba00 2f7613f0 PreJIT
Minesweeper.MvvmStructure.Model.ChooseBoardDataSource.get_WidthText()

2f77b9c0 2f761404 PreJIT
Minesweeper.MvvmStructure.Model.ChooseBoardDataSource.get_HeightText()

2f77ba40 2f761418 PreJIT
Minesweeper.MvvmStructure.Model.ChooseBoardDataSource.get_HomeContent()

2f77b948 2f76142c PreJIT
Minesweeper.MvvmStructure.Model.ChooseBoardDataSource.get_StartGameContent()

2f77b958 2f761440 PreJIT Minesweeper.MvvmStructure.Model.ChooseBoardDataSource.get_DynamicVisibility()

2f77b968 2f761450 PreJIT
Minesweeper.MvvmStructure.Model.ChooseBoardDataSource.set_DynamicVisibility(Windows.UI.Xaml.Visibility)

2f77b978 2f761464 PreJIT
Minesweeper.MvvmStructure.Model.ChooseBoardDataSource.get_DynamicCanvasWidth()

2f77b988 2f761474 PreJIT
Minesweeper.MvvmStructure.Model.ChooseBoardDataSource.get_DynamicCanvasHeight()

2f77b998 2f761484 PreJIT
Minesweeper.MvvmStructure.Model.ChooseBoardDataSource.get_BoardWidth()

2f77b9a8 2f761494 PreJIT
Minesweeper.MvvmStructure.Model.ChooseBoardDataSource.set_BoardWidth(Int32)

2f77b9b8 2f7614a8 PreJIT
Minesweeper.MvvmStructure.Model.ChooseBoardDataSource.get_BoardHeight()

2f77b9c8 2f7614b8 PreJIT
Minesweeper.MvvmStructure.Model.ChooseBoardDataSource.set_BoardHeight(Int32)

2f77b9d8 2f7614cc PreJIT
Minesweeper.MvvmStructure.Model.ChooseBoardDataSource.get_MinesCount()

2f77b9e8 2f7614dc PreJIT
Minesweeper.MvvmStructure.Model.ChooseBoardDataSource.set_MinesCount(Int32)

2f77b9f8 2f7614f0 PreJIT Minesweeper.MvvmStructure.Model.ChooseBoardDataSource.get_MinesCountMax()

2f77ba08 2f761500 PreJIT
Minesweeper.MvvmStructure.Model.ChooseBoardDataSource.set_MinesCountMax(Int32)

2f77ba18 2f761514 PreJIT
Minesweeper.MvvmStructure.Model.ChooseBoardDataSource.get_DynamicTiles()

2f77ba28 2f761524 PreJIT
Minesweeper.MvvmStructure.Model.ChooseBoardDataSource.UpdateTiles()

2f77ba38 2f761538 PreJIT
Minesweeper.MvvmStructure.Model.ChooseBoardDataSource.GenerateTiles()

2f77ba48 2f76154c PreJIT
Minesweeper.MvvmStructure.Model.ChooseBoardDataSource.GenerateRandomNumbers(Int32)

 

- Notice some interesting leads from above like GenerateRandomNumbers, get_MinesCount, StartGameContent, etc...

 

- The idea of using Random number generators as a starting point is valid, however, after browsing the source looking for methods, types, or constants containing the word Cheat, I realized the job was already done by the developers! :-)

 

- Using ILSpy search for Cheat.

 

- Easier than what I was thinking... Methods like CheckCheatsHotKeys and CheatShowBombs are interesting.

 

- IMPORTANT! Our goal is not to find out the key combinations to activate cheats. We want to force the application to do what we want!

 

- CheatShowBombs():

 

//
Minesweeper.MvvmStructure.View.Controls.SettingsControl

private void CheatShowBombs(object sender, RoutedEventArgs e)

{

          MinesweeperCheats.PlaceFlagsOnBombs();

}

 

 

- MinesweeperUI.data -> MinesweeperCheats:

 

// MinesweeperUI.data.MinesweeperCheats

public static void PlaceFlagsOnBombs()

{

          IEngine minesweeperEngine = MinerApp.Instance.MinesweeperEngine;

          if(minesweeperEngine == null)

          {

                    return;

          }

          foreach(List<ITile> current in minesweeperEngine.get_Tiles())

          {

                    foreach(ITile current2 in current)

                    {

                              if(current2.get_IsBomb() && current2.get_State() != 2)

                              {

                                        current2.SetState(2, 1, false);

                              }

                              else

                              {

                                        if(!current2.get_IsBomb() && (current2.get_State() == 3 || current2.get_State() == 2))

                                        {

                                                  current2.MakeMarkByState(0, 0);

                                        }

                              }

                    }

          }

}

 

 

!name2ee *!PlaceFlagsOnBombs

 

. . .

. . .

. . .

--------------------------------------

Module: 0f971000

Assembly: MinesweeperUI-DP4.DLL

. . .

. . .

. . .

 

!dumpmodule -mt 0f971000

Name:      
C:\Program
Files\WindowsApps\Microsoft.MicrosoftMinesweeper_2.2.1401.2303_x86__8wekyb3d8bbwe\MinesweeperUI-DP4.DLL

Attributes: PEFile

Assembly:  
04e3d848

LoaderHeap: 00000000

TypeDefToMethodTableMap: 0fad8738

TypeRefToMethodTableMap: 0f9a8754

MethodDefToDescMap: 0fad8a28

FieldDefToDescMap: 0f9a8e5c

MemberRefToDescMap: 00000000

FileReferencesMap: 0f9713b0

AssemblyReferencesMap: 0f9713b4

MetaData start address: 0f9f0f5c (245784 bytes)

 

Types defined in this module

 

     
MT TypeDef Name

------------------------------------------------------------------------------

0fab0e4c 0x02000002
MinesweeperUI.ContentLoadingController

0fab117c 0x02000003
MinesweeperUI.data.Awards.AchievementManager

0fab276c 0x02000004
MinesweeperUI.data.Awards.AchievementDesc

0faa7d38 0x02000005
MinesweeperUI.data.Awards.AwardTypes

0fab27a4 0x02000006 MinesweeperUI.data.Awards.AwardsManager

0faa7dfc 0x02000007
MinesweeperUI.data.Awards.Types.IAwardControl

0fab27d8 0x02000008
MinesweeperUI.data.Awards.Types.Collect3Map5Pick5Dynamit

0fab2834 0x02000009
MinesweeperUI.data.Awards.Types.SawGoldSurroundedTrips

0fab2868 0x0200000a
MinesweeperUI.data.Awards.Types.NoGoldGathered

0fab28b0 0x0200000b
MinesweeperUI.data.Awards.Types.Destroy100Traps

0fab28f8 0x0200000c
MinesweeperUI.data.Awards.Types.HateSnacks

0fab2a50 0x0200000d
MinesweeperUI.data.Awards.Types.UseMap3Times

0fab2a98 0x0200000e
MinesweeperUI.data.Awards.Types.UsePickaxe7Times

0fab2acc 0x0200000f
MinesweeperUI.data.Awards.Types.DigsAllTilesWithoutTraps

0fab2b28 0x02000010
MinesweeperUI.data.Awards.Types.Lose3LivesNearExit

0fab2b70 0x02000011 MinesweeperUI.data.Awards.Types.Grandmaster

0fab2ba4 0x02000012
MinesweeperUI.data.Awards.Types.Gather10000gold

0fab2bec 0x02000013
MinesweeperUI.data.Awards.Types.Open100Doors

0fab16e8 0x02000014
MinesweeperUI.data.Awards.Types.AchievementsControlFactory

0fab2c34 0x02000015
MinesweeperUI.data.Awards.Types.AllBoardsWinAward

0fab2c7c 0x02000016
MinesweeperUI.data.Awards.Types.ReachExit20Award

0fab2cc4 0x02000017
MinesweeperUI.data.Awards.Types.Monster100HunterAward

0fab1808 0x02000018
MinesweeperUI.data.Awards.Types.CatchedClassicPattern

0fab2d20 0x02000019
MinesweeperUI.data.Awards.Types.PlayDailyChallenge5Days

0fab2d54 0x0200001a
MinesweeperUI.data.Awards.Types.Win10SilverBadges

0fab2db0 0x0200001b
MinesweeperUI.data.Awards.Types.Win12BronzeBadges

0fab2de4 0x0200001c
MinesweeperUI.data.Awards.Types.Win8GoldBadges

0fab2e40 0x0200001d
MinesweeperUI.data.Awards.Types.WinEveryDayInMonth

0fab2e74 0x0200001e
MinesweeperUI.data.Awards.Types.ExpertFlagsAllAndLose

0fab2ebc 0x0200001f
MinesweeperUI.data.Awards.Types.Find50LadyBugs

0fab2f18 0x02000020
MinesweeperUI.data.Awards.Types.Disarm1000Mines

0fab2f4c 0x02000021
MinesweeperUI.data.Awards.Types.RemoveQuesAndLose

0fab2fcc 0x02000022
MinesweeperUI.data.Awards.Types.Win3ChordFlag

0fab3014 0x02000023 MinesweeperUI.data.Awards.Types.WinEasyIn30

0fab3070 0x02000024
MinesweeperUI.data.Awards.Types.Scored100000

0fab30b8 0x02000025
MinesweeperUI.data.Awards.Types.Uncovered1000Tiles

0fab3100 0x02000026
MinesweeperUI.data.Awards.Types.Place100Flags

0fab3148 0x02000027 MinesweeperUI.data.Awards.Types.LoseGame2Taps

0fab317c 0x02000028
MinesweeperUI.data.Awards.Types.OpenTileWith6MinesNear

0fab31c4 0x02000029
MinesweeperUI.data.Awards.Types.PlaceFlagOnEveryTile

0fab3220 0x0200002a
MinesweeperUI.data.Awards.Types.Win1DailyChallenge

0fab3268 0x0200002b
MinesweeperUI.data.Awards.Types.Played1DailyChallenge

0fab32b0 0x0200002c
MinesweeperUI.data.Awards.Types.TriggerFirstMineAward

0fab32e4 0x0200002d
MinesweeperUI.data.Awards.Types.FirstWinAward

0fab332c 0x0200002e
MinesweeperUI.data.Awards.Types.DefaultAward

0fab3388 0x0200002f
MinesweeperUI.data.Awards.Types.WinWithoutFlagsAward

0fab33bc
0x02000030 MinesweeperUI.data.MinesweeperCheats                   

0fab33e8 0x02000031 MinesweeperUI.data.CheatAward

0fab3414 0x02000032 MinesweeperUI.data.DailychallengeDataHeap

0faa7ec4 0x02000033
MinesweeperUI.data.DailyChallenge.OnLoadedComplete

0fab11e8 0x02000034
MinesweeperUI.data.DailyChallenge.DataManager

0faa7f3c 0x02000035
MinesweeperUI.data.Descriptions.LeaderboardTypes

0fab1c90 0x02000036 MinesweeperUI.data.LeveldataChecks

0faa7f74 0x02000037
MinesweeperUI.data.ILeveldataCheck

0fab3490 0x02000038
MinesweeperUI.data.UncoverModeLeveldataCheck

0fab34d8 0x02000039
MinesweeperUI.data.EmptyLeveldataCheck

0fab1414 0x0200003a
MinesweeperUI.data.Session.MinesweeperExternalSettings

0fab1440 0x0200003b
MinesweeperUI.data.Session.OptinSettings

0fab350c 0x0200003c
MinesweeperUI.data.Utils.LeaderboardUtils

0fab3544 0x0200003d
MinesweeperUI.data.LevelParamDefinition

0fab1c64 0x0200003e
MinesweeperUI.data.LevelDefinition

0faa7fa8 0x0200003f
MinesweeperUI.data.LivetilesTag

0faa7fe0 0x02000040 MinesweeperUI.data.Sounds

0faa8018 0x02000041
MinesweeperUI.data.MinesweeperDifficulties

0fab11a8 0x02000042 MinesweeperUI.data.DataHeap

0fab3574 0x02000043 MinesweeperUI.data.Event.SwitchTabSystem

0fab35a4 0x02000044
MinesweeperUI.data.Event.ExternalSettingsUpdated

0fab35d0 0x02000045
MinesweeperUI.data.Event.WinIterationAnimationCompletedEvent

0fab3600 0x02000046
MinesweeperUI.data.Event.TimeForNextIterationEvent

0fab3630 0x02000047
MinesweeperUI.data.Event.ShowAdsByOptInEvent

0fab3660 0x02000048
MinesweeperUI.data.Event.ShowGameplayEvent

0fab3690 0x02000049
MinesweeperUI.data.Event.AppChangingSize

0fab36c0 0x0200004a
MinesweeperUI.data.Event.CustomSettingsStartedGame

0fab36f0 0x0200004b
MinesweeperUI.data.Event.GameoverMessage

0fab3720 0x0200004c
MinesweeperUI.data.Event.UnregisterKeyboardEvents

0fab375c 0x0200004d
MinesweeperUI.data.Event.EngineStateUpdated

0fab378c 0x0200004e
MinesweeperUI.data.Event.NewCustomGameStartedMessage

0fab37bc 0x0200004f
MinesweeperUI.data.Event.UpdateAppbarsButtons

0fab37f8 0x02000050
MinesweeperUI.data.Event.SetAdventureLevelName

0fab3828 0x02000051
MinesweeperUI.data.Event.ChangeAdventureUiSize

0fab3858 0x02000052
MinesweeperUI.data.Event.ChangeClassicUiSize

0fab3888 0x02000053
MinesweeperUI.data.Event.SettingsChanged

0fab38c4 0x02000054
MinesweeperUI.data.Event.UseSpecialTool

0fab3900 0x02000055
MinesweeperUI.data.Event.CustomBoardSettingsChanged

0fab3930 0x02000056
MinesweeperUI.data.Event.ChangeGamePlayEvent

0fab3960 0x02000057
MinesweeperUI.data.Event.InputControlsChanged

0fab3990 0x02000058
MinesweeperUI.data.Event.InputControlsSwitched

0fab39c0 0x02000059
MinesweeperUI.data.Event.ShowHideControlsSwitcherButton

0fab39f0 0x0200005a MinesweeperUI.data.Event.UserClickAtBottomGamePlay

0faa8064 0x0200005b
MinesweeperUI.data.Event.OnSuspended

0faa80c8 0x0200005c
MinesweeperUI.data.Event.OnResumed

0faa812c 0x0200005d
MinesweeperUI.data.Event.OnGameLoadingStart

0faa8190 0x0200005e MinesweeperUI.data.Event.OnGameLoadingEnd

0fab3a2c 0x0200005f
MinesweeperUI.data.Event.GameEventsDispatcher

0faa81f4 0x02000060
MinesweeperUI.data.OnInitMinerApp

0faa8258 0x02000061
MinesweeperUI.data.OnInitGameInternal

0fab3a58 0x02000062
MinesweeperUI.data.AppBarsVisibilityMessage

0fab3a84 0x02000063
MinesweeperUI.data.ThemeInfoLoadedMessage

0fab3ab0 0x02000064
MinesweeperUI.data.DataManagerInfoLoadedMessage

0fab0e84 0x02000065 MinesweeperUI.data.MinerApp

0faa82a8 0x02000066
MinesweeperUI.data.Pages.AppCommands

0fab3ae8 0x02000067
MinesweeperUI.data.Pages.PageNavigationParam

0fab3b14 0x02000068
MinesweeperUI.data.Sentient.SentientTimeEvent

0faa82e0 0x02000069
MinesweeperUI.data.Sentient.LevelLanchPlace

0fab3b40 0x0200006a
MinesweeperUI.data.Sentient.LevelStartParams

0fab1da4 0x0200006b
MinesweeperUI.data.Sentient.MinesweeperSentientController

0faa8318 0x0200006c
MinesweeperUI.data.Sentient.SentientMenuIds

0faa8350 0x0200006d
MinesweeperUI.data.Sentient.SentientMicroGoodTypeId

0faa8388 0x0200006e
MinesweeperUI.data.Sentient.SentientModeIds

0faa83c0 0x0200006f
MinesweeperUI.data.Sentient.SentientOfferIds

0faa83f8 0x02000070
MinesweeperUI.data.Sentient.SentientSubMenu

0faa8430 0x02000071
MinesweeperUI.data.Sentient.SentientSubModeIds

0faa8468 0x02000072
MinesweeperUI.data.Sentient.SentientLevelIds

0faa84a0 0x02000073
MinesweeperUI.data.Sentient.SentientSubLevelIds

0faa84d8 0x02000074
MinesweeperUI.data.Sentient.SentientLevelExitProgressStart

0faa8510 0x02000075
MinesweeperUI.data.Sentient.UpsellId

0faa8548 0x02000076 MinesweeperUI.data.Sentient.AchievementId

0fab13dc 0x02000077
MinesweeperUI.data.Sentient.SentientUtils

0faa8580 0x02000078
MinesweeperUI.data.Sentient.SentientEventByTime

0faa85cc 0x02000079
MinesweeperUI.data.Session.OnChangedOptinSettings

0faa861c 0x0200007a MinesweeperUI.data.Session.IGameModeData

0fab2444 0x0200007b
MinesweeperUI.data.Session.AdventureModeData

0fab13b0 0x0200007c
MinesweeperUI.data.Session.GameModeStorage

0fab3b88 0x0200007d
MinesweeperUI.data.Session.DailyChallengeModeData

0fab344c 0x0200007e MinesweeperUI.data.Session.ChallengeDescriptionData

0fab1d6c 0x0200007f
MinesweeperUI.data.Session.GameModeDataFactory

0fab1478 0x02000080
MinesweeperUI.data.Session.SettingsStorage

0fab3c74 0x02000081
MinesweeperUI.data.Session.ClassicGameModeData

0faa8698 0x02000082
MinesweeperUI.data.Session.OnGameModeWillChange

0faa86fc 0x02000083
MinesweeperUI.data.Session.OnGameModeChanged

0faa8760 0x02000084
MinesweeperUI.data.Session.OnDataCompleted

0fab110c 0x02000085
MinesweeperUI.data.Session.UserSession

0fab3cb0 0x02000086
Minesweeper.MvvmStructure.Helpers.ShareManager

0faa87b0 0x02000087
Minesweeper.MvvmStructure.Helpers.ShareManager+MessageType

0fab3cdc 0x02000088
MinesweeperUI.data.Utils.BoardConstants

0fab3d08 0x02000089
MinesweeperUI.data.Utils.MinesweeperUtils

0fab3d40 0x0200008a
MinesweeperUI.data.Utils.AdventureStatisticMergeOperation

0fab3d80 0x0200008b
MinesweeperUI.data.Utils.MinesweeperEngineUtils

0fab296c 0x0200008c
MinesweeperUI.data.Utils.Statistics.ClassicStatisticHelper

0fab3dcc 0x0200008d MinesweeperUI.data.Utils.ClassicStatisticMergeOperation

0fab3e04 0x0200008e
MinesweeperUI.data.Utils.MergeOldToNewStatistics

0fab2940 0x0200008f
MinesweeperUI.data.Utils.StatisticUtils

0fab29a0 0x02000090
MinesweeperUI.data.Utils.TextsUtils

0fab3e30 0x02000091 MinesweeperUI.data.Utils.UiUtils

0fab3e5c 0x02000092 MinesweeperUI.data.GuiRates

0fab1144 0x02000093
MinesweeperUI.data.GuiFrameRateManager

0fab3e94 0x02000094
MinesweeperUI.data.ViewSettings

0fab4070 0x02000095 MinesweeperUI.GameView

0fab7058 0x02000096 MinesweeperUI.Livetiles.LivetileCommands

0fab6850 0x02000097
MinesweeperUI.Modes.Common.Animations.MinerAnimatedSpriteNode

0fab6ac8 0x02000098
MinesweeperUI.Modes.Common.Animations.AdvancedMinerAnimatedSpriteNode

0faa87e8 0x02000099
MinesweeperUI.Modes.Common.Animations.AnimationSequence.ISequence

0fab713c 0x0200009a
MinesweeperUI.Modes.Common.Animations.AnimationSequence.BaseAnimation

0fab71b4 0x0200009b
MinesweeperUI.Modes.Common.Animations.AnimationSequence.BaseClassicAnimation

0fab7244 0x0200009c MinesweeperUI.Modes.Common.Animations.AnimationSequence.Lose.BaseLoseAnimation

0fab72ac 0x0200009d
MinesweeperUI.Modes.Common.Animations.AnimationSequence.Lose.BaseLoseAnimationFlower

0fab7354 0x0200009e
MinesweeperUI.Modes.Common.Animations.AnimationSequence.Lose.LoseAnimationFlower

0fab73b0 0x0200009f
MinesweeperUI.Modes.Common.Animations.AnimationSequence.Lose.TreasureLoseAnimationFlower

0fab7464 0x020000a0
MinesweeperUI.Modes.Common.Animations.AnimationSequence.Lose.LoseAnimation

0fab7500 0x020000a1 MinesweeperUI.Modes.Common.Animations.AnimationSequence.Lose.TreasureLoseAnimation

0fab754c 0x020000a2
MinesweeperUI.Modes.Common.Animations.AnimationSequence.AdventureWinAnimation

0fab75b4 0x020000a3
MinesweeperUI.Modes.Common.Animations.AnimationSequence.Win.BaseWinAnimation

0fab7628 0x020000a4
MinesweeperUI.Modes.Common.Animations.AnimationSequence.Win.BaseWinAnimationFlower

0fab76b0 0x020000a5
MinesweeperUI.Modes.Common.Animations.AnimationSequence.Win.WinShortAnimationFlower

0fab7730 0x020000a6 MinesweeperUI.Modes.Common.Animations.AnimationSequence.Win.WinAnimationFlower

0fab7bbc 0x020000a7
MinesweeperUI.Modes.Common.Animations.AnimationSequence.Win.TreasureWinAnimationFlower

0fab7c4c 0x020000a8
MinesweeperUI.Modes.Common.Animations.AnimationSequence.Win.WinShortAnimation

0fab7cd4 0x020000a9
MinesweeperUI.Modes.Common.Animations.AnimationSequence.Win.WinAnimation

0fab7db0 0x020000aa
MinesweeperUI.Modes.Common.Animations.AnimationSequence.Win.TreasureWinAnimation

0fab6c28 0x020000ab
MinesweeperUI.Modes.Common.Animations.FollowedAnimatedSpriteNode

0fab6edc 0x020000ac
MinesweeperUI.Modes.Common.Animations.FollowedParticleEffectNode

0fab1d08 0x020000ad
MinesweeperUI.Modes.Common.Animations.MinerSpriteSheetAnimation

0fab6a38 0x020000ae
MinesweeperUI.Modes.Common.Messages.OptInPopupCodeBehind

0faa8854 0x020000af
MinesweeperUI.Modes.Common.Messages.OptInPopupCodeBehind+PopupButtonPressedEventHandler

0fab57a8 0x020000b0
MinesweeperUI.Modes.Common.View.DailyChallengeController

0faa88a4 0x020000b1
MinesweeperUI.Modes.Gameend.Handlers.IGameendHandler

0fab7e00 0x020000b2
MinesweeperUI.Modes.Gameend.Handlers.ClassicGameendHandler

0fab7e48 0x020000b3
MinesweeperUI.Modes.Gameend.Handlers.AdventureGameendHandler

0fab7e90 0x020000b4
MinesweeperUI.Modes.Gameend.Handlers.DailyChallengeGameendHandler

0fab7ed8 0x020000b5
MinesweeperUI.Modes.Gameend.Handlers.DefaultGameendHandler

0fab7f0c 0x020000b6
MinesweeperUI.Modes.Gameend.Handlers.GameendHandlersFactory

0fab426c 0x020000b7
MinesweeperUI.Modes.ModeEnginesFactory

0fab7f38 0x020000b8 Modes.Classic.AnimationCompleted

0faa88d8 0x020000b9
MinesweeperUI.Modes.Common.View.IEngineView

0fab4d20 0x020000ba
MinesweeperUI.Modes.Common.View.BasicEngineView

0fab4768 0x020000bb
Modes.Classic.ClassicEngineView

0faa8988 0x020000bc
MinesweeperUI.Modes.Common.View.ITileView

0fab5280 0x020000bd
MinesweeperUI.Modes.Common.View.BasicTileView

0fab5654 0x020000be Modes.Classic.ClassicTileView

0fab69c8 0x020000bf
MinesweeperUI.Modes.Common.View.TileBackController

0fab4e04 0x020000c0
MinesweeperUI.Modes.Common.Animations.AnimationSequenceManager

0fab653c 0x020000c1
MinesweeperUI.Modes.Common.Animations.ProgrammingAnimationsFactory

0faa8a54 0x020000c2
MinesweeperUI.Modes.Common.Animations.AnimationSequence.OnAnimationComplete

0fab7f84 0x020000c3
MinesweeperUI.Modes.Common.Animations.AnimationSequence.StartAnimation.UpDownAppearingSequenceClassic

0fab7ac8 0x020000c4
MinesweeperUI.Modes.Common.Animations.AnimationSequence.Win.WinSequence

0fab783c 0x020000c5
MinesweeperUI.Modes.Common.Animations.Effects.EffectTrailParticles

0faa8aa4 0x020000c6
MinesweeperUI.Modes.Common.Animations.Effects.IEffectPath

0fab7b68 0x020000c7
MinesweeperUI.Modes.Common.Animations.Effects.PathBackToFront

0fab7b14 0x020000c8
MinesweeperUI.Modes.Common.Animations.Effects.PathSpiral

0faa8aec 0x020000c9 MinesweeperUI.Modes.Gameend.OnPlayNewLevel

0faa8b50 0x020000ca
MinesweeperUI.Modes.Gameend.OnRestartLevel

0faa8bb4 0x020000cb
MinesweeperUI.Modes.Gameend.OnGoHome

0faa8c18 0x020000cc
MinesweeperUI.Modes.Gameend.OnViewBoard

0fab8000 0x020000cd MinesweeperUI.Modes.Gameend.GameendController

0fab2714 0x020000ce
MinesweeperUI.Modes.Common.InputController.Base.BaseInputController

0fab802c 0x020000cf
MinesweeperUI.Modes.Common.InputController.InputControllerParams

0faa8c68 0x020000d0
MinesweeperUI.Modes.Common.InputController.InputControllerTypes

0fab1fb4 0x020000d1
MinesweeperUI.Modes.Common.InputController.InputControllersFactory

0faa8ca0 0x020000d2
MinesweeperUI.Modes.Common.InputController.IInputController

0fab269c 0x020000d3
MinesweeperUI.Modes.Common.InputController.HoldToFlagInputController

0faa8d04 0x020000d4
MinesweeperUI.Modes.Common.InputController.SwipeType

0fab25d4 0x020000d5
MinesweeperUI.Modes.Common.InputController.SwipeInputController

0fab2658 0x020000d6
MinesweeperUI.Modes.Common.InputController.TapToFlagInputController

0fab8064 0x020000d7
MinesweeperUI.Modes.Common.InputController.SimpleInputController

0fab80c8 0x020000d8
MinesweeperUI.Modes.Common.InputController.StateInputController

0faa8d3c 0x020000d9 MinesweeperUI.data.GameType

0faa8d74 0x020000da MinesweeperUI.data.ScoreBarTypes

0faa8dac 0x020000db
MinesweeperUI.data.GameEndHandlerTypes

0fab1d40 0x020000dc
MinesweeperUI.data.ModeDescription

0fab1378 0x020000dd
MinesweeperUI.data.ModeDescriptionFactory

0faa8df8 0x020000de MinesweeperUI.Modes.Common.View.OnStateChanged

0faa8e5c 0x020000df
MinesweeperUI.Modes.Common.View.OnAnimationComplete

0fab8120 0x020000e0
MinesweeperUI.Modes.Common.View.BoardManipulationsParams

0fab5b30 0x020000e1
MinesweeperUI.Modes.Common.View.ClicksController

0fab6474 0x020000e2
MinesweeperUI.Modes.Common.View.DraggingController

0fab6404 0x020000e3
MinesweeperUI.Modes.Common.View.Controls.HightLightTileControl

0fab64c0 0x020000e4
MinesweeperUI.Modes.Common.View.InputPointsController

0fab64f8 0x020000e5 MinesweeperUI.Modes.Common.View.KeyboardController

0fab643c 0x020000e6
MinesweeperUI.Modes.Common.View.ScalingController

0fab5f80 0x020000e7
MinesweeperUI.Modes.Common.View.ScrollingControl

0fab76e8 0x020000e8
MinesweeperUI.Modes.Common.View.TileViewEx

0fab8180 0x020000e9 MinesweeperUI.Modes.Common.View.EmptyTileView

0faa8eac 0x020000ea MinesweeperUI.data.MinerModes

0fab82d4 0x020000eb
MinesweeperUI.Modes.Views.ClassicDailyChallengeTileView

0fab6b6c 0x020000ec
MinesweeperUI.Modes.Common.View.TutorialAnimation

0fab6574 0x020000ed MinesweeperUI.Modes.Common.View.TutorialAnimController

0faa8ee4 0x020000ee
MinesweeperUI.Modes.PathFinder.Animations.IInfoAnimation

0fab4e6c 0x020000ef
MinesweeperUI.Modes.PathFinder.Animations.InfoAnimation

0faa8f54 0x020000f0
MinesweeperUI.Modes.PathFinder.Animations.InfoAnimation+InfoAnimationEventHandler

0fab8394 0x020000f1
MinesweeperUI.Modes.PathFinder.Animations.FlyToUiInfoAnimation

0fab8428 0x020000f2
MinesweeperUI.Modes.PathFinder.Animations.InfoAnimationColors

0fab6338 0x020000f3 MinesweeperUI.Modes.PathFinder.Animations.LevelNumberAnimation

0fab8490 0x020000f4
MinesweeperUI.Modes.PathFinder.Animations.NextLevelAnimation

0fab57e0 0x020000f5
MinesweeperUI.Modes.PathFinder.AdventureOptInLogic

0fab8828 0x020000f6
MinesweeperUI.Modes.Views.PathFinder.PathFinderContentState

0fab5b98 0x020000f7
MinesweeperUI.Modes.PathFinder.PathFinderKeyboardController

0fab5fcc 0x020000f8
MinesweeperUI.Modes.PathFinder.Controls.PathFinderScrollingController

0fab5e24 0x020000f9
MinesweeperUI.Modes.PathFinder.ExitNode

0fab59c0 0x020000fa
MinesweeperUI.Modes.PathFinder.ManNode

0faa8fb8 0x020000fb
MinesweeperUI.Modes.PathFinder.ManNode+AnimationCompletedEvent

0fab48f8 0x020000fc
MinesweeperUI.Modes.PathFinder.PathFinderEngineView

0fab88e4 0x020000fd MinesweeperUI.Modes.PathFinder.PathFinderTileView

0fab8a2c 0x020000fe
MinesweeperUI.Modes.PathFinder.TileBreakingEffectFactory

0fab8a7c 0x020000ff
MinesweeperUI.Modes.Treasure.TreasureEngineView

0fab8ba0 0x02000100
MinesweeperUI.Modes.Treasure.TreasureTileView

0faa9008 0x02000101 MinesweeperUI.theme.MinesweeperThemeIds

0fab0ebc 0x02000102 MinesweeperUI.theme.Theme

0faa90a8 0x02000103
MinesweeperUI.theme.OnThemeChanged

0faa910c 0x02000104
MinesweeperUI.theme.OnThemeLoaded

0fab10cc 0x02000105 MinesweeperUI.theme.ThemeSets

0fab8c44 0x02000106
MinesweeperUI.theme.ThemeSoundDesc

0fab8c7c 0x02000107
MinesweeperUI.theme.ThemeTextureDesc

0fab1cc8 0x02000108
MinesweeperUI.theme.AnimationObjectDesc

0fab134c 0x02000109
MinesweeperUI.theme.ThemesUtils

0faa9228 0x0200010a MinesweeperUI.Tutorial.ITutorialAction

0fab8cc8 0x0200010b
MinesweeperUI.Tutorial.Actions.RunClassicFirstBoardAction

0fab8d20 0x0200010c
MinesweeperUI.Tutorial.ForceOpenTilesTutorialAction

0fab8d78 0x0200010d
MinesweeperUI.Tutorial.HighlightAdventureTileTutorialAction

0fab8db8 0x0200010e
MinesweeperUI.Tutorial.HighlightUIElementTutorialAction

0fab8e04 0x0200010f
MinesweeperUI.Tutorial.Actions.ImplementUIRestrictions

0fab8e50 0x02000110
MinesweeperUI.Tutorial.Actions.WaitGameoverEventAction

0fab8ea8 0x02000111 MinesweeperUI.Tutorial.Actions.MinesChaos

0fab8ed4 0x02000112
MinesweeperUI.Tutorial.Actions.MinesChaosAction

0fab8f38 0x02000113
MinesweeperUI.Tutorial.Actions.ImplementRestrictionAction

0fab8f6c 0x02000114
MinesweeperUI.Tutorial.Actions.RunAdventureFirstBoardAction

0fab8fd0 0x02000115
MinesweeperUI.Tutorial.Actions.RunEasyModeWithHelperAction

0fab901c 0x02000116
MinesweeperUI.Tutorial.ShowMineTutorialAction

0fab9050 0x02000117
MinesweeperUI.Tutorial.HighLightTileTutorialAction

0fab90b4 0x02000118
MinesweeperUI.Tutorial.AddTutorialAnimationAction

0fab90e8 0x02000119
MinesweeperUI.Tutorial.TutorialActionFactory

0fab9114 0x0200011a
MinesweeperUI.Tutorial.DefaultTutorialAction

0faa962c 0x0200011b
MinesweeperUI.Tutorial.ITutorialSession

0fab4314 0x0200011c MinesweeperUI.Tutorial.EmptyTutorialSession

0faa96b8 0x0200011d
MinesweeperUI.Tutorial.IHintController

0fab916c 0x0200011e
MinesweeperUI.Tutorial.ClassicHintController

0fab9274 0x0200011f
MinesweeperUI.Tutorial.TutoriaForceCloseEvent

0fab92ac 0x02000120
MinesweeperUI.Tutorial.TutorialStepActivationEvent

0fab1a1c 0x02000121
MinesweeperUI.Tutorial.TutorialSessionData

0fab91dc 0x02000122
MinesweeperUI.Tutorial.TutorialSession

0faa98a4 0x02000123
MinesweeperUI.Tutorial.TutorialsId

0faa98dc 0x02000124
MinesweeperUI.Tutorial.ClassicTutorialSteps

0faa9914 0x02000125
MinesweeperUI.Tutorial.AdventureTutorialSteps

0fab92e4 0x02000126
MinesweeperUI.Tutorial.TutorialActionDesc

0fab1a54 0x02000127
MinesweeperUI.Tutorial.TutorialStepDesc

0faa99a4 0x02000128
MinesweeperUI.Tutorial.HideTutorialMessage

0faa9a08 0x02000129
MinesweeperUI.Tutorial.ShowTutorialMessage

0faa9a6c 0x0200012a
MinesweeperUI.Tutorial.SaveTutorialStep

0fab4240 0x0200012b
MinesweeperUI.Tutorial.TutorialManager

0fab9350 0x0200012c
MinesweeperUI.ContentLoadingController+<LoadModeContent>d__0

0fab93a4 0x0200012d
MinesweeperUI.ContentLoadingController+<SetModeTheme>d__3

0fab9410 0x0200012e
MinesweeperUI.data.Awards.AchievementManager+<LoadLocalAchievementsDesc>d__0

0fab948c 0x0200012f
MinesweeperUI.data.Awards.AchievementManager+<AddAchievements>d__9

0fab94c8 0x02000130
MinesweeperUI.data.Awards.AchievementManager+<>c__DisplayClasse

0fab9530 0x02000131
MinesweeperUI.data.Awards.AchievementManager+<AwardMedal>d__10

0fab1720 0x02000132
MinesweeperUI.data.Awards.AchievementManager+<>c__DisplayClass19

0fab9560 0x02000133
MinesweeperUI.data.Awards.AchievementManager+<>c__DisplayClass1d

0fab95c8 0x02000134
MinesweeperUI.data.Awards.AchievementManager+<AwardXBoxLiveAchievement>d__1f

0fab1758 0x02000135
MinesweeperUI.data.Awards.AchievementManager+<>c__DisplayClass2c

0fab964c 0x02000136
MinesweeperUI.data.Awards.AchievementManager+<>c__DisplayClass2c+<<UpdateAchievementTileOnAwardPage>b__2b>d__2e

0fab96a0 0x02000137
MinesweeperUI.data.Awards.AchievementManager+<GetSubTile>d__31

0fab1790 0x02000138 MinesweeperUI.data.Awards.AchievementManager+<>c__DisplayClass36

0fab9714 0x02000139
MinesweeperUI.data.Awards.AchievementManager+<>c__DisplayClass36+<<UpdateAchievementTileItemOnHomeScreen>b__35>d__38

0fab97a0 0x0200013a
MinesweeperUI.data.Awards.AchievementManager+<OnAchievementTileCreating>d__3d

0fab9804 0x0200013b
MinesweeperUI.data.Awards.AchievementManager+<GetAchievementStatus>d__42

0fab17bc 0x0200013c
MinesweeperUI.data.Awards.AchievementManager+<>c__DisplayClass46

0fab9850 0x0200013d MinesweeperUI.data.Awards.AchievementManager+<InitializeXboxAchievements>d__4a

0fab98bc 0x0200013e
MinesweeperUI.data.Awards.AchievementManager+<OnAllAchievementTileCreating>d__51

0fab9940 0x0200013f
MinesweeperUI.data.Awards.AwardsManager+<AddAwards>d__0

0faa9eec 0x02000140
<PrivateImplementationDetails>{A0AAC8B9-A758-4B3B-89C7-DB799DF859F9}

0fab2160 0x02000141
MinesweeperUI.data.Awards.Types.CatchedClassicPattern+<>c__DisplayClass1

0fab2fa0 0x02000142
MinesweeperUI.data.Awards.Types.RemoveQuesAndLose+<>c__DisplayClass1

0fab9994 0x02000143
MinesweeperUI.data.MinerApp+<<Initialize>b__0>d__1

0fab2484 0x02000144
MinesweeperUI.data.Sentient.MinesweeperSentientController+<>c__DisplayClass3

0fab9a18 0x02000145
MinesweeperUI.data.Session.GameModeStorage+<LoadGameModeSettings>d__0

0fab9a6c 0x02000146
MinesweeperUI.data.Session.GameModeStorage+<SaveGameModeSettings>d__6

0fab9ad8 0x02000147
MinesweeperUI.data.Session.UserSession+<SaveGameSettings>d__1

0fab9b5c 0x02000148
MinesweeperUI.data.Session.UserSession+<LoadGameSettings>d__5

0fab9bb0 0x02000149
MinesweeperUI.data.Session.UserSession+<SaveGameModeData>d__a

0fab9c34 0x0200014a
MinesweeperUI.data.Session.UserSession+<LoadGameModeData>d__d

0fab9c88 0x0200014b
MinesweeperUI.data.Session.UserSession+<LoadGameProgress>d__10

0fab9cf4 0x0200014c
MinesweeperUI.data.Session.UserSession+<LoadGameProgressInternal>d__13

0fab2a10 0x0200014d
MinesweeperUI.data.Utils.Statistics.ClassicStatisticHelper+<>c__DisplayClass7

0fab9d60 0x0200014e
MinesweeperUI.data.Utils.ClassicStatisticMergeOperation+<Save>d__0

0fab9dcc 0x0200014f
MinesweeperUI.data.Utils.MergeOldToNewStatistics+<Execute>d__0

0fab29d8 0x02000150
MinesweeperUI.data.Utils.StatisticUtils+<>c__DisplayClass1

0fab9e50 0x02000151
MinesweeperUI.GameView+<EngineOnGameOverEvent>d__1

0fab9ebc 0x02000152
MinesweeperUI.GameView+<MinesweeperEngineOnChangeState>d__8

0fab7084 0x02000153
MinesweeperUI.Livetiles.LivetileCommands+<>c__DisplayClass4

0fab9f10 0x02000154
MinesweeperUI.Livetiles.LivetileCommands+<ExpertRemove>d__6

0fab70bc 0x02000155 MinesweeperUI.Livetiles.LivetileCommands+<>c__DisplayClasse

0fab70e8 0x02000156
MinesweeperUI.Livetiles.LivetileCommands+<>c__DisplayClass12

0fab6ba4 0x02000157
MinesweeperUI.Modes.Common.Animations.MinerAnimatedSpriteNode+<>c__DisplayClass3

0fab6ff4 0x02000158 MinesweeperUI.Modes.Common.Animations.MinerAnimatedSpriteNode+<>c__DisplayClass7

0fab702c 0x02000159
MinesweeperUI.Modes.Common.Animations.AdvancedMinerAnimatedSpriteNode+<>c__DisplayClassb

0fab9f58 0x0200015a
MinesweeperUI.Modes.Gameend.Handlers.ClassicGameendHandler+<>c__DisplayClass2

0fab9fa8 0x0200015b
MinesweeperUI.Modes.Gameend.Handlers.ClassicGameendHandler+<Execute>d__4

0faba00c 0x0200015c
MinesweeperUI.Modes.Gameend.Handlers.AdventureGameendHandler+<Execute>d__1

0faba070 0x0200015d MinesweeperUI.Modes.Gameend.Handlers.DailyChallengeGameendHandler+<Execute>d__1

0faba0d4 0x0200015e
MinesweeperUI.Modes.Gameend.Handlers.DefaultGameendHandler+<Execute>d__1

0fab63cc 0x0200015f
MinesweeperUI.Modes.PathFinder.PathFinderEngineView+<>c__DisplayClass9

0faba140 0x02000160
MinesweeperUI.theme.ThemeSets+<LoadThemeXmlAsync>d__2

0faba1ac 0x02000161
MinesweeperUI.Tutorial.ClassicHintController+<Hint>d__0

0fab452c 0x02000162
MinesweeperUI.Tutorial.TutorialManager+<>c__DisplayClass1

 

Types referenced in this module

 

      MT   
TypeRef Name

------------------------------------------------------------------------------

604026a4 0x02000001 System.Object

604038c4 0x02000002 System.Enum

603f6770 0x02000003 System.MulticastDelegate

60403898 0x02000005 System.ValueType

5fffc6f4 0x02000008 System.IDisposable

603f7400 0x02000014 System.Action

603f6630 0x02000016 System.EventArgs

60407388 0x02000017
System.Collections.Generic.List`1

603f8600 0x02000019
System.Collections.Generic.Dictionary`2

603f76c4 0x0200001a System.Threading.Tasks.Task

603f7254 0x02000024 System.IAsyncResult

60403424 0x0200002d System.Type

306d440c 0x02000037
Windows.Devices.Input.PointerDeviceType

604068dc 0x02000038 System.DateTime

603f51bc 0x02000039 System.Nullable`1

603f833c 0x0200003a System.Collections.Generic.KeyValuePair`2

09a09bf8 0x02000045
Arkadium.GameEngine.Maths.Rectangle

603f4278 0x0200004a System.Random

0f53406c 0x0200004e
MinerCoreModul.engine.tile.ITile

09a05454 0x02000050
Arkadium.GameEngine.Maths.Vector2

09a04d9c 0x02000052 Arkadium.GameEngine.Maths.Vector3

603f4420 0x0200006a System.EventHandler

603f6b04 0x0200006b
System.Threading.CancellationTokenSource

60405538 0x02000071 System.IO.Stream

603fbe54 0x02000074
System.Runtime.Versioning.TargetFrameworkAttribute

60401e4c 0x02000075 System.Reflection.AssemblyTitleAttribute

60401ecc 0x02000076
System.Reflection.AssemblyDescriptionAttribute

60401e8c 0x02000077
System.Reflection.AssemblyConfigurationAttribute

60401f8c 0x02000078
System.Reflection.AssemblyCompanyAttribute

60401fcc 0x02000079 System.Reflection.AssemblyProductAttribute

60402044 0x0200007a
System.Reflection.AssemblyCopyrightAttribute

60402084 0x0200007b
System.Reflection.AssemblyTrademarkAttribute

604020c4 0x0200007e
System.Reflection.AssemblyFileVersionAttribute

60401b70 0x0200007f System.Diagnostics.DebuggableAttribute

60401c14 0x02000081
System.Runtime.CompilerServices.CompilationRelaxationsAttribute

604017ec 0x02000082
System.Runtime.CompilerServices.RuntimeCompatibilityAttribute

60401c7c 0x02000083
System.Runtime.CompilerServices.ExtensionAttribute

603fadb0 0x02000085
System.Runtime.CompilerServices.IAsyncStateMachine

603fa324 0x02000086
System.Runtime.CompilerServices.AsyncVoidMethodBuilder

603c9010 0x0200008d
System.Runtime.CompilerServices.TaskAwaiter

60402304 0x0200008e System.String

603cd08c 0x0200009b
System.Runtime.CompilerServices.CompilerGeneratedAttribute

603fa068 0x020000a1
System.Runtime.CompilerServices.AsyncTaskMethodBuilder

603f82b4 0x020000aa
System.Collections.IEnumerator

603fc2e8 0x020000ab System.UInt32

603f7400 0x020000b2 System.Action

5fffb5e4 0x020000c4
System.Collections.IEnumerable

60404904 0x020000cd
System.Globalization.CultureInfo

60403c54 0x020000e0 System.Int32

60404c54 0x020000e3 System.Text.StringBuilder

60403944 0x020000e4 System.Delegate

51279a10 0x020000e8
System.Runtime.Serialization.DataContractAttribute

51279c88 0x020000e9
System.Runtime.Serialization.DataMemberAttribute

603fb3c8 0x020000eb System.Single

603fb5a4 0x020000ec System.Double

60404650 0x020000ee System.Threading.Interlocked

603fa164 0x020000f0
System.Threading.Tasks.TaskFactory

604015d8 0x020000f6 System.UInt16

603f88cc 0x02000104
System.Runtime.InteropServices.WindowsRuntime.EventRegistrationToken

603fa3a0 0x02000106
System.Runtime.InteropServices.WindowsRuntime.WindowsRuntimeMarshal

603f79b4 0x02000108 System.NullReferenceException

60403424 0x02000117 System.Type

60404fcc 0x02000134
System.Globalization.NumberFormatInfo

603fb2b4 0x02000181 System.Int16

 

- Search for MinesweeperUI.data.MinesweeperCheats above and get the Method Table:

 

!dumpmt -md 0fab33bc

 

EEClass:       0f989e94

Module:        0f971000

Name:          MinesweeperUI.data.MinesweeperCheats

mdToken:     02000030

File:           
C:\Program
Files\WindowsApps\Microsoft.MicrosoftMinesweeper_2.2.1401.2303_x86__8wekyb3d8bbwe\MinesweeperUI-DP4.DLL

BaseSize:       
0xc

ComponentSize:  
0x0

Slots in VTable: 7

Number of IFaces in IFaceMap: 0

--------------------------------------

MethodDesc Table

   Entry
MethodDe JIT Name

6030a630 5fff801c PreJIT System.Object.ToString()

602ff750 5fff8024 PreJIT
System.Object.Equals(System.Object)

602ff380 5fff8044 PreJIT
System.Object.GetHashCode()

602ff040 5fff8058 PreJIT System.Object.Finalize()

0fa513c0 0f996c38 PreJIT
MinesweeperUI.data.MinesweeperCheats..ctor()

0f9ba728 0f996c10 PreJIT
MinesweeperUI.data.MinesweeperCheats.PlaceFlagsOnBombs()

0f9ba730 0f996c24 PreJIT
MinesweeperUI.data.MinesweeperCheats.PlaceQuestionsOnBombs()

 

 

 

 

-    Remember that the method below is an Event Handler as noted per its signature, so somewhere in the code this Event is being mapped and usually this is done earlier:

 

//
Minesweeper.MvvmStructure.View.Controls.SettingsControl

private void CheatShowBombs(object sender, RoutedEventArgs e)

{

          MinesweeperCheats.PlaceFlagsOnBombs();

}

 

- The initialization of handlers usually is done when the object is initialized so let's check the Public methods which could have been used to map the handlers:

 

  InitializeComponent()

  Connect()

 

//
Minesweeper.MvvmStructure.View.Controls.SettingsControl

[GeneratedCode("Microsoft.Windows.UI.Xaml.Build.Tasks",
" 4.0.0.0"), DebuggerNonUserCode]

public void InitializeComponent()

{

          if(this._contentLoaded)

          {

                    return;

          }

          this._contentLoaded = true;

          Application.LoadComponent(this, new Uri("ms-appx:///MvvmStructure/View/Controls/SettingsControl.xaml"), 0);

         this.SoundsSlider = (ExtendedSlider)base.FindName("SoundsSlider");

          this.TsTips = (ToggleSwitch)base.FindName("TsTips");

          this.TsTimer = (ToggleSwitch)base.FindName("TsTimer");

          this.TsQuestionMark = (ToggleSwitch)base.FindName("TsQuestionMark");

          this.TsOneTap = (ToggleSwitch)base.FindName("TsOneTap");

          this.TsQuickModeChange = (ToggleSwitch)base.FindName("TsQuickModeChange");

          this.TsUseSwipeInControls = (ToggleSwitch)base.FindName("TsUseSwipeInControls");

          this.TsGameEndAnimations = (ToggleSwitch)base.FindName("TsGameEndAnimations");

          this.HoldSlider = (ExtendedSlider)base.FindName("HoldSlider");

          this.btnResetSettings = (Button)base.FindName("btnResetSettings");

          this.btnResetStat = (Button)base.FindName("btnResetStat");

          this.cheatsGrid = (Grid)base.FindName("cheatsGrid");

          this.cheatAwardsList = (ComboBox)base.FindName("cheatAwardsList");

}

 

 

//
Minesweeper.MvvmStructure.View.Controls.SettingsControl

[GeneratedCode("Microsoft.Windows.UI.Xaml.Build.Tasks",
" 4.0.0.0"), DebuggerNonUserCode]

public void Connect(int
connectionId, object target)

{

          switch(connectionId)

          {

          case 1:

          {

                    RangeBase rangeBase = (RangeBase)target;

                    WindowsRuntimeMarshal.AddEventHandler<RangeBaseValueChangedEventHandler>(new
Func<RangeBaseValueChangedEventHandler,
EventRegistrationToken>(rangeBase.add_ValueChanged), new
Action<EventRegistrationToken>(rangeBase.remove_ValueChanged), new
RangeBaseValueChangedEventHandler(this.SoundsValueChanged));

                    ((ExtendedSlider)target).add_ValueChangeComplete(new
ExtendedSlider.ValueChangeCompleteHandler(this.SoundsSliderOnValueChangeComplete));

                    break;

          }

          case 2:

          {

                    ToggleSwitch toggleSwitch = (ToggleSwitch)target;

                    WindowsRuntimeMarshal.AddEventHandler<RoutedEventHandler>(new
Func<RoutedEventHandler, EventRegistrationToken>(toggleSwitch.add_Toggled),
new Action<EventRegistrationToken>(toggleSwitch.remove_Toggled), new
RoutedEventHandler(this.TipsOnOffToggled));

                    break;

          }

          case 3:

          {

                    ToggleSwitch  toggleSwitch2 = (ToggleSwitch)target;

                    WindowsRuntimeMarshal.AddEventHandler<RoutedEventHandler>(new
Func<RoutedEventHandler,
EventRegistrationToken>(toggleSwitch2.add_Toggled), new
Action<EventRegistrationToken>(toggleSwitch2.remove_Toggled), new
RoutedEventHandler(this.TimerOnOffToggled));

                    break;

          }

          case 4:

          {

                    ToggleSwitch toggleSwitch3 = (ToggleSwitch)target;

                    WindowsRuntimeMarshal.AddEventHandler<RoutedEventHandler>(new
Func<RoutedEventHandler,
EventRegistrationToken>(toggleSwitch3.add_Toggled), new
Action<EventRegistrationToken>(toggleSwitch3.remove_Toggled), new
RoutedEventHandler(this.QuestionMarkOnOffToggled));

                    break;

          }

          case 5:

          {

                    ToggleSwitch toggleSwitch4 = (ToggleSwitch)target;

                    WindowsRuntimeMarshal.AddEventHandler<RoutedEventHandler>(new
Func<RoutedEventHandler, EventRegistrationToken>(toggleSwitch4.add_Toggled),
new Action<EventRegistrationToken>(toggleSwitch4.remove_Toggled), new
RoutedEventHandler(this.OneTapOnOffToggled));

                    break;

          }

          case 6:

          {

                    ToggleSwitch toggleSwitch5 = (ToggleSwitch)target;

                    WindowsRuntimeMarshal.AddEventHandler<RoutedEventHandler>(new
Func<RoutedEventHandler,
EventRegistrationToken>(toggleSwitch5.add_Toggled), new
Action<EventRegistrationToken>(toggleSwitch5.remove_Toggled), new
RoutedEventHandler(this.QuickChangeOnOffToggled));

                    break;

          }

          case 7:

          {

                    ToggleSwitch toggleSwitch6 = (ToggleSwitch)target;

                    WindowsRuntimeMarshal.AddEventHandler<RoutedEventHandler>(new
Func<RoutedEventHandler,
EventRegistrationToken>(toggleSwitch6.add_Toggled), new
Action<EventRegistrationToken>(toggleSwitch6.remove_Toggled), new RoutedEventHandler(this.SwipeInControlsOnOffToggled));

                    break;

          }

          case 8:

          {

                    ToggleSwitch toggleSwitch7 = (ToggleSwitch)target;

                    WindowsRuntimeMarshal.AddEventHandler<RoutedEventHandler>(new
Func<RoutedEventHandler, EventRegistrationToken>(toggleSwitch7.add_Toggled),
new Action<EventRegistrationToken>(toggleSwitch7.remove_Toggled), new
RoutedEventHandler(this.OnOfGameEndAnimationsToggled));

                    break;

          }

          case 9:

          {

                    RangeBase rangeBase2 = (RangeBase)target;

                    WindowsRuntimeMarshal.AddEventHandler<RangeBaseValueChangedEventHandler>(new
Func<RangeBaseValueChangedEventHandler,
EventRegistrationToken>(rangeBase2.add_ValueChanged), new
Action<EventRegistrationToken>(rangeBase2.remove_ValueChanged), new
RangeBaseValueChangedEventHandler(this.HoldValueChanged));

                    ((ExtendedSlider)target).add_ValueChangeComplete(new
ExtendedSlider.ValueChangeCompleteHandler(this.SoundsSliderOnValueChangeComplete));

                    break;

          }

          case 10:

          {

                    FrameworkElement frameworkElement = (FrameworkElement)target;

                    WindowsRuntimeMarshal.AddEventHandler<SizeChangedEventHandler>(new
Func<SizeChangedEventHandler,
EventRegistrationToken>(frameworkElement.add_SizeChanged), new
Action<EventRegistrationToken>(frameworkElement.remove_SizeChanged), new
SizeChangedEventHandler(this.OnSize));

                    ButtonBase
buttonBase = (ButtonBase)target;

                    WindowsRuntimeMarshal.AddEventHandler<RoutedEventHandler>(new
Func<RoutedEventHandler, EventRegistrationToken>(buttonBase.add_Click),
new Action<EventRegistrationToken>(buttonBase.remove_Click), new
RoutedEventHandler(this.OnResetSettingsClick));

                    break;

          }

          case 11:

          {

                    FrameworkElement frameworkElement2 = (FrameworkElement)target;

                    WindowsRuntimeMarshal.AddEventHandler<SizeChangedEventHandler>(new
Func<SizeChangedEventHandler, EventRegistrationToken>(frameworkElement2.add_SizeChanged),
new Action<EventRegistrationToken>(frameworkElement2.remove_SizeChanged),
new SizeChangedEventHandler(this.OnSize));

                    ButtonBase
buttonBase2 = (ButtonBase)target;

                    WindowsRuntimeMarshal.AddEventHandler<RoutedEventHandler>(new
Func<RoutedEventHandler, EventRegistrationToken>(buttonBase2.add_Click),
new Action<EventRegistrationToken>(buttonBase2.remove_Click), new
RoutedEventHandler(this.OnResetStatisticClick));

                    break;

          }

          case 12:

          {

                    ButtonBase buttonBase3 = (ButtonBase)target;

                    WindowsRuntimeMarshal.AddEventHandler<RoutedEventHandler>(new
Func<RoutedEventHandler, EventRegistrationToken>(buttonBase3.add_Click),
new Action<EventRegistrationToken>(buttonBase3.remove_Click), new
RoutedEventHandler(this.CheatShowBombs));

                    break;

          }

          case 13:

          {

                    ButtonBase buttonBase4 = (ButtonBase)target;

                    WindowsRuntimeMarshal.AddEventHandler<RoutedEventHandler>(new
Func<RoutedEventHandler, EventRegistrationToken>(buttonBase4.add_Click),
new Action<EventRegistrationToken>(buttonBase4.remove_Click), new
RoutedEventHandler(this.CheatQuestionsOnBombs));

                    break;

          }

          case 14:

          {

                    ButtonBase buttonBase5 = (ButtonBase)target;

                    WindowsRuntimeMarshal.AddEventHandler<RoutedEventHandler>(new
Func<RoutedEventHandler, EventRegistrationToken>(buttonBase5.add_Click),
new Action<EventRegistrationToken>(buttonBase5.remove_Click), new
RoutedEventHandler(this.CheatPlus100FlaggedMines));

                    break;

          }

          case 15:

          {

                    ButtonBase buttonBase6 = (ButtonBase)target;

                    WindowsRuntimeMarshal.AddEventHandler<RoutedEventHandler>(new
Func<RoutedEventHandler, EventRegistrationToken>(buttonBase6.add_Click),
new Action<EventRegistrationToken>(buttonBase6.remove_Click), new
RoutedEventHandler(this.CheatPlus100UncoverSquares));

                    break;

          }

          case 16:

          {

                    ButtonBase buttonBase7 = (ButtonBase)target;

                    WindowsRuntimeMarshal.AddEventHandler<RoutedEventHandler>(new
Func<RoutedEventHandler, EventRegistrationToken>(buttonBase7.add_Click),
new Action<EventRegistrationToken>(buttonBase7.remove_Click), new
RoutedEventHandler(this.CheatPlus50Ladybugs));

                    break;

          }

          case 17:

          {

                    ButtonBase buttonBase8 = (ButtonBase)target;

                    WindowsRuntimeMarshal.AddEventHandler<RoutedEventHandler>(new
Func<RoutedEventHandler, EventRegistrationToken>(buttonBase8.add_Click),
new Action<EventRegistrationToken>(buttonBase8.remove_Click), new
RoutedEventHandler(this.CheatPlus100DestroyedTraps));

                    break;

          }

          case 18:

          {

                    ButtonBase buttonBase9 = (ButtonBase)target;

                    WindowsRuntimeMarshal.AddEventHandler<RoutedEventHandler>(new
Func<RoutedEventHandler, EventRegistrationToken>(buttonBase9.add_Click),
new Action<EventRegistrationToken>(buttonBase9.remove_Click), new
RoutedEventHandler(this.CheatShowPatterns));

                    break;

          }

          case 19:

          {

                    ButtonBase buttonBase10 = (ButtonBase)target;

                    WindowsRuntimeMarshal.AddEventHandler<RoutedEventHandler>(new
Func<RoutedEventHandler, EventRegistrationToken>(buttonBase10.add_Click),
new Action<EventRegistrationToken>(buttonBase10.remove_Click), new
RoutedEventHandler(this.CheatAward));

                    break;

          }

          }

          this._contentLoaded = true;

}

 

 

- We want to activate case 12 above.

 

 

###############################

#### DEMO #3

###############################

 

 

- So let's setup a breakpoint on the Connect() method.

 

!name2ee Minesweeper.exe CheatShowBombs

 

Module:     51dc1000

Assembly:  Minesweeper.exe

 

 

!dumpmodule -mt 51dc1000

 

Name:      
C:\Program
Files\WindowsApps\Microsoft.MicrosoftMinesweeper_2.2.1401.2303_x86__8wekyb3d8bbwe\Minesweeper.exe

Attributes: PEFile

Assembly:  
006869b0

LoaderHeap: 00000000

TypeDefToMethodTableMap: 51f01008

TypeRefToMethodTableMap: 51dea710

MethodDefToDescMap: 51f011bc

FieldDefToDescMap: 51deb2c0

MemberRefToDescMap: 00000000

FileReferencesMap: 51dc13b0

AssemblyReferencesMap: 51dc13b4

MetaData start address: 51e2b090 (289932 bytes)

 

Types defined in this module

 

     
MT TypeDef Name

------------------------------------------------------------------------------

51dc806c 0x02000002 Minesweeper.App

51ee0220 0x02000003
Minesweeper.BookmarkConfiguration

51ee0298 0x02000004 Minesweeper.XboxLiveConfiguration

51ee00ec 0x02000005
Minesweeper.IocRegistrationHelper

51ee02cc 0x02000006
Minesweeper.IocRegistrationHelper+ThemeUpdateHelper

51dc94d8 0x02000007 Minesweeper.LoaderPage

51ed8b0c 0x02000008 Minesweeper.ActivationState

51ee0158 0x02000009 Minesweeper.MinesweeperGame

51ed8bac 0x0200000a Minesweeper.SuspendReason

51ee58fc 0x0200000b
Minesweeper.MvvmStructure.Helpers.ExtendedTileItem

51ee61f8 0x0200000c
Minesweeper.MvvmStructure.Helpers.CollectionTileItem

51ee036c 0x0200000d Minesweeper.MvvmStructure.Helpers.CreditsInfo

51ed8be4 0x0200000e
Minesweeper.MvvmStructure.Helpers.GamesTileTemplates

51ee6278 0x0200000f
Minesweeper.MvvmStructure.Helpers.GamesTileItem

51ee62c4 0x02000010
Minesweeper.MvvmStructure.Helpers.HelpTileConst

51ed8c10 0x02000011
Minesweeper.MvvmStructure.Helpers.HelpTileConst+HelpIndex

51ed8c48 0x02000012
Minesweeper.MvvmStructure.Helpers.HelpTileConst+HelpIndexPosition

51ee6334 0x02000013
Minesweeper.MvvmStructure.Helpers.HelpTileItem

51ed8c80 0x02000014 Minesweeper.MvvmStructure.Helpers.IMinesweeperPopup

51ed8cbc 0x02000015
Minesweeper.MvvmStructure.Helpers.IScoreBar

51dc88c0 0x02000016
Minesweeper.MvvmStructure.Helpers.ItemDataTemplateSelector

51ed8cf8 0x02000017
Minesweeper.MvvmStructure.Helpers.ItemDataTemplateSelector+ItemTemplate

51ed8d44 0x02000018
Minesweeper.MvvmStructure.Helpers.ObservableRangeCollection`1

51ee01b0 0x02000019
Minesweeper.MvvmStructure.Helpers.PinArgumentsHelper

51ed8e80 0x0200001a
Minesweeper.MvvmStructure.Helpers.RenderingModes

51ed8eb8 0x0200001b
Minesweeper.MvvmStructure.Helpers.IRenderMode

51ee64e4 0x0200001c
Minesweeper.MvvmStructure.Helpers.CompositionRendering

51ee5ce0 0x0200001d
Minesweeper.MvvmStructure.Helpers.StoryboardRendering

51ee502c 0x0200001e
Minesweeper.MvvmStructure.Helpers.RenderController

51ee5c70 0x0200001f
Minesweeper.MvvmStructure.Helpers.ScoreBarFactory

51ed8ef8 0x02000020
Minesweeper.MvvmStructure.Helpers.StatisticsTileTemplates

51ee5888 0x02000021
Minesweeper.MvvmStructure.Helpers.StatisticTileItem

51ee6528 0x02000022 Minesweeper.MvvmStructure.Helpers.Gradient

51ee655c 0x02000023
Minesweeper.MvvmStructure.Helpers.TileDataItemFactory

51ed8f24 0x02000024
Minesweeper.MvvmStructure.Helpers.UiVisualGroupId

51ee65e4 0x02000025
Minesweeper.MvvmStructure.Model.ModeSettingsDataSourceBase

51ee5a34 0x02000026
Minesweeper.MvvmStructure.Model.ChooseBoardDataSource

51ee5e9c 0x02000027
Minesweeper.MvvmStructure.Model.MinesweeperDataSourceBase

51ee6644 0x02000028
Minesweeper.MvvmStructure.Model.HelpAdventureDataSource

51ee66a0 0x02000029
Minesweeper.MvvmStructure.Model.HelpAdventureDataSourceZoomedOut

51ee6714 0x0200002a
Minesweeper.MvvmStructure.Model.DailyChallengePageModel

51ee0324 0x0200002b
Minesweeper.MvvmStructure.Model.Day0PopupDataSource

51ee679c 0x0200002c Minesweeper.MvvmStructure.Model.HelpDataSource

51ee67f8 0x0200002d
Minesweeper.MvvmStructure.Model.HelpDataSourceZoomedOut

51ee5a94 0x0200002e
Minesweeper.MvvmStructure.Model.GamesMenuDataSource

51ee6854 0x0200002f
Minesweeper.MvvmStructure.Model.HelpAdventureMenuDataSource

51ee68cc 0x02000030
Minesweeper.MvvmStructure.Model.HelpMenuDataSource

51ee6930 0x02000031
Minesweeper.MvvmStructure.Model.LeaderboardsMenuDataSource

51ee698c 0x02000032
Minesweeper.MvvmStructure.Model.ZoomedLeaderboardDataSource

51ee5b30 0x02000033 Minesweeper.MvvmStructure.Model.StatisticsMenuDataSource

51ee5b90 0x02000034
Minesweeper.MvvmStructure.Model.ThemesMenuDataSource

51ee046c 0x02000035
Minesweeper.MvvmStructure.Model.GamePageModel

51ee599c 0x02000036
Minesweeper.MvvmStructure.Model.SettingsModel

51ee0594 0x02000037
Minesweeper.MvvmStructure.Model.StatisticsPageDataSource

51ee6a20 0x02000038
Minesweeper.MvvmStructure.Model.TutorialPopupModel

51ee0424 0x02000039
Minesweeper.MvvmStructure.Service.MinesweeperAwardsService

51ee02f8 0x0200003a Minesweeper.MvvmStructure.Service.MinesweeperDailyChallengeService

51ee03f8 0x0200003b
Minesweeper.MvvmStructure.Service.PopupService

51ee4fec 0x0200003c
Minesweeper.MvvmStructure.Service.SettingsService

51ee6ab4 0x0200003d
Minesweeper.MvvmStructure.ViewModel.AwardsPageViewModel

51ee0b74 0x0200003e
Minesweeper.MvvmStructure.ViewModel.ChooseBoardViewModel

51ee0744 0x0200003f
Minesweeper.MvvmStructure.ViewModel.HelpAdventurePageViewModel

51ee6b48 0x02000040
Minesweeper.MvvmStructure.ViewModel.DailyChallengePageViewModel

51ee0d24 0x02000041
Minesweeper.MvvmStructure.ViewModel.GamePageViewModel

51ee0c04 0x02000042
Minesweeper.MvvmStructure.ViewModel.GoalDescriptionPopupViewModel

51ee06b4 0x02000043
Minesweeper.MvvmStructure.ViewModel.HelpPageViewModel

51ee5dc8 0x02000044 Minesweeper.MvvmStructure.ViewModel.LeaderboardsMenuControlViewModel

51ee6108 0x02000045
Minesweeper.MvvmStructure.ViewModel.LeaderboardsPageViewModel

51ee6b90 0x02000046
Minesweeper.MvvmStructure.ViewModel.MainPageViewModel

51ee6c20 0x02000047 Minesweeper.MvvmStructure.ViewModel.Menu.AwardsMenuControlViewModel

51ee07d4 0x02000048
Minesweeper.MvvmStructure.ViewModel.GamesMenuViewModel

51ee08a4 0x02000049
Minesweeper.MvvmStructure.ViewModel.HelpAdventureMenuViewModel

51ee0934 0x0200004a Minesweeper.MvvmStructure.ViewModel.HelpMenuViewModel

51ee0a54 0x0200004b
Minesweeper.MvvmStructure.ViewModel.LeaderboardsMenuViewModel

51ee0664 0x0200004c
Minesweeper.MvvmStructure.ViewModel.StatisticsMenuViewModel

51ee0984 0x0200004d
Minesweeper.MvvmStructure.ViewModel.ThemesMenuViewModel

51ee0ae4 0x0200004e
Minesweeper.MvvmStructure.ViewModel.SettingsControlViewModel

51ee053c 0x0200004f
Minesweeper.MvvmStructure.ViewModel.StatisticsPageViewModel

51ee0c94 0x02000050
Minesweeper.MvvmStructure.ViewModel.TutorialPopupViewModel

51dc846c 0x02000051
Minesweeper.MvvmStructure.View.Controls.SimpleMessagePopupControl

51dc8554 0x02000052
Minesweeper.MvvmStructure.View.Controls.AdventureToolPopupControl

51ed8f5c 0x02000053
Minesweeper.MvvmStructure.View.Pages.AdventureHud.MinesweeperAdventureHudElements

51ed8f94 0x02000054
Minesweeper.MvvmStructure.View.Pages.AdventureHud.ICommonHud

51ee6cb4 0x02000055
Minesweeper.MvvmStructure.View.Pages.AdventureHud.AdventureGuiCodeBehind

51ee6d68 0x02000056
Minesweeper.MvvmStructure.View.Pages.AdventureHud.AdventureGuiCurrentState

51ee6da0 0x02000057
Minesweeper.MvvmStructure.View.Pages.AdventureHud.NumbersStackPanel

51ee6e08 0x02000058
Minesweeper.MvvmStructure.View.Pages.AdventureHud.LevelNameStackPanel

51ee6e40 0x02000059 Minesweeper.MvvmStructure.View.Pages.ClassicHud.ClassicBackPanel

51ed9008 0x0200005a
Minesweeper.MvvmStructure.View.Pages.ClassicHud.GuiStates

51ee6e8c 0x0200005b
Minesweeper.MvvmStructure.View.Pages.ClassicHud.ClassicGuiCodeBehind

51ee6f44 0x0200005c
Minesweeper.MvvmStructure.View.Pages.ClassicHud.MinesPanel

51ee6fcc 0x0200005d
Minesweeper.MvvmStructure.View.Pages.ClassicHud.SwitchModePanel

51ee6f7c 0x0200005e
Minesweeper.MvvmStructure.View.Pages.ClassicHud.TimerPanel

51ee7080 0x0200005f
Minesweeper.MvvmStructure.View.Pages.DailyChallengeHud.DailyChallengeGuiCodeBehind

51ee7444 0x02000060
Minesweeper.MvvmStructure.View.Pages.DailyChallengeHud.DailyChallengeInfoPanel

51ee70ec 0x02000061
Minesweeper.MvvmStructure.View.Pages.DailyChallengeHud.DailyChallengeTimerPanel

51ee579c 0x02000062 Minesweeper.ViewModelLocator

51dc82b0 0x02000063
Minesweeper.MvvmStructure.View.Controls.ClassicCusomModeSettingsControl

51dc81d4 0x02000064
Minesweeper.MvvmStructure.View.Controls.ChooseBoardDynamicContentControl

51dc8398 0x02000065 Minesweeper.MvvmStructure.View.Controls.HelpAdventureMenuControl

51dc862c 0x02000066
Minesweeper.MvvmStructure.View.Controls.SnapDisableControl

51dc8708 0x02000067
Minesweeper.MvvmStructure.View.Controls.GamesMenuControl

51dc87f4 0x02000068
Minesweeper.MvvmStructure.View.Controls.HelpMenuControl

51dc892c 0x02000069
Minesweeper.MvvmStructure.View.Controls.StatsMenuControl

51dc8a10 0x0200006a
Minesweeper.MvvmStructure.View.Controls.ThemesMenuControl

51dc8aec 0x0200006b
Minesweeper.MvvmStructure.View.Controls.PreloaderControl

51dc8bc8
0x0200006c Minesweeper.MvvmStructure.View.Controls.SettingsControl    

51dc8cb0 0x0200006d
Minesweeper.MvvmStructure.View.Controls.TutorialControl

51eda094 0x0200006e
Minesweeper.MvvmStructure.View.Controls.TutorialControl+AnimationStates

51dc8d90 0x0200006f
Minesweeper.MvvmStructure.View.Controls.TutorialPopupControl

51dc8e70 0x02000070
Minesweeper.MvvmStructure.View.Pages.ArkadiumLogoPage

51ee76dc 0x02000071
Minesweeper.MvvmStructure.View.Pages.DailyChallengeHud.Bar.DailyChallengeProgressBar

51ee71f4 0x02000072
Minesweeper.MvvmStructure.View.Pages.DailyChallengeHud.DailyChallengeIterationPanel

51ee77fc 0x02000073
Minesweeper.MvvmStructure.View.Pages.DailyChallengeHud.Bar.ProgressBarSettings

51eda8f8 0x02000074
Minesweeper.MvvmStructure.View.Pages.DailyChallengeHud.IIterationBarState

51ee775c 0x02000075
Minesweeper.MvvmStructure.View.Pages.DailyChallengeHud.IterationBarStartState

51ee77cc 0x02000076
Minesweeper.MvvmStructure.View.Pages.DailyChallengeHud.IterationBarAnimateState

51ee7408 0x02000077 Minesweeper.MvvmStructure.View.Pages.DailyChallengeHud.IterationBarDefaultState

51ee7a60 0x02000078
Minesweeper.MvvmStructure.View.Pages.DailyChallengeHud.ProgressBarCell

51edab0c 0x02000079
Minesweeper.MvvmStructure.View.Pages.Gamepage.Controlls.States.IGameplayFlow

51ee7b48 0x0200007a
Minesweeper.MvvmStructure.View.Pages.Gamepage.Controlls.States.DailyChallengeFlow

51ee7b88 0x0200007b
Minesweeper.MvvmStructure.View.Pages.Gamepage.Controlls.States.RegularModeFlow

51dc8f5c 0x0200007c Minesweeper.MvvmStructure.View.Pages.MinesweeperBasePage

51dc9040 0x0200007d
Minesweeper.MvvmStructure.View.Pages.HelpAdventurePage

51ee5c0c 0x0200007e
Minesweeper.MvvmStructure.View.Pages.AppbarsController

51ee5ca8 0x0200007f
Minesweeper.MvvmStructure.View.Pages.ViewController

51ee5bd4 0x02000080
Minesweeper.MvvmStructure.View.Pages.GameendScenario

51dc9120 0x02000081
Minesweeper.MvvmStructure.View.Pages.GamePage

51ee5c44 0x02000082
Minesweeper.MvvmStructure.View.Pages.Gamepage.GameplayController

51dc9218 0x02000083 Minesweeper.MvvmStructure.View.Pages.HelpPage

51dc9308 0x02000084
Minesweeper.MvvmStructure.View.Pages.MainPage

51dc93e8 0x02000085
Minesweeper.MvvmStructure.View.Pages.StatisticsPage

51ee7c00 0x02000086 Minesweeper.Program

51ee01e8 0x02000087
Minesweeper.Minesweeper_XamlTypeInfo.XamlTypeInfoProvider

51ee7c38 0x02000088
Minesweeper.Minesweeper_XamlTypeInfo.XamlSystemBaseType

51edbc5c 0x02000089
Minesweeper.Minesweeper_XamlTypeInfo.Activator

51edbce8 0x0200008a
Minesweeper.Minesweeper_XamlTypeInfo.AddToCollection

51edbd4c 0x0200008b
Minesweeper.Minesweeper_XamlTypeInfo.AddToDictionary

51ee5708 0x0200008c
Minesweeper.Minesweeper_XamlTypeInfo.XamlUserType

51edbe40 0x0200008d
Minesweeper.Minesweeper_XamlTypeInfo.Getter

51edbea4 0x0200008e
Minesweeper.Minesweeper_XamlTypeInfo.Setter

51ee7d30 0x0200008f
Minesweeper.Minesweeper_XamlTypeInfo.XamlMember

51ee7d88 0x02000090
Minesweeper.App+<OnApplicationLaunched>d__2

51ee7e18 0x02000091
Minesweeper.App+<InitializeAchievements>d__7

51ee7e6c 0x02000092
Minesweeper.App+<LoadMinesweeperSettings>d__c

51ee7ed8 0x02000093
Minesweeper.App+<<InitGame>b__13>d__17

51ee7f5c 0x02000094
Minesweeper.App+<RegisterTiles>d__1a

51ee7fc8 0x02000095
Minesweeper.IocRegistrationHelper+ThemeUpdateHelper+<<OnThemeInfoLoaded>b__20>d__22

51ee802c 0x02000096 Minesweeper.MinesweeperGame+<OnGameSuspending>d__1

51ee8080 0x02000097
Minesweeper.MvvmStructure.Model.ModeSettingsDataSourceBase+<CustomSettingsChanged>d__0

51ee80ec 0x02000098
Minesweeper.MvvmStructure.Model.ChooseBoardDataSource+<SaveSettings>d__1

51ee8158 0x02000099
Minesweeper.MvvmStructure.Model.Day0PopupDataSource+<OnUpdate>d__1

51ee81bc 0x0200009a
Minesweeper.MvvmStructure.Model.HelpDataSource+<Init>d__3

51ee8240 0x0200009b
Minesweeper.MvvmStructure.Model.HelpDataSource+<Themes_OnThemeChanged>d__7

51ee82ac 0x0200009c
Minesweeper.MvvmStructure.Model.HelpDataSource+<GetSelectedThemeBackground>d__c

51ee8318 0x0200009d
Minesweeper.MvvmStructure.Model.GamesMenuDataSource+<Init>d__3

51ee8384 0x0200009e
Minesweeper.MvvmStructure.Model.GamesMenuDataSource+<CreateADailyChallengeTile>d__a

51ee83d8 0x0200009f
Minesweeper.MvvmStructure.Model.GamesMenuDataSource+<CreateAdventureModeTile>d__e

51edc42c 0x020000a0 <>f__AnonymousType0`2

51ee5fd4 0x020000a1
Minesweeper.MvvmStructure.Model.GamesMenuDataSource+<>c__DisplayClass1b

51ee8508 0x020000a2
Minesweeper.MvvmStructure.Model.GamesMenuDataSource+<CreateClassicTileItem>d__1e

51ee855c 0x020000a3
Minesweeper.MvvmStructure.Model.LeaderboardsMenuDataSource+<Init>d__0

51ee85e0 0x020000a4
Minesweeper.MvvmStructure.Model.LeaderboardsMenuDataSource+<CreateTileLeaderboard>d__4

51edc5a4 0x020000a5 <>f__AnonymousType1`8

51ee600c 0x020000a6
Minesweeper.MvvmStructure.Model.StatisticsMenuDataSource+<>c__DisplayClass3

51ee6190 0x020000a7
Minesweeper.MvvmStructure.Model.StatisticsMenuDataSource+<>c__DisplayClass3+<>c__DisplayClass5

51ee8728 0x020000a8
Minesweeper.MvvmStructure.Model.ThemesMenuDataSource+<Init>d__0

51ee8794 0x020000a9
Minesweeper.MvvmStructure.Model.ThemesMenuDataSource+<CreateTile>d__3

51ee8818 0x020000aa Minesweeper.MvvmStructure.Model.GamePageModel+<PreloadPageImages>d__6

51ee8884 0x020000ab
Minesweeper.MvvmStructure.Model.GamePageModel+<Update>d__9

51ee88d8 0x020000ac
Minesweeper.MvvmStructure.Model.GamePageModel+<UpdateSwitchButtonContent>d__c

51ee5820 0x020000ad Minesweeper.MvvmStructure.Service.MinesweeperAwardsService+<>c__DisplayClass2

51ee57e8 0x020000ae
Minesweeper.MvvmStructure.Service.MinesweeperDailyChallengeService+<>c__DisplayClass4

51edc85c 0x020000af
<PrivateImplementationDetails>{B7AC8F84-9FAE-4374-B422-C42E1B374C0B}

51ee895c 0x020000b0
Minesweeper.MvvmStructure.View.Controls.ClassicCusomModeSettingsControl+<ButtonStartGameOnClick>d__0

51ee89c8 0x020000b1
Minesweeper.MvvmStructure.View.Controls.SettingsControl+<TimerOnOffToggled>d__3

51ee8a34 0x020000b2 Minesweeper.MvvmStructure.View.Controls.SettingsControl+<TipsOnOffToggled>d__6

51ee8a88 0x020000b3
Minesweeper.MvvmStructure.View.Controls.SettingsControl+<QuestionMarkOnOffToggled>d__9

51ee8af4 0x020000b4
Minesweeper.MvvmStructure.View.Controls.SettingsControl+<OneTapOnOffToggled>d__c

51ee8b78 0x020000b5
Minesweeper.MvvmStructure.View.Controls.SettingsControl+<QuickChangeOnOffToggled>d__f

51ee8bcc 0x020000b6
Minesweeper.MvvmStructure.View.Controls.SettingsControl+<SwipeInControlsOnOffToggled>d__12

51ee8c50 0x020000b7
Minesweeper.MvvmStructure.View.Controls.SettingsControl+<OnOfGameEndAnimationsToggled>d__15

51ee8cbc 0x020000b8
Minesweeper.MvvmStructure.View.Controls.SettingsControl+<SoundsSliderOnValueChangeComplete>d__18

51ee8d28 0x020000b9 Minesweeper.MvvmStructure.View.Controls.SettingsControl+<OnConfirmResetSettings>d__1f

51ee8d94 0x020000ba
Minesweeper.MvvmStructure.View.Controls.SettingsControl+<ResetSettings>d__22

51ee8e00 0x020000bb
Minesweeper.MvvmStructure.View.Pages.ArkadiumLogoPage+<SetModel>d__0

51ee8e64 0x020000bc
Minesweeper.MvvmStructure.View.Pages.ArkadiumLogoPage+<OnAnimationCompleted>d__e

51ee8ed0 0x020000bd
Minesweeper.MvvmStructure.View.Pages.Gamepage.Controlls.States.DailyChallengeFlow+<Activate>d__0

51ee8f24 0x020000be Minesweeper.MvvmStructure.View.Pages.Gamepage.Controlls.States.RegularModeFlow+<Activate>d__0

51ee60c0 0x020000bf
Minesweeper.MvvmStructure.View.Pages.GameendScenario+<>c__DisplayClass5

51ee8fa8 0x020000c0
Minesweeper.MvvmStructure.View.Pages.GamePage+<<OnInputControlsSwitched>b__2>d__4

51ee8ffc 0x020000c1
Minesweeper.MvvmStructure.View.Pages.Gamepage.GameplayController+<SetFlow>d__0

51ee9080 0x020000c2
Minesweeper.MvvmStructure.View.Pages.Gamepage.GameplayController+<SetupCurrentMode>d__3

51ee5d40 0x020000c3 Minesweeper.MvvmStructure.View.Pages.MainPage+<>c__DisplayClass1

51ee5e08 0x020000c4
Minesweeper.MvvmStructure.View.Pages.MainPage+<>c__DisplayClass1a

 

Types referenced in this module

 

     
MT TypeRef Name

------------------------------------------------------------------------------

604026a4 0x02000004 System.Object

604038c4 0x02000007 System.Enum

0f7c8d00 0x0200000b
Common.Controls.Models.DataSourceBase

0f7bb644 0x0200000c
Common.Controls.Models.ITileDataTemplate

5f82b420 0x0200000f
System.Collections.ObjectModel.ObservableCollection`1

60403898 0x02000010 System.ValueType

6e5ef2c4 0x02000015
Arkadium.LeaderboardModule.ViewModel.Controls.LeaderboardsMenuControlBaseViewModel

603f6770 0x02000022 System.MulticastDelegate

60403424 0x02000030 System.Type

603f4420 0x02000036 System.EventHandler

603f6630 0x02000038 System.EventArgs

603f7400 0x02000048 System.Action

30bae080 0x0200004a Windows.UI.Xaml.Visibility

7098543c 0x0200004c Windows.UI.Color

0f7cad4c 0x0200004d
Common.Controls.Models.DataGroup

0f7c4438 0x0200004e Common.CommonImageSource

70985350 0x02000058 Windows.Foundation.Size

603f76c4 0x02000059 System.Threading.Tasks.Task

6fbd5bbc 0x0200005c Windows.UI.Xaml.Thickness

308bcc6c 0x02000062 Windows.UI.Xaml.Media.Brush

0f7c9c20 0x02000065 Common.CommonCommand

70a5af44 0x02000074
GalaSoft.MvvmLight.Command.RelayCommand

604069ec 0x02000093 System.Decimal

603f7254 0x020000dd System.IAsyncResult

603fbe54 0x020000df
System.Runtime.Versioning.TargetFrameworkAttribute

60401e4c 0x020000e0
System.Reflection.AssemblyTitleAttribute

60401ecc 0x020000e1
System.Reflection.AssemblyDescriptionAttribute

60401e8c 0x020000e2
System.Reflection.AssemblyConfigurationAttribute

60401f8c 0x020000e3
System.Reflection.AssemblyCompanyAttribute

60401fcc 0x020000e4
System.Reflection.AssemblyProductAttribute

60402044 0x020000e5
System.Reflection.AssemblyCopyrightAttribute

60402084 0x020000e6
System.Reflection.AssemblyTrademarkAttribute

604020c4 0x020000e9
System.Reflection.AssemblyFileVersionAttribute

60401900 0x020000ea
System.Runtime.InteropServices.ComVisibleAttribute

60401b70 0x020000eb
System.Diagnostics.DebuggableAttribute

60401c14 0x020000ed
System.Runtime.CompilerServices.CompilationRelaxationsAttribute

604017ec 0x020000ee
System.Runtime.CompilerServices.RuntimeCompatibilityAttribute

603f88cc 0x020000f6
System.Runtime.InteropServices.WindowsRuntime.EventRegistrationToken

603fa3a0 0x020000f7
System.Runtime.InteropServices.WindowsRuntime.WindowsRuntimeMarshal

60402304 0x020000fa System.String

603fadb0 0x020000fe
System.Runtime.CompilerServices.IAsyncStateMachine

603fa324 0x020000ff
System.Runtime.CompilerServices.AsyncVoidMethodBuilder

603c9010 0x02000100
System.Runtime.CompilerServices.TaskAwaiter

6040244c 0x02000109 System.Exception

6040244c 0x0200010a System.Exception

603fa068 0x02000137 System.Runtime.CompilerServices.AsyncTaskMethodBuilder

60403424 0x0200013e System.Type

60403944 0x02000148 System.Delegate

60404650 0x02000149 System.Threading.Interlocked

603f591c 0x02000175
System.NotImplementedException

5fffc6f4 0x0200019b System.IDisposable

603f7400 0x0200019f System.Action

603f82b4 0x020001ab
System.Collections.IEnumerator

5fffb534 0x020001ae System.Collections.IList

60402cfc 0x020001b0 System.Char

603f4278 0x020001bc System.Random

60403c54 0x020001bf System.Int32

60404c54 0x020001c0 System.Text.StringBuilder

5fffb5e4 0x020001c6
System.Collections.IEnumerable

6040663c 0x020001d4
System.Threading.AutoResetEvent

603fc2e8 0x020001e4 System.UInt32

603f51bc 0x02000218 System.Nullable`1

604067e0 0x02000229 System.Guid

603fb5a4 0x0200022f System.Double

603f51bc 0x0200028e System.Nullable`1

603fb4c0 0x020002bf System.Boolean

603f4b8c 0x020002db System.ArgumentException

603f4320 0x020002dd
System.InvalidOperationException

 

 

- Search for Minesweeper.MvvmStructure.View.Controls.SettingsControl and get the MethodTable:

 

  !dumpmt -md 51dc8bc8

 

EEClass:        51dd130c

Module:         51dc1000

Name:           Minesweeper.MvvmStructure.View.Controls.SettingsControl

mdToken:      0200006c

File: C:\Program Files\WindowsApps\Microsoft.MicrosoftMinesweeper_2.2.1401.2303_x86__8wekyb3d8bbwe\Minesweeper.exe

BaseSize:       0x4c

ComponentSize:  0x0

Slots in VTable: 314

Number of IFaces in IFaceMap: 16

--------------------------------------

MethodDesc Table

   Entry
MethodDe JIT Name

60ae36dc 60097980 PreJIT
System.Runtime.InteropServices.WindowsRuntime.RuntimeClass.ToString()

60ae3720 600979a0 PreJIT
System.Runtime.InteropServices.WindowsRuntime.RuntimeClass.Equals(System.Object)

60ae36b4 60097960 PreJIT
System.Runtime.InteropServices.WindowsRuntime.RuntimeClass.GetHashCode()

602ff040 5fff8058 PreJIT System.Object.Finalize()

6039bec0 6008f3f4 PreJIT
System.MarshalByRefObject.GetLifetimeService()

602d3c04 6008f3fc PreJIT
System.MarshalByRefObject.InitializeLifetimeService()

60349a84 6008f404 PreJIT System.MarshalByRefObject.CreateObjRef(System.Type)

30a02e24 309288b4 NONE
Windows.UI.Xaml.DependencyObject.GetValue(Windows.UI.Xaml.DependencyProperty)

30a02e34 309288c0 NONE

Windows.UI.Xaml.DependencyObject.SetValue(Windows.UI.Xaml.DependencyProperty,
System.Object)

30a02e44 309288cc NONE
Windows.UI.Xaml.DependencyObject.ClearValue(Windows.UI.Xaml.DependencyProperty)

30a02e54 309288d8 NONE
Windows.UI.Xaml.DependencyObject.ReadLocalValue(Windows.UI.Xaml.DependencyProperty)

30a02e64 309288e4 NONE Windows.UI.Xaml.DependencyObject.GetAnimationBaseValue(Windows.UI.Xaml.DependencyProperty)

30a02e74 309288f0 NONE
Windows.UI.Xaml.DependencyObject.get_Dispatcher()

30a04dc8 3092bf64 NONE
Windows.UI.Xaml.UIElement.get_DesiredSize()

30a04dd8 3092bf70 NONE Windows.UI.Xaml.UIElement.get_AllowDrop()

30a04de8 3092bf7c NONE
Windows.UI.Xaml.UIElement.put_AllowDrop(Boolean)

30a04df8 3092bf88 NONE Windows.UI.Xaml.UIElement.get_Opacity()

30a04e08 3092bf94 NONE
Windows.UI.Xaml.UIElement.put_Opacity(Double)

30a04e18 3092bfa0 NONE Windows.UI.Xaml.UIElement.get_Clip()

30a04e28 3092bfac NONE
Windows.UI.Xaml.UIElement.put_Clip(Windows.UI.Xaml.Media.RectangleGeometry)

30a04e38 3092bfb8 NONE
Windows.UI.Xaml.UIElement.get_RenderTransform()

30a04e48 3092bfc4 NONE Windows.UI.Xaml.UIElement.put_RenderTransform(Windows.UI.Xaml.Media.Transform)

30a04e58 3092bfd0 NONE
Windows.UI.Xaml.UIElement.get_Projection()

30a04e68 3092bfdc NONE
Windows.UI.Xaml.UIElement.put_Projection(Windows.UI.Xaml.Media.Projection)

30a04e78 3092bfe8 NONE
Windows.UI.Xaml.UIElement.get_RenderTransformOrigin()

30a04e88 3092bff4 NONE
Windows.UI.Xaml.UIElement.put_RenderTransformOrigin(Windows.Foundation.Point)

30a04e98 3092c000 NONE
Windows.UI.Xaml.UIElement.get_IsHitTestVisible()

30a04ea8 3092c00c NONE
Windows.UI.Xaml.UIElement.put_IsHitTestVisible(Boolean)

30a04eb8 3092c018 NONE
Windows.UI.Xaml.UIElement.get_Visibility()

30a04ec8 3092c024 NONE
Windows.UI.Xaml.UIElement.put_Visibility(Windows.UI.Xaml.Visibility)

30a04ed8 3092c030 NONE Windows.UI.Xaml.UIElement.get_RenderSize()

30a04ee8 3092c03c NONE
Windows.UI.Xaml.UIElement.get_UseLayoutRounding()

30a04ef8 3092c048 NONE
Windows.UI.Xaml.UIElement.put_UseLayoutRounding(Boolean)

30a04f08 3092c054 NONE Windows.UI.Xaml.UIElement.get_Transitions()

30a04f18 3092c060 NONE
Windows.UI.Xaml.UIElement.put_Transitions(Windows.UI.Xaml.Media.Animation.TransitionCollection)

30a04f28 3092c06c NONE
Windows.UI.Xaml.UIElement.get_CacheMode()

30a04f38 3092c078 NONE Windows.UI.Xaml.UIElement.put_CacheMode(Windows.UI.Xaml.Media.CacheMode)

30a04f48 3092c084 NONE
Windows.UI.Xaml.UIElement.get_IsTapEnabled()

30a04f58 3092c090 NONE
Windows.UI.Xaml.UIElement.put_IsTapEnabled(Boolean)

30a04f68 3092c09c NONE
Windows.UI.Xaml.UIElement.get_IsDoubleTapEnabled()

30a04f78 3092c0a8 NONE
Windows.UI.Xaml.UIElement.put_IsDoubleTapEnabled(Boolean)

30a04f88 3092c0b4 NONE
Windows.UI.Xaml.UIElement.get_IsRightTapEnabled()

30a04f98 3092c0c0 NONE
Windows.UI.Xaml.UIElement.put_IsRightTapEnabled(Boolean)

30a04fa8 3092c0cc NONE
Windows.UI.Xaml.UIElement.get_IsHoldingEnabled()

30a04fb8 3092c0d8 NONE
Windows.UI.Xaml.UIElement.put_IsHoldingEnabled(Boolean)

30a04fc8 3092c0e4 NONE
Windows.UI.Xaml.UIElement.get_ManipulationMode()

30a04fd8 3092c0f0 NONE Windows.UI.Xaml.UIElement.put_ManipulationMode(Windows.UI.Xaml.Input.ManipulationModes)

30a04fe8 3092c0fc NONE
Windows.UI.Xaml.UIElement.get_PointerCaptures()

30a04ff8 3092c108 NONE
Windows.UI.Xaml.UIElement.add_KeyUp(Windows.UI.Xaml.Input.KeyEventHandler)

30a05008 3092c114 NONE
Windows.UI.Xaml.UIElement.remove_KeyUp(System.Runtime.InteropServices.WindowsRuntime.EventRegistrationToken)

30a05018 3092c120 NONE
Windows.UI.Xaml.UIElement.add_KeyDown(Windows.UI.Xaml.Input.KeyEventHandler)

30a05028 3092c12c NONE
Windows.UI.Xaml.UIElement.remove_KeyDown(System.Runtime.InteropServices.WindowsRuntime.EventRegistrationToken)

30a05038 3092c138 NONE
Windows.UI.Xaml.UIElement.add_GotFocus(Windows.UI.Xaml.RoutedEventHandler)

30a05048 3092c144 NONE Windows.UI.Xaml.UIElement.remove_GotFocus(System.Runtime.InteropServices.WindowsRuntime.EventRegistrationToken)

30a05058 3092c150 NONE
Windows.UI.Xaml.UIElement.add_LostFocus(Windows.UI.Xaml.RoutedEventHandler)

30a05068 3092c15c NONE Windows.UI.Xaml.UIElement.remove_LostFocus(System.Runtime.InteropServices.WindowsRuntime.EventRegistrationToken)

30a05078 3092c168 NONE
Windows.UI.Xaml.UIElement.add_DragEnter(Windows.UI.Xaml.DragEventHandler)

30a05088 3092c174 NONE
Windows.UI.Xaml.UIElement.remove_DragEnter(System.Runtime.InteropServices.WindowsRuntime.EventRegistrationToken)

30a05098 3092c180 NONE
Windows.UI.Xaml.UIElement.add_DragLeave(Windows.UI.Xaml.DragEventHandler)

30a050a8 3092c18c NONE
Windows.UI.Xaml.UIElement.remove_DragLeave(System.Runtime.InteropServices.WindowsRuntime.EventRegistrationToken)

30a050b8 3092c198 NONE
Windows.UI.Xaml.UIElement.add_DragOver(Windows.UI.Xaml.DragEventHandler)

30a050c8 3092c1a4 NONE
Windows.UI.Xaml.UIElement.remove_DragOver(System.Runtime.InteropServices.WindowsRuntime.EventRegistrationToken)

30a050d8 3092c1b0 NONE
Windows.UI.Xaml.UIElement.add_Drop(Windows.UI.Xaml.DragEventHandler)

30a050e8 3092c1bc NONE
Windows.UI.Xaml.UIElement.remove_Drop(System.Runtime.InteropServices.WindowsRuntime.EventRegistrationToken)

30a050f8 3092c1c8 NONE
Windows.UI.Xaml.UIElement.add_PointerPressed(Windows.UI.Xaml.Input.PointerEventHandler)

30a05108 3092c1d4 NONE
Windows.UI.Xaml.UIElement.remove_PointerPressed(System.Runtime.InteropServices.WindowsRuntime.EventRegistrationToken)

30a05118 3092c1e0 NONE
Windows.UI.Xaml.UIElement.add_PointerMoved(Windows.UI.Xaml.Input.PointerEventHandler)

30a05128 3092c1ec NONE
Windows.UI.Xaml.UIElement.remove_PointerMoved(System.Runtime.InteropServices.WindowsRuntime.EventRegistrationToken)

30a05138 3092c1f8 NONE
Windows.UI.Xaml.UIElement.add_PointerReleased(Windows.UI.Xaml.Input.PointerEventHandler)

30a05148 3092c204 NONE
Windows.UI.Xaml.UIElement.remove_PointerReleased(System.Runtime.InteropServices.WindowsRuntime.EventRegistrationToken)

30a05158 3092c210 NONE
Windows.UI.Xaml.UIElement.add_PointerEntered(Windows.UI.Xaml.Input.PointerEventHandler)

30a05168 3092c21c NONE
Windows.UI.Xaml.UIElement.remove_PointerEntered(System.Runtime.InteropServices.WindowsRuntime.EventRegistrationToken)

30a05178 3092c228 NONE
Windows.UI.Xaml.UIElement.add_PointerExited(Windows.UI.Xaml.Input.PointerEventHandler)

30a05188 3092c234 NONE
Windows.UI.Xaml.UIElement.remove_PointerExited(System.Runtime.InteropServices.WindowsRuntime.EventRegistrationToken)

30a05198 3092c240 NONE
Windows.UI.Xaml.UIElement.add_PointerCaptureLost(Windows.UI.Xaml.Input.PointerEventHandler)

30a051a8 3092c24c NONE
Windows.UI.Xaml.UIElement.remove_PointerCaptureLost(System.Runtime.InteropServices.WindowsRuntime.EventRegistrationToken)

30a051b8 3092c258 NONE
Windows.UI.Xaml.UIElement.add_PointerCanceled(Windows.UI.Xaml.Input.PointerEventHandler)

30a051c8 3092c264 NONE
Windows.UI.Xaml.UIElement.remove_PointerCanceled(System.Runtime.InteropServices.WindowsRuntime.EventRegistrationToken)

30a051d8 3092c270 NONE
Windows.UI.Xaml.UIElement.add_PointerWheelChanged(Windows.UI.Xaml.Input.PointerEventHandler)

30a051e8 3092c27c NONE
Windows.UI.Xaml.UIElement.remove_PointerWheelChanged(System.Runtime.InteropServices.WindowsRuntime.EventRegistrationToken)

30a051f8 3092c288 NONE
Windows.UI.Xaml.UIElement.add_Tapped(Windows.UI.Xaml.Input.TappedEventHandler)

30a05208 3092c294 NONE
Windows.UI.Xaml.UIElement.remove_Tapped(System.Runtime.InteropServices.WindowsRuntime.EventRegistrationToken)

30a05218 3092c2a0 NONE
Windows.UI.Xaml.UIElement.add_DoubleTapped(Windows.UI.Xaml.Input.DoubleTappedEventHandler)

30a05228 3092c2ac NONE
Windows.UI.Xaml.UIElement.remove_DoubleTapped(System.Runtime.InteropServices.WindowsRuntime.EventRegistrationToken)

30a05238 3092c2b8 NONE
Windows.UI.Xaml.UIElement.add_Holding(Windows.UI.Xaml.Input.HoldingEventHandler)

30a05248 3092c2c4 NONE
Windows.UI.Xaml.UIElement.remove_Holding(System.Runtime.InteropServices.WindowsRuntime.EventRegistrationToken)

30a05258 3092c2d0 NONE Windows.UI.Xaml.UIElement.add_RightTapped(Windows.UI.Xaml.Input.RightTappedEventHandler)

30a05268 3092c2dc NONE
Windows.UI.Xaml.UIElement.remove_RightTapped(System.Runtime.InteropServices.WindowsRuntime.EventRegistrationToken)

30a05278 3092c2e8 NONE Windows.UI.Xaml.UIElement.add_ManipulationStarting(Windows.UI.Xaml.Input.ManipulationStartingEventHandler)

30a05288 3092c2f4 NONE
Windows.UI.Xaml.UIElement.remove_ManipulationStarting(System.Runtime.InteropServices.WindowsRuntime.EventRegistrationToken)

30a05298 3092c300 NONE
Windows.UI.Xaml.UIElement.add_ManipulationInertiaStarting(Windows.UI.Xaml.Input.ManipulationInertiaStartingEventHandler)

30a052a8 3092c30c NONE
Windows.UI.Xaml.UIElement.remove_ManipulationInertiaStarting(System.Runtime.InteropServices.WindowsRuntime.EventRegistrationToken)

30a052b8 3092c318 NONE
Windows.UI.Xaml.UIElement.add_ManipulationStarted(Windows.UI.Xaml.Input.ManipulationStartedEventHandler)

30a052c8 3092c324 NONE
Windows.UI.Xaml.UIElement.remove_ManipulationStarted(System.Runtime.InteropServices.WindowsRuntime.EventRegistrationToken)

30a052d8 3092c330 NONE
Windows.UI.Xaml.UIElement.add_ManipulationDelta(Windows.UI.Xaml.Input.ManipulationDeltaEventHandler)

30a052e8 3092c33c NONE Windows.UI.Xaml.UIElement.remove_ManipulationDelta(System.Runtime.InteropServices.WindowsRuntime.EventRegistrationToken)

30a052f8 3092c348 NONE
Windows.UI.Xaml.UIElement.add_ManipulationCompleted(Windows.UI.Xaml.Input.ManipulationCompletedEventHandler)

30a05308 3092c354 NONE Windows.UI.Xaml.UIElement.remove_ManipulationCompleted(System.Runtime.InteropServices.WindowsRuntime.EventRegistrationToken)

30a05318 3092c36c NONE
Windows.UI.Xaml.UIElement.Measure(Windows.Foundation.Size)

30a05328 3092c378 NONE Windows.UI.Xaml.UIElement.Arrange(Windows.Foundation.Rect)

30a05338 3092c384 NONE
Windows.UI.Xaml.UIElement.CapturePointer(Windows.UI.Xaml.Input.Pointer)

30a05348 3092c390 NONE
Windows.UI.Xaml.UIElement.ReleasePointerCapture(Windows.UI.Xaml.Input.Pointer)

30a05358 3092c39c NONE Windows.UI.Xaml.UIElement.ReleasePointerCaptures()

30a05368 3092c3a8 NONE
Windows.UI.Xaml.UIElement.AddHandler(Windows.UI.Xaml.RoutedEvent,
System.Object, Boolean)

30a05378 3092c3b4 NONE
Windows.UI.Xaml.UIElement.RemoveHandler(Windows.UI.Xaml.RoutedEvent, System.Object)

30a05388 3092c3c0 NONE
Windows.UI.Xaml.UIElement.TransformToVisual(Windows.UI.Xaml.UIElement)

30a05398 3092c3cc NONE
Windows.UI.Xaml.UIElement.InvalidateMeasure()

30a053a8 3092c3d8 NONE
Windows.UI.Xaml.UIElement.InvalidateArrange()

30a053b8 3092c3e4 NONE
Windows.UI.Xaml.UIElement.UpdateLayout()

30a053c8 3092c3f0 NONE
Windows.UI.Xaml.UIElement.get_CompositeMode()

30a053d8 3092c3fc NONE
Windows.UI.Xaml.UIElement.put_CompositeMode(Windows.UI.Xaml.Media.ElementCompositeMode)

30a053e8 3092c408 NONE
Windows.UI.Xaml.UIElement.CancelDirectManipulations()

30a053f8 3092c414 NONE
Windows.UI.Xaml.UIElement.OnCreateAutomationPeer()

30a05408 3092c420 NONE
Windows.UI.Xaml.UIElement.OnDisconnectVisualChildren()

30a05418 3092c42c NONE Windows.UI.Xaml.UIElement.FindSubElementsForTouchTargeting(Windows.Foundation.Point,
Windows.Foundation.Rect)

30a05624 3092c6e0 NONE
Windows.UI.Xaml.FrameworkElement.get_Triggers()

30a05634 3092c6ec NONE
Windows.UI.Xaml.FrameworkElement.get_Resources()

30a05644 3092c6f8 NONE
Windows.UI.Xaml.FrameworkElement.put_Resources(Windows.UI.Xaml.ResourceDictionary)

30a05654 3092c704 NONE
Windows.UI.Xaml.FrameworkElement.get_Tag()

30a05664 3092c710 NONE
Windows.UI.Xaml.FrameworkElement.put_Tag(System.Object)

30a05674 3092c71c NONE
Windows.UI.Xaml.FrameworkElement.get_Language()

30a05684 3092c728 NONE
Windows.UI.Xaml.FrameworkElement.put_Language(System.String)

30a05694 3092c734 NONE
Windows.UI.Xaml.FrameworkElement.get_ActualWidth()

30a056a4 3092c740 NONE Windows.UI.Xaml.FrameworkElement.get_ActualHeight()

30a056b4 3092c74c NONE
Windows.UI.Xaml.FrameworkElement.get_Width()

30a056c4 3092c758 NONE
Windows.UI.Xaml.FrameworkElement.put_Width(Double)

30a056d4 3092c764 NONE Windows.UI.Xaml.FrameworkElement.get_Height()

30a056e4 3092c770 NONE
Windows.UI.Xaml.FrameworkElement.put_Height(Double)

30a056f4 3092c77c NONE
Windows.UI.Xaml.FrameworkElement.get_MinWidth()

30a05704 3092c788 NONE
Windows.UI.Xaml.FrameworkElement.put_MinWidth(Double)

30a05714 3092c794 NONE
Windows.UI.Xaml.FrameworkElement.get_MaxWidth()

30a05724 3092c7a0 NONE
Windows.UI.Xaml.FrameworkElement.put_MaxWidth(Double)

30a05734 3092c7ac NONE
Windows.UI.Xaml.FrameworkElement.get_MinHeight()

30a05744 3092c7b8 NONE Windows.UI.Xaml.FrameworkElement.put_MinHeight(Double)

30a05754 3092c7c4 NONE
Windows.UI.Xaml.FrameworkElement.get_MaxHeight()

30a05764 3092c7d0 NONE
Windows.UI.Xaml.FrameworkElement.put_MaxHeight(Double)

30a05774 3092c7dc NONE
Windows.UI.Xaml.FrameworkElement.get_HorizontalAlignment()

30a05784 3092c7e8 NONE
Windows.UI.Xaml.FrameworkElement.put_HorizontalAlignment(Windows.UI.Xaml.HorizontalAlignment)

30a05794 3092c7f4 NONE
Windows.UI.Xaml.FrameworkElement.get_VerticalAlignment()

30a057a4 3092c800 NONE Windows.UI.Xaml.FrameworkElement.put_VerticalAlignment(Windows.UI.Xaml.VerticalAlignment)

30a057b4 3092c80c NONE
Windows.UI.Xaml.FrameworkElement.get_Margin()

30a057c4 3092c818 NONE
Windows.UI.Xaml.FrameworkElement.put_Margin(Windows.UI.Xaml.Thickness)

30a057d4 3092c824 NONE
Windows.UI.Xaml.FrameworkElement.get_Name()

30a057e4 3092c830 NONE
Windows.UI.Xaml.FrameworkElement.put_Name(System.String)

30a057f4 3092c83c NONE
Windows.UI.Xaml.FrameworkElement.get_BaseUri()

30a05804 3092c848 NONE Windows.UI.Xaml.FrameworkElement.get_DataContext()

30a05814 3092c854 NONE
Windows.UI.Xaml.FrameworkElement.put_DataContext(System.Object)

30a05824 3092c860 NONE
Windows.UI.Xaml.FrameworkElement.get_Style()

30a05834 3092c86c NONE
Windows.UI.Xaml.FrameworkElement.put_Style(Windows.UI.Xaml.Style)

30a05844 3092c878 NONE
Windows.UI.Xaml.FrameworkElement.get_Parent()

30a05854 3092c884 NONE
Windows.UI.Xaml.FrameworkElement.get_FlowDirection()

30a05864 3092c890 NONE
Windows.UI.Xaml.FrameworkElement.put_FlowDirection(Windows.UI.Xaml.FlowDirection)

30a05874 3092c89c NONE
Windows.UI.Xaml.FrameworkElement.add_Loaded(Windows.UI.Xaml.RoutedEventHandler)

30a05884 3092c8a8 NONE
Windows.UI.Xaml.FrameworkElement.remove_Loaded(System.Runtime.InteropServices.WindowsRuntime.EventRegistrationToken)

30a05894 3092c8b4 NONE
Windows.UI.Xaml.FrameworkElement.add_Unloaded(Windows.UI.Xaml.RoutedEventHandler)

30a058a4 3092c8c0 NONE
Windows.UI.Xaml.FrameworkElement.remove_Unloaded(System.Runtime.InteropServices.WindowsRuntime.EventRegistrationToken)

30a058b4 3092c8cc NONE
Windows.UI.Xaml.FrameworkElement.add_SizeChanged(Windows.UI.Xaml.SizeChangedEventHandler)

30a058c4 3092c8d8 NONE
Windows.UI.Xaml.FrameworkElement.remove_SizeChanged(System.Runtime.InteropServices.WindowsRuntime.EventRegistrationToken)

30a058d4 3092c8e4 NONE
Windows.UI.Xaml.FrameworkElement.add_LayoutUpdated(System.EventHandler`1<System.Object>)

30a058e4 3092c8f0 NONE
Windows.UI.Xaml.FrameworkElement.remove_LayoutUpdated(System.Runtime.InteropServices.WindowsRuntime.EventRegistrationToken)

30a058f4 3092c8fc NONE
Windows.UI.Xaml.FrameworkElement.FindName(System.String)

30a05904 3092c908 NONE
Windows.UI.Xaml.FrameworkElement.SetBinding(Windows.UI.Xaml.DependencyProperty,
Windows.UI.Xaml.Data.BindingBase)

30a05914 3092c914 NONE
Windows.UI.Xaml.FrameworkElement.get_RequestedTheme()

30a05924 3092c920 NONE
Windows.UI.Xaml.FrameworkElement.put_RequestedTheme(Windows.UI.Xaml.ElementTheme)

30a05934 3092c92c NONE
Windows.UI.Xaml.FrameworkElement.add_DataContextChanged(Windows.Foundation.TypedEventHandler`2<Windows.UI.Xaml.FrameworkElement,Windows.UI.Xaml.DataContextChangedEventArgs>)

30a05944 3092c938 NONE
Windows.UI.Xaml.FrameworkElement.remove_DataContextChanged(System.Runtime.InteropServices.WindowsRuntime.EventRegistrationToken)

30a05954 3092c944 NONE
Windows.UI.Xaml.FrameworkElement.GetBindingExpression(Windows.UI.Xaml.DependencyProperty)

30a05964 3092c950 NONE
Windows.UI.Xaml.FrameworkElement.MeasureOverride(Windows.Foundation.Size)

30a05974 3092c95c NONE Windows.UI.Xaml.FrameworkElement.ArrangeOverride(Windows.Foundation.Size)

30a05984 3092c968 NONE
Windows.UI.Xaml.FrameworkElement.OnApplyTemplate()

30a05994 3092c974 NONE
Windows.UI.Xaml.FrameworkElement.GoToElementStateCore(System.String, Boolean)

30a0d778 30937528 NONE
Windows.UI.Xaml.Controls.Control.get_FontSize()

30a0d788 30937534 NONE
Windows.UI.Xaml.Controls.Control.put_FontSize(Double)

30a0d798 30937540 NONE
Windows.UI.Xaml.Controls.Control.get_FontFamily()

30a0d7a8 3093754c NONE Windows.UI.Xaml.Controls.Control.put_FontFamily(Windows.UI.Xaml.Media.FontFamily)

30a0d7b8 30937558 NONE
Windows.UI.Xaml.Controls.Control.get_FontWeight()

30a0d7c8 30937564 NONE
Windows.UI.Xaml.Controls.Control.put_FontWeight(Windows.UI.Text.FontWeight)

30a0d7d8 30937570 NONE
Windows.UI.Xaml.Controls.Control.get_FontStyle()

30a0d7e8 3093757c NONE
Windows.UI.Xaml.Controls.Control.put_FontStyle(Windows.UI.Text.FontStyle)

30a0d7f8 30937588 NONE
Windows.UI.Xaml.Controls.Control.get_FontStretch()

30a0d808 30937594 NONE
Windows.UI.Xaml.Controls.Control.put_FontStretch(Windows.UI.Text.FontStretch)

30a0d818 309375a0 NONE
Windows.UI.Xaml.Controls.Control.get_CharacterSpacing()

30a0d828 309375ac NONE
Windows.UI.Xaml.Controls.Control.put_CharacterSpacing(Int32)

30a0d838 309375b8 NONE
Windows.UI.Xaml.Controls.Control.get_Foreground()

30a0d848 309375c4 NONE
Windows.UI.Xaml.Controls.Control.put_Foreground(Windows.UI.Xaml.Media.Brush)

30a0d858 309375d0 NONE
Windows.UI.Xaml.Controls.Control.get_IsTabStop()

30a0d868 309375dc NONE
Windows.UI.Xaml.Controls.Control.put_IsTabStop(Boolean)

30a0d878 309375e8 NONE
Windows.UI.Xaml.Controls.Control.get_IsEnabled()

30a0d888 309375f4 NONE
Windows.UI.Xaml.Controls.Control.put_IsEnabled(Boolean)

30a0d898 30937600 NONE Windows.UI.Xaml.Controls.Control.get_TabIndex()

30a0d8a8 3093760c NONE
Windows.UI.Xaml.Controls.Control.put_TabIndex(Int32)

30a0d8b8 30937618 NONE
Windows.UI.Xaml.Controls.Control.get_TabNavigation()

30a0d8c8 30937624 NONE Windows.UI.Xaml.Controls.Control.put_TabNavigation(Windows.UI.Xaml.Input.KeyboardNavigationMode)

30a0d8d8 30937630 NONE
Windows.UI.Xaml.Controls.Control.get_Template()

30a0d8e8 3093763c NONE
Windows.UI.Xaml.Controls.Control.put_Template(Windows.UI.Xaml.Controls.ControlTemplate)

30a0d8f8 30937648 NONE
Windows.UI.Xaml.Controls.Control.get_Padding()

30a0d908 30937654 NONE
Windows.UI.Xaml.Controls.Control.put_Padding(Windows.UI.Xaml.Thickness)

30a0d918 30937660 NONE
Windows.UI.Xaml.Controls.Control.get_HorizontalContentAlignment()

30a0d928 3093766c NONE
Windows.UI.Xaml.Controls.Control.put_HorizontalContentAlignment(Windows.UI.Xaml.HorizontalAlignment)

30a0d938 30937678 NONE
Windows.UI.Xaml.Controls.Control.get_VerticalContentAlignment()

30a0d948 30937684 NONE Windows.UI.Xaml.Controls.Control.put_VerticalContentAlignment(Windows.UI.Xaml.VerticalAlignment)

30a0d958 30937690 NONE
Windows.UI.Xaml.Controls.Control.get_Background()

30a0d968 3093769c NONE
Windows.UI.Xaml.Controls.Control.put_Background(Windows.UI.Xaml.Media.Brush)

30a0d978 309376a8 NONE
Windows.UI.Xaml.Controls.Control.get_BorderThickness()

30a0d988 309376b4 NONE
Windows.UI.Xaml.Controls.Control.put_BorderThickness(Windows.UI.Xaml.Thickness)

30a0d998 309376c0 NONE
Windows.UI.Xaml.Controls.Control.get_BorderBrush()

30a0d9a8 309376cc NONE
Windows.UI.Xaml.Controls.Control.put_BorderBrush(Windows.UI.Xaml.Media.Brush)

30a0d9b8 309376d8 NONE
Windows.UI.Xaml.Controls.Control.get_FocusState()

30a0d9c8 309376e4 NONE
Windows.UI.Xaml.Controls.Control.add_IsEnabledChanged(Windows.UI.Xaml.DependencyPropertyChangedEventHandler)

30a0d9d8 309376f0 NONE
Windows.UI.Xaml.Controls.Control.remove_IsEnabledChanged(System.Runtime.InteropServices.WindowsRuntime.EventRegistrationToken)

30a0d9e8 309376fc NONE Windows.UI.Xaml.Controls.Control.ApplyTemplate()

30a0d9f8 30937708 NONE
Windows.UI.Xaml.Controls.Control.Focus(Windows.UI.Xaml.FocusState)

30a0da08 30937714 NONE
Windows.UI.Xaml.Controls.Control.OnPointerEntered(Windows.UI.Xaml.Input.PointerRoutedEventArgs)

30a0da18 30937720 NONE
Windows.UI.Xaml.Controls.Control.OnPointerPressed(Windows.UI.Xaml.Input.PointerRoutedEventArgs)

30a0da28 3093772c NONE
Windows.UI.Xaml.Controls.Control.OnPointerMoved(Windows.UI.Xaml.Input.PointerRoutedEventArgs)

30a0da38 30937738 NONE
Windows.UI.Xaml.Controls.Control.OnPointerReleased(Windows.UI.Xaml.Input.PointerRoutedEventArgs)

30a0da48 30937744 NONE
Windows.UI.Xaml.Controls.Control.OnPointerExited(Windows.UI.Xaml.Input.PointerRoutedEventArgs)

30a0da58 30937750 NONE Windows.UI.Xaml.Controls.Control.OnPointerCaptureLost(Windows.UI.Xaml.Input.PointerRoutedEventArgs)

30a0da68 3093775c NONE
Windows.UI.Xaml.Controls.Control.OnPointerCanceled(Windows.UI.Xaml.Input.PointerRoutedEventArgs)

30a0da78 30937768 NONE Windows.UI.Xaml.Controls.Control.OnPointerWheelChanged(Windows.UI.Xaml.Input.PointerRoutedEventArgs)

30a0da88 30937774 NONE
Windows.UI.Xaml.Controls.Control.OnTapped(Windows.UI.Xaml.Input.TappedRoutedEventArgs)

30a0da98 30937780 NONE Windows.UI.Xaml.Controls.Control.OnDoubleTapped(Windows.UI.Xaml.Input.DoubleTappedRoutedEventArgs)

30a0daa8 3093778c NONE
Windows.UI.Xaml.Controls.Control.OnHolding(Windows.UI.Xaml.Input.HoldingRoutedEventArgs)

30a0dab8 30937798 NONE
Windows.UI.Xaml.Controls.Control.OnRightTapped(Windows.UI.Xaml.Input.RightTappedRoutedEventArgs)

30a0dac8 309377a4 NONE
Windows.UI.Xaml.Controls.Control.OnManipulationStarting(Windows.UI.Xaml.Input.ManipulationStartingRoutedEventArgs)

30a0dad8 309377b0 NONE
Windows.UI.Xaml.Controls.Control.OnManipulationInertiaStarting(Windows.UI.Xaml.Input.ManipulationInertiaStartingRoutedEventArgs)

30a0dae8 309377bc NONE
Windows.UI.Xaml.Controls.Control.OnManipulationStarted(Windows.UI.Xaml.Input.ManipulationStartedRoutedEventArgs)

30a0daf8 309377c8 NONE Windows.UI.Xaml.Controls.Control.OnManipulationDelta(Windows.UI.Xaml.Input.ManipulationDeltaRoutedEventArgs)

30a0db08 309377d4 NONE
Windows.UI.Xaml.Controls.Control.OnManipulationCompleted(Windows.UI.Xaml.Input.ManipulationCompletedRoutedEventArgs)

30a0db18 309377e0 NONE
Windows.UI.Xaml.Controls.Control.OnKeyUp(Windows.UI.Xaml.Input.KeyRoutedEventArgs)

30a0db28 309377ec NONE
Windows.UI.Xaml.Controls.Control.OnKeyDown(Windows.UI.Xaml.Input.KeyRoutedEventArgs)

30a0db38 309377f8 NONE Windows.UI.Xaml.Controls.Control.OnGotFocus(Windows.UI.Xaml.RoutedEventArgs)

30a0db48 30937804 NONE
Windows.UI.Xaml.Controls.Control.OnLostFocus(Windows.UI.Xaml.RoutedEventArgs)

30a0db58 30937810 NONE
Windows.UI.Xaml.Controls.Control.OnDragEnter(Windows.UI.Xaml.DragEventArgs)

30a0db68 3093781c NONE
Windows.UI.Xaml.Controls.Control.OnDragLeave(Windows.UI.Xaml.DragEventArgs)

30a0db78 30937828 NONE
Windows.UI.Xaml.Controls.Control.OnDragOver(Windows.UI.Xaml.DragEventArgs)

30a0db88 30937834 NONE Windows.UI.Xaml.Controls.Control.OnDrop(Windows.UI.Xaml.DragEventArgs)

30a0db98 30937840 NONE
Windows.UI.Xaml.Controls.Control.get_DefaultStyleKey()

30a0dba8 3093784c NONE
Windows.UI.Xaml.Controls.Control.put_DefaultStyleKey(System.Object)

30a0dbb8 30937858 NONE Windows.UI.Xaml.Controls.Control.GetTemplateChild(System.String)

30a0dcc8 309379c8 NONE
Windows.UI.Xaml.Controls.ContentControl.get_Content()

30a0dcd8 309379d4 NONE
Windows.UI.Xaml.Controls.ContentControl.put_Content(System.Object)

30a0dce8 309379e0 NONE Windows.UI.Xaml.Controls.ContentControl.get_ContentTemplate()

30a0dcf8 309379ec NONE
Windows.UI.Xaml.Controls.ContentControl.put_ContentTemplate(Windows.UI.Xaml.DataTemplate)

30a0dd08 309379f8 NONE
Windows.UI.Xaml.Controls.ContentControl.get_ContentTemplateSelector()

30a0dd18 30937a04 NONE
Windows.UI.Xaml.Controls.ContentControl.put_ContentTemplateSelector(Windows.UI.Xaml.Controls.DataTemplateSelector)

30a0dd28 30937a10 NONE
Windows.UI.Xaml.Controls.ContentControl.get_ContentTransitions()

30a0dd38 30937a1c NONE Windows.UI.Xaml.Controls.ContentControl.put_ContentTransitions(Windows.UI.Xaml.Media.Animation.TransitionCollection)

30a0dd48 30937a28 NONE
Windows.UI.Xaml.Controls.ContentControl.get_ContentTemplateRoot()

30a0dd58 30937a34 NONE Windows.UI.Xaml.Controls.ContentControl.OnContentChanged(System.Object,
System.Object)

30a0dd68 30937a40 NONE
Windows.UI.Xaml.Controls.ContentControl.OnContentTemplateChanged(Windows.UI.Xaml.DataTemplate,
Windows.UI.Xaml.DataTemplate)

30a0dd78 30937a4c NONE Windows.UI.Xaml.Controls.ContentControl.OnContentTemplateSelectorChanged(Windows.UI.Xaml.Controls.DataTemplateSelector,
Windows.UI.Xaml.Controls.DataTemplateSelector)

30a0f1c0 30938d98 NONE
Windows.UI.Xaml.Controls.SettingsFlyout.get_Title()

30a0f1d0 30938da4 NONE Windows.UI.Xaml.Controls.SettingsFlyout.put_Title(System.String)

30a0f1e0 30938db0 NONE
Windows.UI.Xaml.Controls.SettingsFlyout.get_HeaderBackground()

30a0f1f0 30938dbc NONE
Windows.UI.Xaml.Controls.SettingsFlyout.put_HeaderBackground(Windows.UI.Xaml.Media.Brush)

30a0f200 30938dc8 NONE
Windows.UI.Xaml.Controls.SettingsFlyout.get_HeaderForeground()

30a0f210 30938dd4 NONE
Windows.UI.Xaml.Controls.SettingsFlyout.put_HeaderForeground(Windows.UI.Xaml.Media.Brush)

30a0f220 30938de0 NONE Windows.UI.Xaml.Controls.SettingsFlyout.get_IconSource()

30a0f230 30938dec NONE
Windows.UI.Xaml.Controls.SettingsFlyout.put_IconSource(Windows.UI.Xaml.Media.ImageSource)

30a0f240 30938df8 NONE
Windows.UI.Xaml.Controls.SettingsFlyout.get_TemplateSettings()

30a0f250 30938e04 NONE
Windows.UI.Xaml.Controls.SettingsFlyout.add_BackClick(Windows.UI.Xaml.Controls.BackClickEventHandler)

30a0f260 30938e10 NONE
Windows.UI.Xaml.Controls.SettingsFlyout.remove_BackClick(System.Runtime.InteropServices.WindowsRuntime.EventRegistrationToken)

30a0f270 30938e1c NONE
Windows.UI.Xaml.Controls.SettingsFlyout.Show()

30a0f280 30938e28 NONE
Windows.UI.Xaml.Controls.SettingsFlyout.ShowIndependent()

30a0f290 30938e34 NONE
Windows.UI.Xaml.Controls.SettingsFlyout.Hide()

51dfa570 51ddf3f8 PreJIT Minesweeper.MvvmStructure.View.Controls.SettingsControl.OnLoaded(System.Object,
Windows.UI.Xaml.RoutedEventArgs)

0f6c59a0 0f69cbb0 PreJIT
Common.Controls.SettingsFlyoutControl.OnUnloaded(System.Object,
Windows.UI.Xaml.RoutedEventArgs)

NOTE! Connect is NOT PreJitted anymore. The new Minesweeper update does not have pre-compiled modules. I'm still using the old output otherwise I'd have to change the whole blog article.

51dfa568
51ddf620 PreJIT
Minesweeper.MvvmStructure.View.Controls.SettingsControl.Connect(Int32, System.Object)          

51dfa2c4 51ddf3d8 PreJIT
Minesweeper.MvvmStructure.View.Controls.SettingsControl..ctor()

51dfa2a4 51ddf3b8 PreJIT
Minesweeper.MvvmStructure.View.Controls.SettingsControl.get_OkText()

51dfa2b4 51ddf3c8 PreJIT
Minesweeper.MvvmStructure.View.Controls.SettingsControl.get_CancelText()

51dfa2d4 51ddf3e8 PreJIT
Minesweeper.MvvmStructure.View.Controls.SettingsControl.Refresh()

51dfa2e4 51ddf408 PreJIT Minesweeper.MvvmStructure.View.Controls.SettingsControl.get_PageModel()

51dfa2f4 51ddf418 PreJIT
Minesweeper.MvvmStructure.View.Controls.SettingsControl.FillAwards()

51dfa304 51ddf428 PreJIT
Minesweeper.MvvmStructure.View.Controls.SettingsControl.UpdateControls()

51dfa314 51ddf438 PreJIT
Minesweeper.MvvmStructure.View.Controls.SettingsControl.SoundsValueChanged(System.Object,
Windows.UI.Xaml.Controls.Primitives.RangeBaseValueChangedEventArgs)

51dfa324 51ddf448 PreJIT
Minesweeper.MvvmStructure.View.Controls.SettingsControl.HoldValueChanged(System.Object,
Windows.UI.Xaml.Controls.Primitives.RangeBaseValueChangedEventArgs)

51dfa334 51ddf458 PreJIT
Minesweeper.MvvmStructure.View.Controls.SettingsControl.OnBack()

51dfa344 51ddf468 PreJIT
Minesweeper.MvvmStructure.View.Controls.SettingsControl.TimerOnOffToggled(System.Object,
System.Object)

51dfa354 51ddf474 PreJIT
Minesweeper.MvvmStructure.View.Controls.SettingsControl.TipsOnOffToggled(System.Object,
Windows.UI.Xaml.RoutedEventArgs)

51dfa364 51ddf480 PreJIT Minesweeper.MvvmStructure.View.Controls.SettingsControl.QuestionMarkOnOffToggled(System.Object,
Windows.UI.Xaml.RoutedEventArgs)

51dfa374 51ddf48c PreJIT
Minesweeper.MvvmStructure.View.Controls.SettingsControl.OneTapOnOffToggled(System.Object,
Windows.UI.Xaml.RoutedEventArgs)

51dfa384 51ddf498 PreJIT
Minesweeper.MvvmStructure.View.Controls.SettingsControl.QuickChangeOnOffToggled(System.Object,
Windows.UI.Xaml.RoutedEventArgs)

51dfa394 51ddf4a4 PreJIT
Minesweeper.MvvmStructure.View.Controls.SettingsControl.SwipeInControlsOnOffToggled(System.Object,
Windows.UI.Xaml.RoutedEventArgs)

51dfa3a4 51ddf4b0 PreJIT
Minesweeper.MvvmStructure.View.Controls.SettingsControl.OnOfGameEndAnimationsToggled(System.Object,
Windows.UI.Xaml.RoutedEventArgs)

51dfa3b4 51ddf4bc PreJIT Minesweeper.MvvmStructure.View.Controls.SettingsControl.CheatShowBombs(System.Object,
Windows.UI.Xaml.RoutedEventArgs)

51dfa3c4 51ddf4cc PreJIT
Minesweeper.MvvmStructure.View.Controls.SettingsControl.CheatAward(System.Object,
Windows.UI.Xaml.RoutedEventArgs)

51dfa3d4 51ddf4dc PreJIT
Minesweeper.MvvmStructure.View.Controls.SettingsControl.CheatPlus100FlaggedMines(System.Object,
Windows.UI.Xaml.RoutedEventArgs)

51dfa3e4 51ddf4ec PreJIT
Minesweeper.MvvmStructure.View.Controls.SettingsControl.CheatPlus100UncoverSquares(System.Object,
Windows.UI.Xaml.RoutedEventArgs)

51dfa3f4 51ddf4fc PreJIT
Minesweeper.MvvmStructure.View.Controls.SettingsControl.CheatPlus50Ladybugs(System.Object,
Windows.UI.Xaml.RoutedEventArgs)

51dfa404 51ddf50c PreJIT
Minesweeper.MvvmStructure.View.Controls.SettingsControl.CheatPlus100DestroyedTraps(System.Object,
Windows.UI.Xaml.RoutedEventArgs)

51dfa414 51ddf51c PreJIT
Minesweeper.MvvmStructure.View.Controls.SettingsControl.CheatShowPatterns(System.Object,
Windows.UI.Xaml.RoutedEventArgs)

51dfa424 51ddf52c PreJIT
Minesweeper.MvvmStructure.View.Controls.SettingsControl.SoundsSliderOnValueChangeComplete(System.Object)

51dfa434 51ddf538 PreJIT
Minesweeper.MvvmStructure.View.Controls.SettingsControl.CheatQuestionsOnBombs(System.Object,
Windows.UI.Xaml.RoutedEventArgs)

51dfa444 51ddf548 PreJIT
Minesweeper.MvvmStructure.View.Controls.SettingsControl.OnResetStatisticClick(System.Object,
Windows.UI.Xaml.RoutedEventArgs)

51dfa454 51ddf558 PreJIT
Minesweeper.MvvmStructure.View.Controls.SettingsControl.ShowResetStatisticsDialog()

51dfa464 51ddf568 PreJIT
Minesweeper.MvvmStructure.View.Controls.SettingsControl.OnConfirmResetStatistics()

51dfa474 51ddf578 PreJIT
Minesweeper.MvvmStructure.View.Controls.SettingsControl.OnResetSettingsClick(System.Object,
Windows.UI.Xaml.RoutedEventArgs)

51dfa484 51ddf588 PreJIT
Minesweeper.MvvmStructure.View.Controls.SettingsControl.ShowResetSettingsDialog()

51dfa494 51ddf598 PreJIT
Minesweeper.MvvmStructure.View.Controls.SettingsControl.OnConfirmResetSettings()

51dfa4a4 51ddf5a4 PreJIT Minesweeper.MvvmStructure.View.Controls.SettingsControl.ResetSettings()

51dfa4b4 51ddf5b0 PreJIT
Minesweeper.MvvmStructure.View.Controls.SettingsControl.ShowResetSettingsSuccessDialog()

51dfa4c4 51ddf5c0 PreJIT
Minesweeper.MvvmStructure.View.Controls.SettingsControl.OnStatReseted()

51dfa4d4 51ddf5d0 PreJIT
Minesweeper.MvvmStructure.View.Controls.SettingsControl.ShowResetStatsSuccessDialog()

51dfa4e4 51ddf5e0 PreJIT
Minesweeper.MvvmStructure.View.Controls.SettingsControl.ResetStat()

51dfa4f4 51ddf5f0 PreJIT Minesweeper.MvvmStructure.View.Controls.SettingsControl.ShowResetStatsFailedDialog()

51dfa504 51ddf600 PreJIT
Minesweeper.MvvmStructure.View.Controls.SettingsControl.OnSize(System.Object,
Windows.UI.Xaml.SizeChangedEventArgs)

51dfa514 51ddf610 PreJIT Minesweeper.MvvmStructure.View.Controls.SettingsControl.InitializeComponent()

51dfa524 51ddf630 PreJIT
Minesweeper.MvvmStructure.View.Controls.SettingsControl.<.ctor>b__0(System.Object,
Windows.UI.Xaml.Controls.BackClickEventArgs)

51dfa534 51ddf640 PreJIT Minesweeper.MvvmStructure.View.Controls.SettingsControl.<ShowResetStatisticsDialog>b__1c(Windows.UI.Popups.IUICommand)

51dfa544 51ddf650 PreJIT
Minesweeper.MvvmStructure.View.Controls.SettingsControl.<ShowResetSettingsDialog>b__1e(Windows.UI.Popups.IUICommand)

51dfa554 51ddf660 PreJIT
Minesweeper.MvvmStructure.View.Controls.SettingsControl.<ShowResetStatsFailedDialog>b__26(Windows.UI.Popups.IUICommand)

51dfa578 51ddf670 PreJIT
Minesweeper.MvvmStructure.View.Controls.SettingsControl.<OnSize>b__27(Windows.UI.Xaml.Controls.Button)

 

- Note: Resume the game, press F5 to call the Game Options so the Connect method can be compiled!

- Search for Minesweeper.MvvmStructure.View.Controls.SettingsControl.Connect and get the Type Reference entry:

 

!bpmd -md 51ddf620

 

- Then we press "g" continue, start a game and press F5 for settings...

 

Breakpoint 1 hit

eax=2a78b880 ebx=00000008 ecx=2a78a244
edx=00000001 esi=2a78a244 edi=00000001

eip=51e9a364 esp=04a6ec2c
ebp=04a6ec54 iopl=0 nv up ei pl
zr na pe nc

cs=0023 
ss=002b ds=002b es=002b 
fs=0053 gs=002b efl=00000246

Minesweeper_ni!Minesweeper.MvvmStructure.View.Controls.SettingsControl.Connect(Int32,
System.Object):

51e9a364 55 push ebp

 

 

!clrstack

OS Thread Id: 0x75e8 (6)

Child SP      
IP Call Site

04a6ec2c 51e9a364 Minesweeper.MvvmStructure.View.Controls.SettingsControl.Connect(Int32, System.Object)

04a6ec34 30b5edda
DomainNeutralILStubClass.IL_STUB_WinRTtoCLR(Int32, IntPtr)

04a6ed00 61172a79 [ComMethodFrame: 04a6ed00]

04a6f378 61172a79 [InlinedCallFrame: 04a6f378]

04a6f374 30b32605
DomainNeutralILStubClass.IL_STUB_CLRtoWinRT(System.Object, System.Uri,
Windows.UI.Xaml.Controls.Primitives.ComponentResourceLocation)

04a6f378 51e9a088 [InlinedCallFrame: 04a6f378]
Windows.UI.Xaml.Application.LoadComponent(System.Object, System.Uri,
Windows.UI.Xaml.Controls.Primitives.ComponentResourceLocation)

04a6f3dc 51e9a088 Minesweeper.MvvmStructure.View.Controls.SettingsControl.InitializeComponent()

04a6f3ec 51e98c07
Minesweeper.MvvmStructure.View.Controls.SettingsControl..ctor()

04a6f404 51ea238c
Minesweeper.MvvmStructure.Service.SettingsService.OnSettings(Windows.UI.Popups.IUICommand)

04a6f414 51ea1ff7
Minesweeper.MvvmStructure.Service.SettingsService.ShowSettings()

04a6f418 0f758eea
Common.Base.ArkPage.ShowSettings()

04a6f420 0f745ad9
Common.KeyboardProcessor.Process(System.Collections.Generic.List`1<Windows.System.VirtualKey>)

04a6f430 0f746129
Common.KeyboardProcessor.CoreWindowKeyDown(Windows.UI.Core.CoreWindow,
Windows.UI.Core.KeyEventArgs)

04a6f448 51d94df7
DomainNeutralILStubClass.IL_STUB_WinRTtoCLR(IntPtr, IntPtr)

04a6f518 61172a79 [ComMethodFrame: 04a6f518]

 

 

- From above we see that Connect() is called from InitializeComponent().
Back to ILSpy we can see the source...

 

//
Minesweeper.MvvmStructure.View.Controls.SettingsControl

[GeneratedCode("Microsoft.Windows.UI.Xaml.Build.Tasks",
" 4.0.0.0"), DebuggerNonUserCode]

public void InitializeComponent()

{

         if(this._contentLoaded)

          {

                    return;

          }

          this._contentLoaded = true;

          Application.LoadComponent(this, new Uri("ms-appx:///MvvmStructure/View/Controls/SettingsControl.xaml"),
0);  

          this.SoundsSlider = (ExtendedSlider)base.FindName("SoundsSlider");

          this.TsTips = (ToggleSwitch)base.FindName("TsTips");

          this.TsTimer = (ToggleSwitch)base.FindName("TsTimer");

          this.TsQuestionMark = (ToggleSwitch)base.FindName("TsQuestionMark");

          this.TsOneTap = (ToggleSwitch)base.FindName("TsOneTap");

          this.TsQuickModeChange = (ToggleSwitch)base.FindName("TsQuickModeChange");

          this.TsUseSwipeInControls = (ToggleSwitch)base.FindName("TsUseSwipeInControls");

          this.TsGameEndAnimations = (ToggleSwitch)base.FindName("TsGameEndAnimations");

          this.HoldSlider = (ExtendedSlider)base.FindName("HoldSlider");

          this.btnResetSettings = (Button)base.FindName("btnResetSettings");

          this.btnResetStat = (Button)base.FindName("btnResetStat");

          this.cheatsGrid = (Grid)base.FindName("cheatsGrid");

          this.cheatAwardsList = (ComboBox)base.FindName("cheatAwardsList");

}

 

 

- Application.LoadComponent() extracts information from MvvmStructure/View/Controls/SettingsControl.xaml calling Connect()

  We can see that from the Native call stack:

 kcn 1000

 

 #

00 Minesweeper_ni!Minesweeper.MvvmStructure.View.Controls.SettingsControl.Connect(Int32, System.Object)

01
Windows_UI_Xaml_ni!DomainNeutralILStubClass.IL_STUB_WinRTtoCLR(Int32, IntPtr)

02 clr!COMToCLRDispatchHelper

03 clr!InvokeStub

04 clr!COMToCLRInvokeTarget

05 clr!COMToCLRWorkerBody

06 clr!COMToCLRWorker

07 CLRStub[StubLinkStub]@31a7cbdf004da062

08
Windows_UI_Xaml!DirectUI::XamlParserCallbacks::XamlManagedRuntimeRPInvokes_SetConnectionId

09
Windows_UI_Xaml!CFxCallbacks::XamlManagedRuntimeRPInvokes_SetConnectionId

0a
Windows_UI_Xaml!XamlManagedRuntime::SetConnectionId

0b
Windows_UI_Xaml!ObjectWriterContext::Runtime_SetConnectionId

0c
Windows_UI_Xaml!ObjectWriter::Logic_DoAssignmentToParentProperty

0d
Windows_UI_Xaml!ObjectWriter::WriteEndMemberCore

0e Windows_UI_Xaml!XamlWriter::WriteNode

0f Windows_UI_Xaml!CParser::LoadXamlCore

10 Windows_UI_Xaml!CParser::LoadXaml

11 Windows_UI_Xaml!CParser::LoadXaml

12
Windows_UI_Xaml!CCoreServices::ParseXamlWithExistingFrameworkRoot

13 Windows_UI_Xaml!CApplication::LoadComponent

14 Windows_UI_Xaml!Application_LoadComponent

15 Windows_UI_Xaml!DirectUI::Application::LoadComponent       

16
Windows_UI_Xaml!DirectUI::ApplicationFactory::LoadComponentWithResourceLocationImpl

17
Windows_UI_Xaml!DirectUI::ApplicationFactory::LoadComponentWithResourceLocation

18
Windows_UI_Xaml_ni!DomainNeutralILStubClass.IL_STUB_CLRtoWinRT(System.Object,
System.Uri, Windows.UI.Xaml.Controls.Primitives.ComponentResourceLocation)

19 Minesweeper_ni!Minesweeper.MvvmStructure.View.Controls.SettingsControl.InitializeComponent()    

1a
Minesweeper_ni!Minesweeper.MvvmStructure.View.Controls.SettingsControl..ctor()

1b
Minesweeper_ni!Minesweeper.MvvmStructure.Service.SettingsService.OnSettings(Windows.UI.Popups.IUICommand)

1c Minesweeper_ni!Minesweeper.MvvmStructure.Service.SettingsService.ShowSettings()

1d Common_ni!Common.Base.ArkPage.ShowSettings()

1e
Common_ni!Common.KeyboardProcessor.Process(System.Collections.Generic.List`1<Windows.System.VirtualKey>)

1f Common_ni!Common.KeyboardProcessor.CoreWindowKeyDown(Windows.UI.Core.CoreWindow,
Windows.UI.Core.KeyEventArgs)

20
Windows_UI_ni!DomainNeutralILStubClass.IL_STUB_WinRTtoCLR(IntPtr, IntPtr)

. . .

. . .

. . .

 

 

- Let's analyze the parameters from the Connect() object...

 

!clrstack -a

 

OS Thread Id: 0x75e8 (6)

Child SP      
IP Call Site

04a6ec2c 51e9a364
Minesweeper.MvvmStructure.View.Controls.SettingsControl.Connect(Int32,
System.Object)

   
PARAMETERS:

        this (<CLR reg>) =
0x2a78a244

        connectionId (<CLR reg>) =
0x00000001      

        target
(0x04a6ec30) = 0x2a78b880           

    LOCALS:

        <no data>

        <no data>

        <no data>

        <no data>

        <no data>

        <no data>

        <no data>

        <no data>

        <no data>

        <no data>

        <no data>

        <no data>

        <no data>

        <no data>

        <no data>

        <no data>

        <no data>

        <no data>

        <no data>

        <no data>

        <no data>

        <no data>

 

04a6ec34 30b5edda
DomainNeutralILStubClass.IL_STUB_WinRTtoCLR(Int32, IntPtr)

    PARAMETERS:

        this = <no data>

        <no data>

        <no data>

 

04a6ed00 61172a79 [ComMethodFrame: 04a6ed00]

04a6f378 61172a79 [InlinedCallFrame: 04a6f378]

04a6f374 30b32605
DomainNeutralILStubClass.IL_STUB_CLRtoWinRT(System.Object, System.Uri,
Windows.UI.Xaml.Controls.Primitives.ComponentResourceLocation)

    PARAMETERS:

        <no data>

        <no data>

        <no
data>

 

04a6f378 51e9a088 [InlinedCallFrame: 04a6f378]
Windows.UI.Xaml.Application.LoadComponent(System.Object, System.Uri,
Windows.UI.Xaml.Controls.Primitives.ComponentResourceLocation)

04a6f3dc 51e9a088
Minesweeper.MvvmStructure.View.Controls.SettingsControl.InitializeComponent()

   
PARAMETERS:

       
this (<CLR reg>) = 0x2a78a244

 

04a6f3ec 51e98c07 Minesweeper.MvvmStructure.View.Controls.SettingsControl..ctor()

   
PARAMETERS:

       
this (<CLR reg>) = 0x2a78a244

    LOCALS:

       
<no data>

       
<no data>

 

04a6f404 51ea238c
Minesweeper.MvvmStructure.Service.SettingsService.OnSettings(Windows.UI.Popups.IUICommand)

   
PARAMETERS:

       
this (<CLR reg>) = 0x02397b6c

       
command = <no data>

 

04a6f414 51ea1ff7
Minesweeper.MvvmStructure.Service.SettingsService.ShowSettings()

   
PARAMETERS:

       
this = <no data>

 

04a6f418 0f758eea Common.Base.ArkPage.ShowSettings()

   
PARAMETERS:

       
this = <no data>

 

04a6f420 0f745ad9
Common.KeyboardProcessor.Process(System.Collections.Generic.List`1<Windows.System.VirtualKey>)

    PARAMETERS:

        this = <no data>

        keys = <no data>

    LOCALS:

        <no data>

        <no data>

 

04a6f430 0f746129
Common.KeyboardProcessor.CoreWindowKeyDown(Windows.UI.Core.CoreWindow,
Windows.UI.Core.KeyEventArgs)

    PARAMETERS:

        this = <no data>

        sender = <no data>

        args = <no data>

    LOCALS:

        <no data>

        <no data>

 

04a6f448 51d94df7
DomainNeutralILStubClass.IL_STUB_WinRTtoCLR(IntPtr, IntPtr)

    PARAMETERS:

        this = <no data>

        <no data>

        <no data>

 

04a6f518 61172a79 [ComMethodFrame: 04a6f518]

 

 

- "this" pointer implicitly sent to the method:

 

!do 0x2a78a244

 

Name:       
Minesweeper.MvvmStructure.View.Controls.SettingsControl

MethodTable: 51dc8bc8

EEClass:    
51dd130c

RCW:        
121ec0e8

CCW:        
020b7820

Size:       
76(0x4c) bytes

File:       
C:\Program
Files\WindowsApps\Microsoft.MicrosoftMinesweeper_2.2.1401.2303_x86__8wekyb3d8bbwe\Minesweeper.exe

Fields:

     
MT Field Offset Type VT Attr   
Value Name

604026a4 
400019a 4 System.Object 0 instance 00000000 __identity

60404738 
40002af 8
...ections.Hashtable 0 instance 00000000
m_ObjectToDataMap

603fb4c0 
400002f 10 System.Boolean 1 instance 0 _alreadyHidden

0f7be948 
4000033 c ...Control,
Common]] 0 instance 00000000 OnHide

603fb4c0 
4000030 1d0 System.Boolean 1  
static 0
_isCustomNavigationWasActive

603fb4c0 
4000031 1d1 System.Boolean 1  
static 0
_isCustomNavigationWasFreezed

603fb4c0 
4000032 1d2 System.Boolean 1  
static 0 _localNavigationChanges

0f67b1e4 
4000034 18
...ingsFlyoutControl 0 static 00000000
<CurrentFlyout>k__BackingField

603fb4c0 
400020e 11 System.Boolean 1 instance 0 _isLoaded

0f67c2ec 
400020f 14
...ls.ExtendedSlider 0 instance 00000000
SoundsSlider

308c18a0 
4000210 18
...rols.ToggleSwitch 0 instance 00000000
TsTips

308c18a0 
4000211 1c
...rols.ToggleSwitch 0 instance 00000000
TsTimer

308c18a0 
4000212 20
...rols.ToggleSwitch 0 instance 00000000
TsQuestionMark

308c18a0 
4000213 24
...rols.ToggleSwitch 0 instance 00000000
TsOneTap

308c18a0 
4000214 28
...rols.ToggleSwitch 0 instance 00000000
TsQuickModeChange

308c18a0 
4000215 2c
...rols.ToggleSwitch 0 instance 00000000
TsUseSwipeInControls

308c18a0 
4000216 30
...rols.ToggleSwitch 0 instance 00000000
TsGameEndAnimations

0f67c2ec 
4000217 34
...ls.ExtendedSlider 0 instance 00000000
HoldSlider

308c1bec 
4000218 38
...l.Controls.Button 0 instance 00000000
btnResetSettings

308c1bec 
4000219 3c
...l.Controls.Button 0 instance 00000000
btnResetStat

308bb4e8 400021a      
40 ...aml.Controls.Grid 0
instance 00000000 cheatsGrid

308c22a0 
400021b 44
...Controls.ComboBox 0 instance 00000000
cheatAwardsList

603fb4c0 
400021c 12 System.Boolean 1 instance 1 _contentLoaded

0baa2ee0 
400021d 130 ...ouble,
mscorlib]] 0 static 0273a32c
CS$<>9__CachedAnonymousMethodDelegate28

 

 

- "target" - 2nd parameter:

 

!do 0x2a78b880

 

Name: Common.Controls.ExtendedSlider

MethodTable: 0f67c2ec

EEClass:    
0f688f88

RCW:        
121ecc10

CCW:        
0fbee600

Size:       
20(0x14) bytes

File:       
C:\Program
Files\WindowsApps\Microsoft.MicrosoftMinesweeper_2.2.1401.2303_x86__8wekyb3d8bbwe\Common.DLL

Fields:

     
MT Field Offset Type VT Attr   
Value Name

604026a4 
400019a 4 System.Object 0 instance 00000000 __identity

60404738 
40002af 8
...ections.Hashtable 0 instance 00000000
m_ObjectToDataMap

0f7baea8 
40001ab c
...geCompleteHandler 0 instance 00000000
ValueChangeComplete

 

- The 1st parameter is:

 

       
connectionId (<CLR reg>) = 0x00000001

 

 

- Because of the "case" in the
Connect() body, chances are the Connect() method will be called with other
values, so let's continue the execution and analyze...

 

r

eax=2a78bb3c ebx=00000008 ecx=2a78a244 edx=00000002 esi=2a78a244
edi=00000002 eip=51e9a364 esp=04a6ec2c ebp=04a6ec54

iopl=0 nv up ei pl zr na pe nc

cs=0023 ss=002b ds=002b es=002b fs=0053 gs=002b efl=00000246

Minesweeper_ni!Minesweeper.MvvmStructure.View.Controls.SettingsControl.Connect(Int32,
System.Object):

51e9a364 55 push ebp

 

 

- edx = 0x2, ecx (this pointer) = 0x2a78a244

 

- Another way to see the same information...

 

!clrstack -a

 

OS Thread Id: 0x75e8 (6)

Child SP      
IP Call Site

04a6ec2c 51e9a364
Minesweeper.MvvmStructure.View.Controls.SettingsControl.Connect(Int32,
System.Object)

   
PARAMETERS:

       
this (<CLR reg>) = 0x2a78a244

        connectionId (<CLR reg>) =
0x00000002

        target (0x04a6ec30) =
0x2a78bb3c

    LOCALS:

        <no data>

        <no data>

        <no data>

        <no data>

        <no data>

        <no data>

        <no data>

        <no data>

        <no data>

        <no data>

        <no data>

        <no data>

        <no data>

        <no data>

        <no data>

        <no data>

        <no data>

        <no data>

        <no data>

        <no data>

        <no
data>

       
<no data>

 

- After hitting the breakpoint a few more times until edx == 0xc (0n12) we have:

 

Breakpoint 1 hit

eax=2a791550 ebx=00000008 ecx=2a78a244 edx=0000000c esi=2a78a244 edi=0000000c

eip=51e9a364 esp=04a6ec2c ebp=04a6ec54 iopl=0 nv up ei pl zr na pe nc

cs=0023 ss=002b ds=002b es=002b fs=0053 gs=002b efl=00000246

Minesweeper_ni!Minesweeper.MvvmStructure.View.Controls.SettingsControl.Connect(Int32,
System.Object):

51e9a364 55 push ebp

 

- So we just proved that scenario 12 where the EventHandler CheatShowBombs() is mapped happens when the other Events are also mapped.

 

- "this" instance again:

!do 0x2a78a244

Name:       
Minesweeper.MvvmStructure.View.Controls.SettingsControl

MethodTable: 51dc8bc8

EEClass:    
51dd130c

RCW:        
121ec0e8

CCW:        
020b7820

Size:       
76(0x4c) bytes

File:       
C:\Program
Files\WindowsApps\Microsoft.MicrosoftMinesweeper_2.2.1401.2303_x86__8wekyb3d8bbwe\Minesweeper.exe

Fields:

     
MT Field Offset Type VT Attr   
Value Name

604026a4 
400019a 4 System.Object 0 instance 00000000 __identity

60404738 
40002af 8
...ections.Hashtable 0 instance 00000000
m_ObjectToDataMap

603fb4c0 
400002f 10 System.Boolean 1 instance 0 _alreadyHidden

0f7be948 4000033       
c ...Control, Common]] 0 instance
00000000 OnHide

603fb4c0 
4000030 1d0 System.Boolean 1  
static 0
_isCustomNavigationWasActive

603fb4c0 
4000031 1d1 System.Boolean 1  
static 0
_isCustomNavigationWasFreezed

603fb4c0 
4000032 1d2 System.Boolean 1  
static 0
_localNavigationChanges

0f67b1e4 
4000034 18
...ingsFlyoutControl 0 static 00000000
<CurrentFlyout>k__BackingField

603fb4c0 
400020e 11 System.Boolean 1 instance 0 _isLoaded

0f67c2ec 
400020f 14
...ls.ExtendedSlider 0 instance 00000000
SoundsSlider

308c18a0 
4000210 18
...rols.ToggleSwitch 0 instance 00000000
TsTips

308c18a0 
4000211 1c
...rols.ToggleSwitch 0 instance 00000000
TsTimer

308c18a0 
4000212 20
...rols.ToggleSwitch 0 instance 00000000
TsQuestionMark

308c18a0 
4000213 24
...rols.ToggleSwitch 0 instance 00000000
TsOneTap

308c18a0 
4000214 28
...rols.ToggleSwitch 0 instance 00000000
TsQuickModeChange

308c18a0 
4000215 2c
...rols.ToggleSwitch 0 instance 00000000
TsUseSwipeInControls

308c18a0 
4000216 30
...rols.ToggleSwitch 0 instance 00000000
TsGameEndAnimations

0f67c2ec 
4000217 34
...ls.ExtendedSlider 0 instance 00000000
HoldSlider

308c1bec 
4000218 38
...l.Controls.Button 0 instance 00000000
btnResetSettings

308c1bec 
4000219 3c
...l.Controls.Button 0 instance 00000000
btnResetStat

308bb4e8 400021a      
40 ...aml.Controls.Grid 0
instance 00000000 cheatsGrid

308c22a0 400021b      
44 ...Controls.ComboBox 0
instance 00000000 cheatAwardsList

603fb4c0 
400021c 12 System.Boolean 1 instance 1 _contentLoaded

0baa2ee0 
400021d 130 ...ouble,
mscorlib]] 0 static 0273a32c
CS$<>9__CachedAnonymousMethodDelegate28

 

- Managed objects from the call stack:

 

!dso

 

OS Thread Id: 0x75e8 (6)

ESP/REG 
Object Name

eax     
2a88cffc Windows.UI.Xaml.Controls.Button

ecx     
2a8896b0 Minesweeper.MvvmStructure.View.Controls.SettingsControl

esi     
2a8896b0 Minesweeper.MvvmStructure.View.Controls.SettingsControl

04A6EC30 2a88cffc Windows.UI.Xaml.Controls.Button

04A6ECA8 2a8896b0
Minesweeper.MvvmStructure.View.Controls.SettingsControl

04A6F394 022a1a48 System.__ComObject

04A6F398 2a8896b0 Minesweeper.MvvmStructure.View.Controls.SettingsControl

04A6F3BC 2a889db0 System.Uri

04A6F3C8 2a8896b0
Minesweeper.MvvmStructure.View.Controls.SettingsControl

04A6F3CC 2a889db0 System.Uri

04A6F3DC 2a8896b0
Minesweeper.MvvmStructure.View.Controls.SettingsControl

04A6F3E0 2a8896b0 Minesweeper.MvvmStructure.View.Controls.SettingsControl

04A6F3F4 02397b6c
Minesweeper.MvvmStructure.Service.SettingsService

04A6F3F8 2a8896b0
Minesweeper.MvvmStructure.View.Controls.SettingsControl

04A6F404 0286f7a4
GalaSoft.MvvmLight.Helpers.WeakAction

04A6F408 2a88969c System.String F5

04A6F420 023718c8
System.Collections.Generic.List`1[[Windows.System.VirtualKey, Windows.System]]

04A6F424 0237188c Common.KeyboardProcessor

04A6F434 02371b30
Windows.Foundation.TypedEventHandler`2[[Windows.UI.Core.CoreWindow,
Windows.UI],[Windows.UI.Core.KeyEventArgs, Windows.UI]]

04A6F438 02397e58 Windows.UI.Core.CoreWindow

04A6F444 2a88943c Windows.UI.Core.KeyEventArgs

04A6F4C0 02371b30
Windows.Foundation.TypedEventHandler`2[[Windows.UI.Core.CoreWindow,
Windows.UI],[Windows.UI.Core.KeyEventArgs, Windows.UI]]

 

- The goal is to replace this:

 

          case 2:

          {

                    ToggleSwitch
toggleSwitch = (ToggleSwitch)target;

                    WindowsRuntimeMarshal.AddEventHandler<RoutedEventHandler>(new
Func<RoutedEventHandler, EventRegistrationToken>(toggleSwitch.add_Toggled),
new Action<EventRegistrationToken>(toggleSwitch.remove_Toggled), new RoutedEventHandler(this.TipsOnOffToggled));

                    break;

          }

 

 

For this (extracted from case 12):

 

          case 2:

          {

                    ToggleSwitch
toggleSwitch = (ToggleSwitch)target;

                    WindowsRuntimeMarshal.AddEventHandler<RoutedEventHandler>(new
Func<RoutedEventHandler,
EventRegistrationToken>(toggleSwitch.add_Toggled), new
Action<EventRegistrationToken>(toggleSwitch.remove_Toggled), new RoutedEventHandler(this.CheatShowBombs));

                    break;

          }

 

-    If we accomplish that when we press F5 and select the switch to enable Tips (if not enabled already), it activates the cheat.

 

- Run until edx = 0x2 and then we go line by line...

 

Note: The binary code has the reversed conditions like if/case when compared to the source code. So the switch/case treats the highest case number first to the lowest case number.

 

- Disassembled code for Case 2:

 

51a4a4d3 8bd8 mov ebx,eax

51a4a4d5 ff3520b09751 push   
dword ptr [Minesweeper_ni+0xb020 (5197b020)]

51a4a4db 8bcb mov ecx,ebx

51a4a4dd 8b55e8 mov edx,dword ptr [ebp-18h]

51a4a4e0 e8539ff5ff call   
CLRStub[ExternalMethodThunk]@3e96c41e519a4438 (519a4438)

51a4a4e5 8b0d98b49751 mov    
ecx,dword ptr [Minesweeper_ni+0xb498 (5197b498)]

51a4a4eb e8f8b7f5ff call   
CORINFO_HELP_NEWSFAST (519a5ce8)

51a4a4f0 898530ffffff mov    
dword ptr [ebp-0D0h],eax

51a4a4f6 b854a39a51 mov eax,offset
Minesweeper.MvvmStructure.View.Controls.SettingsControl.TipsOnOffToggled(System.Object,
Windows.UI.Xaml.RoutedEventArgs) (519aa354)

51a4a4fb 50 push eax

 

 

- Too much work, so let's locate the address of the two methods we are interested, so we can search for them using the disassembled code:

 

Entry

519aa354 5198f474 PreJIT
Minesweeper.MvvmStructure.View.Controls.SettingsControl.TipsOnOffToggled(System.Object, Windows.UI.Xaml.RoutedEventArgs)

519aa3b4 5198f4bc PreJIT
Minesweeper.MvvmStructure.View.Controls.SettingsControl.CheatShowBombs(System.Object, Windows.UI.Xaml.RoutedEventArgs)

 

 

 

- Disassembled code for case 12:

 

51a4ac59 8b0d98b19751 mov    
ecx,dword ptr [Minesweeper_ni+0xb198 (5197b198)]

51a4ac5f e884b0f5ff call   
CORINFO_HELP_NEWSFAST (519a5ce8)

51a4ac64 8bd8 mov ebx,eax

51a4ac66 ff35e0af9751 push   
dword ptr [Minesweeper_ni+0xafe0 (5197afe0)]

51a4ac6c 8bcb mov ecx,ebx

51a4ac6e 8b55b8 mov edx,dword ptr [ebp-48h]

51a4ac71 e8c297f5ff call   
CLRStub[ExternalMethodThunk]@3e96c41e519a4438 (519a4438)

51a4ac76 8b0d98b49751 mov    
ecx,dword ptr [Minesweeper_ni+0xb498 (5197b498)]

51a4ac7c e867b0f5ff call   
CORINFO_HELP_NEWSFAST (519a5ce8)

51a4ac81 8bf0 mov esi,eax

51a4ac83 b8b4a39a51 mov eax,offset Minesweeper.MvvmStructure.View.Controls.SettingsControl.CheatShowBombs(System.Object, Windows.UI.Xaml.RoutedEventArgs) (519aa3b4)

51a4ac88 50 push eax

51a4ac89 8bce mov ecx,esi

51a4ac8b 8bd7 mov edx,edi

51a4ac8d e8a697f5ff call   
CLRStub[ExternalMethodThunk]@3e96c41e519a4438 (519a4438)

51a4ac92 56 push esi

 

 

- Now let's use the "a" command and perform the "surgery" replacing:

 

51a4a4f6 b854a39a51 mov eax,offset
Minesweeper.MvvmStructure.View.Controls.SettingsControl.TipsOnOffToggled(System.Object,
Windows.UI.Xaml.RoutedEventArgs) (519aa354)

For: 

51a4a4f6 b8b4a39a51 mov eax,offset
Minesweeper.MvvmStructure.View.Controls.SettingsControl.CheatShowBombs(System.Object,
Windows.UI.Xaml.RoutedEventArgs) (519aa3b4)

- To accomplish that we use mov eax, <address>

 

- To test, start a new game, disable the breakpoints and click on any square. Corner squares are better since they are less likely to hit a mine.

  After doing that press F5 and it will display all the mines.

 

 

If you go to Adventure Mode you can press F5 before starting the game.

 

 

 

###############################

#### DEMO #4

###############################

 

- To script the “surgery” we need to know the offset from the base address of the Minesweeper.MvvmStructure.View.Controls.SettingsControl.Connect(Int32, System.Object) method:

 

08a525cd b8944c4f00 mov eax,offset Minesweeper.MvvmStructure.View.Controls.SettingsControl.TipsOnOffToggled(System.Object, Windows.UI.Xaml.RoutedEventArgs) (004f4c94)

Offset = 00000185 <<< Offset.

 

And the other offset using the same procedure is: 000008d6

 

08a52d1e b8444d4f00 mov eax,offset Minesweeper.MvvmStructure.View.Controls.SettingsControl.CheatShowBombs(System.Object, Windows.UI.Xaml.RoutedEventArgs) (004f4d44)

Offset = 000008d6

 

 

Since I restarted the app during the debugging session the addresses from the screenshot are different from the text
and so are the mnemonics below. Don’t worry about that since your address is very likely to be different from mine anyways.

 

- Offset 00000185 == <address> b854a37e56 mov eax,offset
Minesweeper.MvvmStructure.View.Controls.SettingsControl.TipsOnOffToggled(System.Object, Windows.UI.Xaml.RoutedEventArgs)

 

- Offset 000008d6 == <address> b8b4a37e56 mov eax,offset
Minesweeper.MvvmStructure.View.Controls.SettingsControl.CheatShowBombs(System.Object, Windows.UI.Xaml.RoutedEventArgs)

 

 

- We need to change 5 bytes, copying from one address to the other:

 

m 5688ac83 L0n5 5688a4f6

 

Where 5688ac83 is the address of move eax, offset
Minesweeper.MvvmStructure.View.Controls.SettingsControl.CheatShowBombs()
and
5688a4f6 is the address of move eax, offset Minesweeper.MvvmStructure.View.Controls.SettingsControl.TipsOnOffToggled()

 

ATTENTION! After finishing the debugging session or after running the script below, use:

plmdebug /disableDebug

 

Otherwise, WinDbg will start whenever you run Minesweeper. 

 

Script source code:

 

$$
$$ =============================================================================
$$ Cheats on Minesweeper for Windows 8, showing all hiden bombs.
$$
$$ Compatibility: Windows 8
$$
$$ Usage: $$>< to run the program.
$$
$$ Requirements: Public symbols.
$$
$$ Usage:
$$ a) Run Minesweeper for Windows 8.
$$ b) Go to the WinDbg folder (32 bits version) and run:
$$ plmdebug /enableDebug <PID> "<path to you Windbg>\windbg.exe" 
$$ Reference: https://msdn.microsoft.com/en-us/library/windows/hardware/jj680085%28v=vs.85%29.aspx
$$ c) Attach WinDbg to the Minesweeper instance.
$$ d) Load symbols.
$$ e) Type the "g" command and let it run to make sure all modules are loaded.
$$ f) Press F5 in order to JIT a method that will be patched. Very important! <<<<<<<<
$$ g) Break into the debugger at any point after loading the modules.
$$ h) Run: $$><myscripts\CHEATING_MINESWEEPER_WIN8.TXT
$$ Note: In my case the right command line is:
$$ $$><c:\debuggers32bit\myscripts\cheating_minesweeper_win8.txt
$$ i) Start a game, press F5 to go to Options, click the Alert switch.
$$ j) Return to the game, start it and press F5 do see the bombs.
$$ k) In Adventure Mode, just press F5 and you will se all the mines.
$$
$$ Roberto Alexis Farah
$$ Blog: https://blogs.msdn.com/debuggingtoolbox/
$$
$$ Modified on 7/2/2014 - Offsets changed to match the new Minesweeper update.
$$
$$ Modified on 5/15/2014 - Now it works with the latest Minesweeper update.
$$ The new Minesweeper doesn't have pre-compiled modules anymore!
$$
$$ All my scripts are provided "AS IS" with no warranties, and confer no rights.
$$ =============================================================================
$$
$$ We need SOS.DLL.
.loadby sos clr
$$
$$ Get the JITTED address of Minesweeper.MvvmStructure.View.Controls.SettingsControl.Connect.
.catch
{
    .foreach /pS 0n14 (tokenName2EE {!name2ee minesweeper.exe Minesweeper.MvvmStructure.View.Controls.SettingsControl.Connect})
    {
        $$ Here is what this loop does, it returns only this:
        $$ !name2ee minesweeper Minesweeper.MvvmStructure.View.Controls.SettingsControl.Connect
        $$ Module: 00382ed4
        $$ Assembly: Minesweeper.exe
        $$ Token: 060004b8
        $$ MethodDesc: 06eee3d0
        $$ Name: Minesweeper.MvvmStructure.View.Controls.SettingsControl.Connect(Int32, System.Object)
        $$ JITTED Code Address: 08a52448 <<< This is the only value assigned to tokenName2E

        r @$t0 = ${tokenName2EE}
    }

    $$ Offset from beginning of Minesweeper.MvvmStructure.View.Controls.SettingsControl.Connect to this line:
    $$ <address> b854a39a51 mov eax,offset Minesweeper.MvvmStructure.View.Controls.SettingsControl.TipsOnOffToggled(System.Object, Windows.UI.Xaml.RoutedEventArgs)
    r @$t1 = @$t0 + 0x00000192
    $$
    $$ Offset from base address to this line:
    $$ <address> b8b4a37e56 mov eax,offset Minesweeper.MvvmStructure.View.Controls.SettingsControl.CheatShowBombs(System.Object, Windows.UI.Xaml.RoutedEventArgs)
    r @$t2 = @$t0 + 0x0000091f
    $$
    $$ Now we just copy 5 bytes from $t1 to $t0.
    m @$t2 L0n5 @$t1
    $$
    $$ Surgery done! Now resume the application...
    gn
}

 

Enjoy! :-)

Comments

  • Anonymous
    August 26, 2014
    Break-in sent, waiting 30 seconds... WARNING: Break-in timed out, suspending.         This is usually caused by another thread holding the loader lock (444.14dc): Wake debugger - code 80000007 (first chance) *** ERROR: Symbol file could not be found.  Defaulted to export symbols for C:WINDOWSSYSTEM32ntdll.dll - *** ERROR: Symbol file could not be found.  Defaulted to export symbols for C:WindowsSystem32twinapi.appcore.dll - eax=00000000 ebx=00000000 ecx=00000000 edx=00000000 esi=00000002 edi=00000002 eip=7705d2ec esp=009fe8e8 ebp=009fea68 iopl=0         nv up ei pl nz na pe nc cs=0023  ss=002b  ds=002b  es=002b  fs=0053  gs=002b             efl=00000206 ntdll!NtWaitForMultipleObjects+0xc: 7705d2ec c21400          ret     14h

  • Anonymous
    August 26, 2014
    The comment has been removed

  • Anonymous
    August 27, 2014
    Maybe this isn't for me. :( I can't figure out how to use that command. I start Minesweeper Open windbg.exe (32 bit) Attach process Do I run that command in that window?

  • Anonymous
    August 28, 2014
    From the debuggers folder you should see the plmdebug tool. So run Minesweeper, get the PID, and use the plmdebug command using the path where your WinDBG is located. After doing that you should be able to attach WinDBG to the process. You should run the script from the WinDBG command window. Keep in mind though that any updates/changes in Minesweeper will break the script, however, it should be easy to fix it, it is just a matter of changing offsets. Good luck! :)

  • Anonymous
    September 03, 2014
    OK, I understand what I need to do now. I have the PID and plmdebug installed, but when I first run plmdebug.exe it opens and closes instantly preventing me from entering the "plmdebug /enableDebug <PID> "C:debuggers32bitwindbg.exe"

  • Anonymous
    September 03, 2014
    Open a console window via cmd. Go to the location where PLMDEBUG is installed and do that. It should work. ;-)