[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 14hAnonymous
August 26, 2014
The comment has been removedAnonymous
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. ;-)