Initial commit - WPinternals 2.6

This commit is contained in:
Rene Lergner
2018-10-25 22:35:49 +02:00
commit 396ae57f05
483 changed files with 159677 additions and 0 deletions
+100
View File
@@ -0,0 +1,100 @@
<!--
Copyright (c) 2018, Rene Lergner - wpinternals.net - @Heathcliff74xda
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the "Software"),
to deal in the Software without restriction, including without limitation
the rights to use, copy, modify, merge, publish, distribute, sublicense,
and/or sell copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.
-->
<UserControl x:Class="WPinternals.About"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:WPinternals"
mc:Ignorable="d"
d:DesignWidth="700">
<UserControl.Resources>
<BitmapImage x:Key="LogoImageSource" UriSource="..\Logo.png" />
</UserControl.Resources>
<Border BorderThickness="1" BorderBrush="#FFD4D4D4" HorizontalAlignment="Stretch" VerticalAlignment="Center" Padding="25">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="250"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Image Grid.Column="0" HorizontalAlignment="Center" VerticalAlignment="Center" Source="{StaticResource LogoImageSource}" Margin="-10,0,0,0">
</Image>
<local:FlowDocumentScrollViewerNoMouseWheel Grid.Column="1" Margin="20,0,0,0" VerticalScrollBarVisibility="Auto" >
<FlowDocument x:Name="Document" FontFamily="Segoe UI" FontSize="12" Loaded="Document_Loaded" TextAlignment="Left">
<local:Paragraph>
<Run Text="Windows Phone Internals" FontSize="18" FontWeight="Bold" Foreground="#FF3753A6" />
<LineBreak />
<Run>
<Run.Text>
<MultiBinding StringFormat="Version {0}.{1}">
<Binding Path="MajorVersion" Mode="OneWay" />
<Binding Path="MinorVersion" Mode="OneWay" />
</MultiBinding>
</Run.Text>
</Run>
<LineBreak />
<Run Text="Copyright © 2014 - 2018 by Heathcliff74" />
<LineBreak />
<Hyperlink NavigateUri="http://www.wpinternals.net">www.wpinternals.net</Hyperlink>
<LineBreak />
<LineBreak />
<Run Text="Many thanks to the " />
<Hyperlink NavigateUri="http://www.advance-box.com/">ATF Team</Hyperlink>
<Run Text=" and the " />
<Hyperlink NavigateUri="http://smart-gsm.net/">Smart GSM Team</Hyperlink>
<Run Text=" for supplying JTAG and test equipment." />
<LineBreak />
<LineBreak />
<Run Text="Many thanks to X-Shadow, Justin Angel, Joseph Manzy, Jeremy Sinclair, Vlad Slavskiy and Hikari Calyx for supplying test-phones." />
<LineBreak />
<LineBreak />
<Run Text="Many thanks to X-Shadow, Cotulla, Rafael Rivera, Ultrashot and Gustave M. for having enlighting discussions about Windows Mobile." />
<LineBreak />
<LineBreak />
<Run Text="This software uses the following libraries:" />
<LineBreak />
<Run Text="WinUSBNet by Thomas Bleeker (" />
<Hyperlink NavigateUri="http://opensource.org/licenses/mit-license.php">license</Hyperlink>
<Run Text=")" />
<LineBreak />
<Run Text="Prism by Microsoft patterns &amp; practices (" />
<Hyperlink NavigateUri="http://compositewpf.codeplex.com/license">license</Hyperlink>
<Run Text=")" />
<LineBreak />
<Run Text="Json.NET by James Newton-King (" />
<Hyperlink NavigateUri="https://raw.github.com/JamesNK/Newtonsoft.Json/master/LICENSE.md">license</Hyperlink>
<Run Text=")" />
<LineBreak />
<Run Text="7-zip LZMA SDK by Igor Pavlov (" />
<Hyperlink NavigateUri="http://www.7-zip.org/sdk.html">license</Hyperlink>
<Run Text=")" />
<LineBreak />
<Run Text="DiscUtils by Kenneth Bell (" />
<Hyperlink NavigateUri="https://github.com/DiscUtils/DiscUtils/blob/master/LICENSE.txt">license</Hyperlink>
<Run Text=")" />
</local:Paragraph>
</FlowDocument>
</local:FlowDocumentScrollViewerNoMouseWheel>
</Grid>
</Border>
</UserControl>
+52
View File
@@ -0,0 +1,52 @@
// Copyright (c) 2018, Rene Lergner - wpinternals.net - @Heathcliff74xda
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the "Software"),
// to deal in the Software without restriction, including without limitation
// the rights to use, copy, modify, merge, publish, distribute, sublicense,
// and/or sell copies of the Software, and to permit persons to whom the
// Software is furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.
using System.Diagnostics;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
namespace WPinternals
{
/// <summary>
/// Interaction logic for About.xaml
/// </summary>
public partial class About : UserControl
{
public About()
{
InitializeComponent();
}
private void HandleHyperlinkClick(object sender, RoutedEventArgs args)
{
Hyperlink link = args.Source as Hyperlink;
if (link != null)
{
Process.Start(link.NavigateUri.ToString());
}
}
private void Document_Loaded(object sender, RoutedEventArgs e)
{
(sender as FlowDocument).AddHandler(Hyperlink.ClickEvent, new RoutedEventHandler(HandleHyperlinkClick));
}
}
}
+112
View File
@@ -0,0 +1,112 @@
<!--
Copyright (c) 2018, Rene Lergner - wpinternals.net - @Heathcliff74xda
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the "Software"),
to deal in the Software without restriction, including without limitation
the rights to use, copy, modify, merge, publish, distribute, sublicense,
and/or sell copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.
-->
<UserControl x:Class="WPinternals.BackupView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:WPinternals"
mc:Ignorable="d"
d:DesignWidth="700">
<UserControl.Resources>
<local:ObjectToVisibilityConverter x:Key="ObjectToVisibilityConverter" />
</UserControl.Resources>
<StackPanel VerticalAlignment="Center">
<Border BorderThickness="1" BorderBrush="#FFD4D4D4" HorizontalAlignment="Stretch" VerticalAlignment="Center" Margin="0,0,0,20">
<StackPanel>
<local:FlowDocumentScrollViewerNoMouseWheel Grid.Column="1" Margin="20,0,20,0" VerticalScrollBarVisibility="Auto" >
<FlowDocument FontFamily="Segoe UI" FontSize="12" Loaded="Document_Loaded" TextAlignment="Left">
<FlowDocument.Resources>
<!-- This style is used to set the margins for all paragraphs in the FlowDocument to 0. -->
<Style TargetType="{x:Type Paragraph}">
<Setter Property="Margin" Value="0"/>
</Style>
<Style TargetType="{x:Type Section}">
<Setter Property="Margin" Value="0"/>
</Style>
</FlowDocument.Resources>
<local:Paragraph>
<Run Text="Backup to archive" FontSize="18" FontWeight="Bold" Foreground="#FF3753A6" />
<LineBreak />
<LineBreak />
<Run Text="Before you can make a backup of the phone, you need to have Mass Storage mode " />
<Hyperlink NavigateUri="UnlockBoot">unlocked</Hyperlink>
<Run Text=" on the phone first. Make sure you don't have any Windows Phone disks or partitions mounted before you continue to Mass Storage Mode. While in Mass Storage Mode, the phone-battery will not charge. Creating a backup of the phone in Mass Storage Mode will even drain your battery quite fast. Before you continue, make sure the phone is fully charged, or else the phone may reboot before the backup is complete." />
<LineBreak />
<LineBreak />
<local:FilePicker Caption="Archive: " SelectionText="Select the target-file for backup..." Path="{Binding ArchivePath, Mode=TwoWay}" DefaultFileName="Backup.zip" SaveDialog="True" HorizontalAlignment="Stretch" PathChanged="FilePicker_PathChanged"/>
<LineBreak />
<LineBreak />
<local:CollapsibleRun Text="You have to connect your phone before you can continue." IsVisible="{Binding IsPhoneDisconnected, Mode=OneWay}"/>
<local:CollapsibleRun Text="When you continue, the phone will be switched to Mass Storage mode and then a backup will be made from the selected partitions." IsVisible="{Binding IsPhoneInOtherMode, Mode=OneWay}"/>
<local:CollapsibleRun Text="The phone is in Mass Storage mode. You can continue to make a backup." IsVisible="{Binding IsPhoneInMassStorage, Mode=OneWay}"/>
</local:Paragraph>
</FlowDocument>
</local:FlowDocumentScrollViewerNoMouseWheel>
<StackPanel Orientation="Horizontal" Width="Auto" Height="Auto" HorizontalAlignment="Right" VerticalAlignment="Bottom" Margin="0,10,40,25">
<Button Command="{Binding Path=BackupArchiveCommand, Mode=OneWay}" Content="Backup phone" Width="120" Height="Auto" Padding="0,5" />
</StackPanel>
</StackPanel>
</Border>
<Border BorderThickness="1" BorderBrush="#FFD4D4D4" HorizontalAlignment="Stretch" VerticalAlignment="Center" Margin="0,0,0,0">
<StackPanel>
<local:FlowDocumentScrollViewerNoMouseWheel Grid.Column="1" Margin="20,0,20,0" VerticalScrollBarVisibility="Auto" >
<FlowDocument FontFamily="Segoe UI" FontSize="12" Loaded="Document_Loaded" TextAlignment="Left">
<FlowDocument.Resources>
<!-- This style is used to set the margins for all paragraphs in the FlowDocument to 0. -->
<Style TargetType="{x:Type Paragraph}">
<Setter Property="Margin" Value="0"/>
</Style>
<Style TargetType="{x:Type Section}">
<Setter Property="Margin" Value="0"/>
</Style>
</FlowDocument.Resources>
<local:Paragraph>
<Run Text="Backup separate partitions" FontSize="18" FontWeight="Bold" Foreground="#FF3753A6" />
<LineBreak />
<LineBreak />
<Run Text="When you experiment with the OS or flash Custom ROM's you can make a backup of the MainOS partition and Data partition, so you can revert to an earlier state. Remember that the MainOS partition and Data partition are tied together. So you always need to backup or restore the MainOS partition and Data partition together. Select one or more target-files for backup." />
<LineBreak />
<LineBreak />
<local:FilePicker Caption="EFIESP: " SelectionText="Select the target-file for backup of the EFIESP partition..." Path="{Binding EFIESPPath, Mode=TwoWay}" AllowNull="True" SaveDialog="True" DefaultFileName="EFIESP.bin" HorizontalAlignment="Stretch" PathChanged="FilePicker_PathChanged"/>
<LineBreak />
<LineBreak />
<local:FilePicker Caption="MainOS: " SelectionText="Select the target-file for backup of the MainOS partition..." Path="{Binding MainOSPath, Mode=TwoWay}" AllowNull="True" SaveDialog="True" DefaultFileName="MainOS.bin" HorizontalAlignment="Stretch" PathChanged="FilePicker_PathChanged"/>
<LineBreak />
<LineBreak />
<local:FilePicker Caption="Data: " SelectionText="Select the target-file for backup of the Data partition..." Path="{Binding DataPath, Mode=TwoWay}" AllowNull="True" SaveDialog="True" DefaultFileName="Data.bin" HorizontalAlignment="Stretch" PathChanged="FilePicker_PathChanged"/>
<LineBreak />
<LineBreak />
<local:CollapsibleRun Text="You have to connect your phone before you can continue." IsVisible="{Binding IsPhoneDisconnected, Mode=OneWay}"/>
<local:CollapsibleRun Text="When you continue, the phone will be switched to Mass Storage mode and then a backup will be made from the selected partitions." IsVisible="{Binding IsPhoneInOtherMode, Mode=OneWay}"/>
<local:CollapsibleRun Text="The phone is in Mass Storage mode. You can continue to make a backup." IsVisible="{Binding IsPhoneInMassStorage, Mode=OneWay}"/>
</local:Paragraph>
</FlowDocument>
</local:FlowDocumentScrollViewerNoMouseWheel>
<StackPanel Orientation="Horizontal" Width="Auto" Height="Auto" HorizontalAlignment="Right" VerticalAlignment="Bottom" Margin="0,10,40,25">
<Button Command="{Binding Path=BackupCommand, Mode=OneWay}" Content="Backup phone" Width="120" Height="Auto" Padding="0,5" />
</StackPanel>
</StackPanel>
</Border>
</StackPanel>
</UserControl>
+57
View File
@@ -0,0 +1,57 @@
// Copyright (c) 2018, Rene Lergner - wpinternals.net - @Heathcliff74xda
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the "Software"),
// to deal in the Software without restriction, including without limitation
// the rights to use, copy, modify, merge, publish, distribute, sublicense,
// and/or sell copies of the Software, and to permit persons to whom the
// Software is furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
namespace WPinternals
{
/// <summary>
/// Interaction logic for BackupView.xaml
/// </summary>
public partial class BackupView : UserControl
{
public BackupView()
{
InitializeComponent();
}
private void HandleHyperlinkClick(object sender, RoutedEventArgs args)
{
Hyperlink link = args.Source as Hyperlink;
if (link != null)
{
if (link.NavigateUri.ToString() == "UnlockBoot")
((BackupTargetSelectionViewModel)DataContext).SwitchToUnlockBoot();
}
}
private void Document_Loaded(object sender, RoutedEventArgs e)
{
(sender as FlowDocument).AddHandler(Hyperlink.ClickEvent, new RoutedEventHandler(HandleHyperlinkClick));
}
private void FilePicker_PathChanged(object sender, PathChangedEventArgs e)
{
((BackupTargetSelectionViewModel)DataContext).EvaluateViewState();
}
}
}
+118
View File
@@ -0,0 +1,118 @@
<!--
Copyright (c) 2018, Rene Lergner - wpinternals.net - @Heathcliff74xda
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the "Software"),
to deal in the Software without restriction, including without limitation
the rights to use, copy, modify, merge, publish, distribute, sublicense,
and/or sell copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.
-->
<UserControl x:Class="WPinternals.BootRestoreResourcesView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:WPinternals"
mc:Ignorable="d"
d:DesignWidth="700">
<UserControl.Resources>
<local:HexConverter x:Key="HexConverter" />
<local:BooleanConverter x:Key="VisibilityConverter" OnTrue="Visible" OnFalse="Collapsed" OnNull="Collapsed"/>
<local:BooleanConverter x:Key="InverseVisibilityConverter" OnTrue="Collapsed" OnFalse="Visible" OnNull="Collapsed" />
</UserControl.Resources>
<StackPanel VerticalAlignment="Center">
<Border BorderThickness="1" BorderBrush="#FFD4D4D4" HorizontalAlignment="Stretch" VerticalAlignment="Center" Padding="25" Margin="0,0,0,0">
<local:FlowDocumentScrollViewerNoMouseWheel Grid.Column="1" Margin="20,0" VerticalScrollBarVisibility="Auto" >
<FlowDocument Loaded="Document_Loaded" FontFamily="Segoe UI" FontSize="12" PagePadding="1">
<local:Paragraph>
<Run Text="General info" FontSize="18" FontWeight="Bold" Foreground="#FF3753A6" />
<LineBreak />
<LineBreak />
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="200" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<TextBlock Grid.Row="0" Grid.Column="0" Text="Operating mode" />
<TextBlock Grid.Row="0" Grid.Column="1" Text="{Binding CurrentMode}" FontWeight="Bold" Foreground="#FF3753A6" TextWrapping="Wrap" />
<TextBlock Grid.Row="1" Grid.Column="0" Text="Root Key Hash" />
<TextBlock Grid.Row="1" Grid.Column="1" Text="{Binding Path=RootKeyHash, Converter={StaticResource HexConverter}, Mode=OneWay}" TextWrapping="Wrap" />
</Grid>
</local:Paragraph>
</FlowDocument>
</local:FlowDocumentScrollViewerNoMouseWheel>
</Border>
<Border BorderThickness="1" BorderBrush="#FFD4D4D4" HorizontalAlignment="Stretch" VerticalAlignment="Center" Padding="25" Margin="0,20,0,0" >
<StackPanel Margin="20,0,20,0">
<StackPanel Visibility="{Binding Path=TargetHasNewFlashProtocol, Converter={StaticResource InverseVisibilityConverter}}">
<local:FlowDocumentScrollViewerNoMouseWheel Grid.Column="1" VerticalScrollBarVisibility="Auto" >
<FlowDocument Loaded="Document_Loaded" FontFamily="Segoe UI" FontSize="12" PagePadding="1">
<local:Paragraph TextAlignment="Left">
<Run Text="Resources for boot restore" FontSize="18" FontWeight="Bold" Foreground="#FF3753A6" />
<LineBreak />
<LineBreak />
<Run Text="You can use this function to restore the boot partitions to their original state or to repair corrupted boot partitions. If your phone currently has Root Access, then first disable Root Access before you restore the bootloader! If your bootloader is currently unlocked, the bootloader will be restored to its original state and the phone will boot normally. If you are trying to repair a corrupted bootloader, afterwards the phone will probably remain in Flash-mode. From there on, you can only flash a stock ROM. This will erase all you apps, data and settings."/>
<LineBreak />
</local:Paragraph>
</FlowDocument>
</local:FlowDocumentScrollViewerNoMouseWheel>
<local:FilePicker SelectionText="Select your FFU-image..." Path="{Binding FFUPath, Mode=TwoWay}" HorizontalAlignment="Stretch"/>
<local:FlowDocumentScrollViewerNoMouseWheel Grid.Column="1" VerticalScrollBarVisibility="Auto" Visibility="{Binding Path=IsBootLoaderUnlocked, Converter={StaticResource InverseVisibilityConverter}}">
<FlowDocument Loaded="Document_Loaded" FontFamily="Segoe UI" FontSize="12" PagePadding="1">
<local:Paragraph TextAlignment="Left">
<LineBreak />
<Run Text="You should also select a folder where you have Lumia Emergency Flash Loaders. This tool will try to select the Loader that is suitable for your phone."/>
<LineBreak />
</local:Paragraph>
</FlowDocument>
</local:FlowDocumentScrollViewerNoMouseWheel>
<local:FolderPicker SelectionText="Select the folder with Lumia Emergency Flash Loaders..." Path="{Binding LoadersPath, Mode=TwoWay}" HorizontalAlignment="Stretch" Visibility="{Binding Path=IsBootLoaderUnlocked, Converter={StaticResource InverseVisibilityConverter}}"/>
</StackPanel>
<StackPanel Visibility="{Binding Path=TargetHasNewFlashProtocol, Converter={StaticResource VisibilityConverter}}">
<local:FlowDocumentScrollViewerNoMouseWheel Grid.Column="1" VerticalScrollBarVisibility="Auto" >
<FlowDocument Loaded="Document_Loaded" FontFamily="Segoe UI" FontSize="12" PagePadding="1">
<local:Paragraph TextAlignment="Left">
<Run Text="Restore SecureBoot" FontSize="18" FontWeight="Bold" Foreground="#FF3753A6" />
<LineBreak />
<LineBreak />
<Run Text="You can use this function to restore SecureBoot to its original state. During the process of restoring SecureBoot, the phone will be switched to Mass Storage mode. After that the phone must be rebooted. You will be notified. You will need to reboot the phone manually at that stage, because it cannot be done programmatically. After you reboot the phone, the relock procedure will continue automatically."/>
</local:Paragraph>
</FlowDocument>
</local:FlowDocumentScrollViewerNoMouseWheel>
<local:FlowDocumentScrollViewerNoMouseWheel Grid.Column="1" VerticalScrollBarVisibility="Auto" Visibility="{Binding Path=IsProfileFfuValid, Converter={StaticResource InverseVisibilityConverter}}">
<FlowDocument Loaded="Document_Loaded" FontFamily="Segoe UI" FontSize="12" PagePadding="1">
<local:Paragraph TextAlignment="Left">
<LineBreak />
<Run Text="WARNING: " FontWeight="Bold" Foreground="Red" />
<Run Text="No valid profile-FFU could be found. Go to the "/>
<Hyperlink NavigateUri="Download">download</Hyperlink>
<Run Text=" page in this tool and download a new FFU-file for your phone, or add an existing FFU-file to the repository."/>
</local:Paragraph>
</FlowDocument>
</local:FlowDocumentScrollViewerNoMouseWheel>
</StackPanel>
<StackPanel Orientation="Horizontal" Width="Auto" Height="Auto" HorizontalAlignment="Right" VerticalAlignment="Bottom" Margin="0,25,0,0">
<Button Command="{Binding Path=OkCommand, Mode=OneWay}" Content="Continue" Width="100" Height="Auto" Padding="0,5"/>
<Button Command="{Binding Path=CancelCommand, Mode=OneWay}" Content="Abort" Width="100" Height="Auto" Padding="0,5" Margin="20,0,0,0" />
</StackPanel>
</StackPanel>
</Border>
</StackPanel>
</UserControl>
+62
View File
@@ -0,0 +1,62 @@
// Copyright (c) 2018, Rene Lergner - wpinternals.net - @Heathcliff74xda
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the "Software"),
// to deal in the Software without restriction, including without limitation
// the rights to use, copy, modify, merge, publish, distribute, sublicense,
// and/or sell copies of the Software, and to permit persons to whom the
// Software is furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
namespace WPinternals
{
/// <summary>
/// Interaction logic for FlashResourcesView.xaml
/// </summary>
public partial class BootRestoreResourcesView : UserControl
{
public BootRestoreResourcesView()
{
InitializeComponent();
}
private void HandleHyperlinkClick(object sender, RoutedEventArgs args)
{
Hyperlink link = args.Source as Hyperlink;
if (link != null)
{
if (link.NavigateUri.ToString() == "Flash")
((FlashResourcesViewModel)DataContext).SwitchToFlashRom();
if (link.NavigateUri.ToString() == "UndoRoot")
((FlashResourcesViewModel)DataContext).SwitchToUndoRoot();
if (link.NavigateUri.ToString() == "Download")
((FlashResourcesViewModel)DataContext).SwitchToDownload();
else
System.Diagnostics.Process.Start(link.NavigateUri.ToString());
}
}
private void Document_Loaded(object sender, RoutedEventArgs e)
{
(sender as FlowDocument).AddHandler(Hyperlink.ClickEvent, new RoutedEventHandler(HandleHyperlinkClick));
}
private void FolderPicker_PathChanged(object sender, PathChangedEventArgs e)
{
}
}
}
+53
View File
@@ -0,0 +1,53 @@
<!--
Copyright (c) 2018, Rene Lergner - wpinternals.net - @Heathcliff74xda
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the "Software"),
to deal in the Software without restriction, including without limitation
the rights to use, copy, modify, merge, publish, distribute, sublicense,
and/or sell copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.
-->
<UserControl x:Class="WPinternals.BusyView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:WPinternals"
mc:Ignorable="d"
d:DesignWidth="700">
<UserControl.Resources>
<BitmapImage x:Key="Busy" UriSource="..\aerobusy.gif" />
<local:ObjectToVisibilityConverter x:Key="ObjectToVisibilityConverter" />
<local:InverseObjectToVisibilityConverter x:Key="InverseObjectToVisibilityConverter" />
<local:BooleanConverter x:Key="VisibilityConverter" OnTrue="Visible" OnFalse="Collapsed" OnNull="Collapsed"/>
<local:BooleanConverter x:Key="InverseVisibilityConverter" OnTrue="Collapsed" OnFalse="Visible" OnNull="Collapsed" />
</UserControl.Resources>
<Border BorderThickness="1" BorderBrush="#FFD4D4D4" HorizontalAlignment="Stretch" VerticalAlignment="Center" Padding="25" Visibility="{Binding Path=Message, Converter={StaticResource ObjectToVisibilityConverter}}">
<StackPanel VerticalAlignment="Center" HorizontalAlignment="Stretch" Orientation="Vertical">
<StackPanel HorizontalAlignment="Center" VerticalAlignment="Center" Orientation="Horizontal">
<local:GifImage x:Name="GifImage" Stretch="None" Visibility="{Binding Path=ShowAnimation, Converter={StaticResource VisibilityConverter}}"/>
<Label Content="{Binding Message}" FontSize="20" Margin="10,0,0,0" VerticalContentAlignment="Center"/>
</StackPanel>
<ProgressBar MaxWidth="500" MinWidth="300" Height="10" Margin="0,10,0,5" HorizontalAlignment="Stretch" HorizontalContentAlignment="Stretch" Value="{Binding ProgressPercentage}" Visibility="{Binding Path=ProgressPercentage, Converter={StaticResource ObjectToVisibilityConverter}}"/>
<TextBlock HorizontalAlignment="Center" Text="{Binding ProgressText}" Visibility="{Binding Path=ProgressText, Converter={StaticResource ObjectToVisibilityConverter}}" >
<TextBlock.Foreground>
<SolidColorBrush Color="{DynamicResource {x:Static SystemColors.ControlDarkDarkColorKey}}"/>
</TextBlock.Foreground>
</TextBlock>
<TextBlock TextAlignment="Center" HorizontalAlignment="Center" Text="{Binding SubMessage}" Visibility="{Binding Path=SubMessage, Converter={StaticResource ObjectToVisibilityConverter}}" Margin="0,10,0,0" TextWrapping="WrapWithOverflow" />
</StackPanel>
</Border>
</UserControl>
+39
View File
@@ -0,0 +1,39 @@
// Copyright (c) 2018, Rene Lergner - wpinternals.net - @Heathcliff74xda
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the "Software"),
// to deal in the Software without restriction, including without limitation
// the rights to use, copy, modify, merge, publish, distribute, sublicense,
// and/or sell copies of the Software, and to permit persons to whom the
// Software is furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.
using System.Windows.Controls;
namespace WPinternals
{
/// <summary>
/// Interaction logic for BusyView.xaml
/// </summary>
public partial class BusyView : UserControl
{
public BusyView()
{
InitializeComponent();
// Setting these properties in XAML results in an error. Why?
GifImage.GifSource = @"/aerobusy.gif";
GifImage.AutoStart = true;
}
}
}
+48
View File
@@ -0,0 +1,48 @@
<!--
Copyright (c) 2018, Rene Lergner - wpinternals.net - @Heathcliff74xda
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the "Software"),
to deal in the Software without restriction, including without limitation
the rights to use, copy, modify, merge, publish, distribute, sublicense,
and/or sell copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.
-->
<UserControl x:Class="WPinternals.ContextView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:WPinternals"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="700">
<ContentControl Content="{Binding SubContextViewModel}">
<ContentControl.Style>
<Style TargetType="{x:Type ContentControl}">
<Style.Triggers>
<DataTrigger Binding="{Binding Content, RelativeSource={x:Static RelativeSource.Self}}" Value="{x:Null}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<local:Empty/>
</ControlTemplate>
</Setter.Value>
</Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</ContentControl.Style>
</ContentControl>
</UserControl>
+35
View File
@@ -0,0 +1,35 @@
// Copyright (c) 2018, Rene Lergner - wpinternals.net - @Heathcliff74xda
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the "Software"),
// to deal in the Software without restriction, including without limitation
// the rights to use, copy, modify, merge, publish, distribute, sublicense,
// and/or sell copies of the Software, and to permit persons to whom the
// Software is furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.
using System.Windows.Controls;
namespace WPinternals
{
/// <summary>
/// Interaction logic for ContextView.xaml
/// </summary>
public partial class ContextView : UserControl
{
public ContextView()
{
InitializeComponent();
}
}
}
+87
View File
@@ -0,0 +1,87 @@
<!--
Copyright (c) 2018, Rene Lergner - wpinternals.net - @Heathcliff74xda
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the "Software"),
to deal in the Software without restriction, including without limitation
the rights to use, copy, modify, merge, publish, distribute, sublicense,
and/or sell copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.
-->
<UserControl x:Class="WPinternals.DisclaimerAndNdaView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:WPinternals"
mc:Ignorable="d"
d:DesignWidth="700">
<Border BorderThickness="1" BorderBrush="#FFD4D4D4" HorizontalAlignment="Stretch" VerticalAlignment="Center">
<Grid>
<local:FlowDocumentScrollViewerNoMouseWheel Margin="45,25,45,75" VerticalScrollBarVisibility="Auto">
<FlowDocument x:Name="Document" FontFamily="Segoe UI" FontSize="12" PagePadding="0">
<local:Paragraph>
<Run Text="Non-disclosure agreement" FontSize="18" FontWeight="Bold" Foreground="#FF3753A6" />
<LineBreak />
<LineBreak />
<Run Text="This specific version of the software is not publicly released. This non-disclosure agreement is a legal agreement binding you, the recipient, to confidentiality about the software and all associated confidential information, which are disclosed by the developer of this software, the disclosing party. By downloading, copying, or otherwise using the software, you agree to be bound by the terms of this agreement. If you do not agree to these terms, do not download, copy, or use the software." />
<LineBreak />
<LineBreak />
<Run Text="You shall not disclose or distribute the software, or any associated confidential information to any third person. You shall only use the software and confidential information for the purpose of testing the software, unless agreed to expressly in writing by the developer. You agree to keep this software and all associated information confidential, and to protect the confidentiality with a reasonable degree of care." />
<LineBreak />
<LineBreak />
<Run Text="Nothing in this agreement shall be deemed to assume or provide for the transfer of ownership of any intellectual property rights. All intellectual property rights including, without limitation, copyright in any software provided hereunder, shall vest in and at all times remain vested in the originator of that intellectual property." />
<LineBreak />
<LineBreak />
<LineBreak />
<Run Text="Disclaimer and warning" FontSize="18" FontWeight="Bold" Foreground="#FF3753A6" />
<LineBreak />
<LineBreak />
<Run Text="This software is licensed &quot;as-is&quot;. You bear the risk of using it. The developer gives no express warranties, guarantees or conditions. To the extent permitted under your local laws, the developer excludes the implied warranties of merchantability, fitness for a particular purpose and non-infringement. In no event shall the developer be liable for any claim, damages or other liability, whether in an action of contract, tort or otherwise, arising from, out of or in connection with the software or the use or other dealings in the software. If you use this software, you accept this disclaimer. If you don't want to accept this disclaimer, then don't use the software." />
<LineBreak />
<LineBreak />
<Run Text="This software is a &quot;proof of concept&quot; tool which uses dangerous and largely untested techniques on Windows Phones (&quot;Target Devices&quot;). By using this tool the target device may start showing unstable behavior and crashes. There is significant and real potential that irreversible permanent damage will occur on some devices. As such this tool must only be used against target devices which it is acceptable for such damage to occur (for example retired devices used only for test purposes). This tool should not be used against target devices, which are intended as your primary means of telecommunications, because in some circumstances you may not be able to place calls (including calls for emergency services), or you may experience increased data charges. Use of this tool may void the warranty of any chosen target device." />
<LineBreak />
<LineBreak />
<Run Text="Your data is not safe and you may experience data loss! This software can disable important security features of the target devices, which makes your data, including personal images and documents, more accessible to other individuals. You should therefore be aware that you don't keep any sensitive or personal material on the target devices." />
<LineBreak />
<LineBreak />
<Run Text="This software may only be used for research purposes for gaining a more comprehensive understanding of your target device. It is your responsibility to ensure that this software is not used in a manner which is unlawful." />
<LineBreak />
<LineBreak />
<LineBreak />
<Run Text="Privacy policy" FontSize="18" FontWeight="Bold" Foreground="#FF3753A6" />
<LineBreak />
<LineBreak />
<Run Text="This software requires registration. When you register the software, personally identifiable information is obtained and sent to the developer. Additionally the software may automatically obtain and send information about the usage of the software, exclusively for the purpose of improving the software. Information collected may include, but not limited to, information provided via registration and collected diagnostic data, such as device name and folder paths. None of this information is shared with or sold to any third parties, except when required by law." />
<LineBreak />
<LineBreak />
<Run Text="If you want to stop the collection of information, you need to uninstall the software." />
<LineBreak />
<LineBreak />
<Run Text="The developer of this software is concerned about safeguarding the confidentiality of your information. The developer protects the confidentiality of the processed information with a reasonable degree of care. For example, all information is sent over encrypted connections. Please be aware that no security system can prevent all potential security breaches." />
<LineBreak />
<LineBreak />
<Run Text="By using the software, you are consenting to the processing of your information as set forth in this privacy policy." />
</local:Paragraph>
</FlowDocument>
</local:FlowDocumentScrollViewerNoMouseWheel>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Right" VerticalAlignment="Bottom" Margin="0,80,45,25">
<Button Command="{Binding Path=ContinueCommand, Mode=OneWay}" Content="Agree" Width="100" Height="Auto" Padding="0,5" />
<Button Command="{Binding Path=ExitCommand, Mode=OneWay}" Content="Exit" Width="100" Height="Auto" Padding="0,5" Margin="10,0,0,0" />
</StackPanel>
</Grid>
</Border>
</UserControl>
+35
View File
@@ -0,0 +1,35 @@
// Copyright (c) 2018, Rene Lergner - wpinternals.net - @Heathcliff74xda
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the "Software"),
// to deal in the Software without restriction, including without limitation
// the rights to use, copy, modify, merge, publish, distribute, sublicense,
// and/or sell copies of the Software, and to permit persons to whom the
// Software is furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.
using System.Windows.Controls;
namespace WPinternals
{
/// <summary>
/// Interaction logic for DisclaimerView.xaml
/// </summary>
public partial class DisclaimerAndNdaView : UserControl
{
public DisclaimerAndNdaView()
{
InitializeComponent();
}
}
}
+58
View File
@@ -0,0 +1,58 @@
<!--
Copyright (c) 2018, Rene Lergner - wpinternals.net - @Heathcliff74xda
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the "Software"),
to deal in the Software without restriction, including without limitation
the rights to use, copy, modify, merge, publish, distribute, sublicense,
and/or sell copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.
-->
<UserControl x:Class="WPinternals.DisclaimerView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:WPinternals"
mc:Ignorable="d"
d:DesignWidth="700">
<Border BorderThickness="1" BorderBrush="#FFD4D4D4" HorizontalAlignment="Stretch" VerticalAlignment="Center">
<Grid>
<local:FlowDocumentScrollViewerNoMouseWheel Margin="45,25,45,75" VerticalScrollBarVisibility="Auto">
<FlowDocument x:Name="Document" FontFamily="Segoe UI" FontSize="12" PagePadding="0">
<local:Paragraph>
<Run Text="Disclaimer and warning!" FontSize="18" FontWeight="Bold" Foreground="#FF3753A6" />
<LineBreak />
<LineBreak />
<Run Text="This software is licensed &quot;as-is&quot;. You bear the risk of using it. The developer gives no express warranties, guarantees or conditions. To the extent permitted under your local laws, the developer excludes the implied warranties of merchantability, fitness for a particular purpose and non-infringement. In no event shall the developer be liable for any claim, damages or other liability, whether in an action of contract, tort or otherwise, arising from, out of or in connection with the software or the use or other dealings in the software. If you use this software, you accept this disclaimer. If you don't want to accept this disclaimer, then don't use the software." />
<LineBreak />
<LineBreak />
<Run Text="This software is a &quot;proof of concept&quot; tool which uses dangerous and largely untested techniques on Windows Phones (&quot;Target Devices&quot;). By using this tool the target device may start showing unstable behavior and crashes. There is significant and real potential that irreversible permanent damage will occur on some devices. As such this tool must only be used against target devices which it is acceptable for such damage to occur (for example retired devices used only for test purposes). This tool should not be used against target devices, which are intended as your primary means of telecommunications, because in some circumstances you may not be able to place calls (including calls for emergency services), or you may experience increased data charges. Use of this tool may void the warranty of any chosen target device." />
<LineBreak />
<LineBreak />
<Run Text="Your data is not safe and you may experience data loss! This software can disable important security features of the target devices, which makes your data, including personal images and documents, more accessible to other individuals. You should therefore be aware that you don't keep any sensitive or personal material on the target devices." />
<LineBreak />
<LineBreak />
<Run Text="This software may only be used for research purposes for gaining a more comprehensive understanding of your target device. It is your responsibility to ensure that this software is not used in a manner which is unlawful." />
</local:Paragraph>
</FlowDocument>
</local:FlowDocumentScrollViewerNoMouseWheel>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Right" VerticalAlignment="Bottom" Margin="0,80,45,25">
<Button Command="{Binding Path=ContinueCommand, Mode=OneWay}" Content="Continue" Width="100" Height="Auto" Padding="0,5" />
<Button Command="{Binding Path=ExitCommand, Mode=OneWay}" Content="Exit" Width="100" Height="Auto" Padding="0,5" Margin="10,0,0,0" />
</StackPanel>
</Grid>
</Border>
</UserControl>
+35
View File
@@ -0,0 +1,35 @@
// Copyright (c) 2018, Rene Lergner - wpinternals.net - @Heathcliff74xda
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the "Software"),
// to deal in the Software without restriction, including without limitation
// the rights to use, copy, modify, merge, publish, distribute, sublicense,
// and/or sell copies of the Software, and to permit persons to whom the
// Software is furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.
using System.Windows.Controls;
namespace WPinternals
{
/// <summary>
/// Interaction logic for DisclaimerView.xaml
/// </summary>
public partial class DisclaimerView : UserControl
{
public DisclaimerView()
{
InitializeComponent();
}
}
}
+83
View File
@@ -0,0 +1,83 @@
<!--
Copyright (c) 2018, Rene Lergner - wpinternals.net - @Heathcliff74xda
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the "Software"),
to deal in the Software without restriction, including without limitation
the rights to use, copy, modify, merge, publish, distribute, sublicense,
and/or sell copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.
-->
<UserControl x:Class="WPinternals.DumpRomView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:WPinternals"
mc:Ignorable="d"
d:DesignWidth="700">
<UserControl.Resources>
<local:ObjectToVisibilityConverter x:Key="ObjectToVisibilityConverter" />
</UserControl.Resources>
<StackPanel VerticalAlignment="Center">
<Border BorderThickness="1" BorderBrush="#FFD4D4D4" HorizontalAlignment="Stretch" VerticalAlignment="Center" Margin="0,0,0,0">
<StackPanel>
<local:FlowDocumentScrollViewerNoMouseWheel Grid.Column="1" Margin="20,0,20,0" VerticalScrollBarVisibility="Auto" >
<FlowDocument FontFamily="Segoe UI" FontSize="12" Loaded="Document_Loaded" TextAlignment="Left">
<FlowDocument.Resources>
<!-- This style is used to set the margins for all paragraphs in the FlowDocument to 0. -->
<Style TargetType="{x:Type Paragraph}">
<Setter Property="Margin" Value="0"/>
</Style>
<Style TargetType="{x:Type Section}">
<Setter Property="Margin" Value="0"/>
</Style>
</FlowDocument.Resources>
<local:Paragraph>
<Run Text="Dump ROM" FontSize="18" FontWeight="Bold" Foreground="#FF3753A6" />
<LineBreak />
<LineBreak />
<Run Text="You can select a source FFU-file and extract the EFIESP partition and MainOS partition. You can enable " />
<Hyperlink NavigateUri="UnlockRoot">Root Access</Hyperlink>
<Run Text=" on these partitions and you can further customize MainOS if you want. After you have " />
<Hyperlink NavigateUri="UnlockBoot">unlocked</Hyperlink>
<Run Text=" the bootloader of the phone, you can " />
<Hyperlink NavigateUri="FlashRom">flash</Hyperlink>
<Run Text=" the custom ROM to the phone." />
<LineBreak />
<LineBreak />
<local:FilePicker Caption="Source FFU: " SelectionText="Select the source FFU-file for backup of the Data partition..." Path="{Binding FFUPath, Mode=TwoWay}" AllowNull="True" HorizontalAlignment="Stretch" PathChanged="FilePicker_PathChanged"/>
<LineBreak />
<LineBreak />
<local:FilePicker x:Name="EFIESPPicker" Caption="EFIESP: " SelectionText="Select the target-file for the EFIESP partition..." Path="{Binding EFIESPPath, Mode=TwoWay}" AllowNull="True" SaveDialog="True" HorizontalAlignment="Stretch" PathChanged="FilePicker_PathChanged" DefaultFileName="EFIESP.bin"/>
<CheckBox x:Name="CompressEFIESP" Margin="70,5,0,0" Content="Compress EFIESP partition" IsChecked="{Binding CompressEFIESP, Mode=TwoWay}" Checked="CompressEFIESP_Changed" Unchecked="CompressEFIESP_Changed"/>
<LineBreak />
<LineBreak />
<local:FilePicker x:Name="MainOSPicker" Caption="MainOS: " SelectionText="Select the target-file for the MainOS partition..." Path="{Binding MainOSPath, Mode=TwoWay}" AllowNull="True" SaveDialog="True" HorizontalAlignment="Stretch" PathChanged="FilePicker_PathChanged" DefaultFileName="MainOS.bin"/>
<CheckBox x:Name="CompressMainOS" Margin="70,5,0,0" Content="Compress MainOS partition" IsChecked="{Binding CompressMainOS, Mode=TwoWay}" Checked="CompressMainOS_Changed" Unchecked="CompressMainOS_Changed"/>
<LineBreak />
<LineBreak />
<local:FilePicker x:Name="DataPicker" Caption="Data: " SelectionText="Select the target-file for the Data partition..." Path="{Binding DataPath, Mode=TwoWay}" AllowNull="True" SaveDialog="True" HorizontalAlignment="Stretch" PathChanged="FilePicker_PathChanged" DefaultFileName="Data.bin"/>
<CheckBox x:Name="CompressData" Margin="70,5,0,0" Content="Compress Data partition" IsChecked="{Binding CompressData, Mode=TwoWay}" Checked="CompressData_Changed" Unchecked="CompressData_Changed"/>
</local:Paragraph>
</FlowDocument>
</local:FlowDocumentScrollViewerNoMouseWheel>
<StackPanel Orientation="Horizontal" Width="Auto" Height="Auto" HorizontalAlignment="Right" VerticalAlignment="Bottom" Margin="0,10,40,25">
<Button Command="{Binding Path=DumpCommand, Mode=OneWay}" Content="Dump partitions" Width="120" Height="Auto" Padding="0,5" />
</StackPanel>
</StackPanel>
</Border>
</StackPanel>
</UserControl>
+76
View File
@@ -0,0 +1,76 @@
// Copyright (c) 2018, Rene Lergner - wpinternals.net - @Heathcliff74xda
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the "Software"),
// to deal in the Software without restriction, including without limitation
// the rights to use, copy, modify, merge, publish, distribute, sublicense,
// and/or sell copies of the Software, and to permit persons to whom the
// Software is furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
namespace WPinternals
{
/// <summary>
/// Interaction logic for DumpRomView.xaml
/// </summary>
public partial class DumpRomView : UserControl
{
public DumpRomView()
{
InitializeComponent();
}
private void HandleHyperlinkClick(object sender, RoutedEventArgs args)
{
Hyperlink link = args.Source as Hyperlink;
if (link != null)
{
if (link.NavigateUri.ToString() == "UnlockBoot")
(this.DataContext as DumpRomTargetSelectionViewModel).SwitchToUnlockBoot();
else if (link.NavigateUri.ToString() == "UnlockRoot")
(this.DataContext as DumpRomTargetSelectionViewModel).SwitchToUnlockRoot();
else if (link.NavigateUri.ToString() == "FlashRom")
(this.DataContext as DumpRomTargetSelectionViewModel).SwitchToFlashRom();
}
}
private void Document_Loaded(object sender, RoutedEventArgs e)
{
(sender as FlowDocument).AddHandler(Hyperlink.ClickEvent, new RoutedEventHandler(HandleHyperlinkClick));
}
private void FilePicker_PathChanged(object sender, PathChangedEventArgs e)
{
((DumpRomTargetSelectionViewModel)DataContext).EvaluateViewState();
}
private void CompressEFIESP_Changed(object sender, RoutedEventArgs e)
{
EFIESPPicker.DefaultFileName = "EFIESP.bin" + ((CompressEFIESP.IsChecked == true) ? ".pz" : "");
}
private void CompressMainOS_Changed(object sender, RoutedEventArgs e)
{
MainOSPicker.DefaultFileName = "MainOS.bin" + ((CompressMainOS.IsChecked == true) ? ".pz" : "");
}
private void CompressData_Changed(object sender, RoutedEventArgs e)
{
DataPicker.DefaultFileName = "Data.bin" + ((CompressData.IsChecked == true) ? ".pz" : "");
}
}
}
+71
View File
@@ -0,0 +1,71 @@
<!--
Copyright (c) 2018, Rene Lergner - wpinternals.net - @Heathcliff74xda
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the "Software"),
to deal in the Software without restriction, including without limitation
the rights to use, copy, modify, merge, publish, distribute, sublicense,
and/or sell copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.
-->
<UserControl x:Class="WPinternals.Empty"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:WPinternals"
mc:Ignorable="d"
d:DesignWidth="700"
>
<UserControl.Resources>
<local:BooleanConverter x:Key="VisibilityConverter" OnTrue="Visible" OnFalse="Collapsed" OnNull="Collapsed"/>
<local:BooleanConverter x:Key="InverseVisibilityConverter" OnTrue="Collapsed" OnFalse="Visible" OnNull="Collapsed" />
</UserControl.Resources>
<Border BorderThickness="1" BorderBrush="#FFD4D4D4" HorizontalAlignment="Stretch" VerticalAlignment="Center" Padding="25">
<StackPanel>
<local:FlowDocumentScrollViewerNoMouseWheel Grid.Column="1" Margin="20,0,20,0" VerticalScrollBarVisibility="Auto">
<FlowDocument FontFamily="Segoe UI" FontSize="12" Loaded="Document_Loaded">
<local:Paragraph TextAlignment="Center">
<Run Text="Waiting for connection with phone..." FontSize="20" />
<LineBreak />
<LineBreak />
<LineBreak />
<Run Text="When you connect the phone, it can take a moment before it is recognized. If it still isn't recognized after a while, you might need to install the necessary drivers first. For more information about the drivers, read the " />
<Hyperlink NavigateUri="Getting started">Getting started</Hyperlink>
<Run Text=" section. If the drivers are installed, but the phone is still not recognized, then try to perform a soft-reset, while the USB of the phone is connected. On Lumia phones you have to press-and-hold the power-button and volume-down-button at the same time for at least 10 seconds. If the tool detects the bootloader of the phone it will try to connect to the phone at this early boot-stage." />
</local:Paragraph>
</FlowDocument>
</local:FlowDocumentScrollViewerNoMouseWheel>
<local:FlowDocumentScrollViewerNoMouseWheel Grid.Column="1" Margin="20,-20,20,0" VerticalScrollBarVisibility="Auto" Visibility="{Binding InterruptBoot, RelativeSource={RelativeSource AncestorType={x:Type local:Empty}}, Converter={StaticResource InverseVisibilityConverter}}">
<FlowDocument FontFamily="Segoe UI" FontSize="12" Loaded="Document_Loaded">
<local:Paragraph TextAlignment="Center">
<Run Text="You can "/>
<Hyperlink NavigateUri="Interrupt boot">interrupt the boot-process</Hyperlink>
<Run Text=" as soon as the bootloader is detected. This allows you to configure the phone or flash a ROM before it boots to the OS. You can also try this when the phone is not booting properly. When you unlocked the bootloader and the phone boots to a Blue Screen, you can still enter Mass Storage Mode if you want. To boot properly again, restore the bootloader. You can update to a supported OS version and try again after that."/>
</local:Paragraph>
</FlowDocument>
</local:FlowDocumentScrollViewerNoMouseWheel>
<local:FlowDocumentScrollViewerNoMouseWheel Grid.Column="1" Margin="20,-20,20,0" VerticalScrollBarVisibility="Auto" Visibility="{Binding InterruptBoot, RelativeSource={RelativeSource AncestorType={x:Type local:Empty}}, Converter={StaticResource VisibilityConverter}}">
<FlowDocument FontFamily="Segoe UI" FontSize="12" Loaded="Document_Loaded">
<local:Paragraph TextAlignment="Center">
<Run Text="Windows Phone Internals is set to interrupt the boot-process as soon as the bootloader is detected. You can also allow the phone to "/>
<Hyperlink NavigateUri="Normal boot">boot normally</Hyperlink>
<Run Text="."/>
</local:Paragraph>
</FlowDocument>
</local:FlowDocumentScrollViewerNoMouseWheel>
</StackPanel>
</Border>
</UserControl>
+99
View File
@@ -0,0 +1,99 @@
// Copyright (c) 2018, Rene Lergner - wpinternals.net - @Heathcliff74xda
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the "Software"),
// to deal in the Software without restriction, including without limitation
// the rights to use, copy, modify, merge, publish, distribute, sublicense,
// and/or sell copies of the Software, and to permit persons to whom the
// Software is furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.
using System;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Media;
namespace WPinternals
{
/// <summary>
/// Interaction logic for Empty.xaml
/// </summary>
public partial class Empty : UserControl
{
// Dependency injection is not possible here, because this ViewModel is used in a Style.
public Empty()
{
InitializeComponent();
InterruptBoot = App.InterruptBoot;
}
private void HandleHyperlinkClick(object sender, RoutedEventArgs args)
{
Hyperlink link = args.Source as Hyperlink;
if (link != null)
{
if (link.NavigateUri.ToString() == "Getting started")
App.NavigateToGettingStarted();
else if (link.NavigateUri.ToString() == "Unlock boot")
App.NavigateToUnlockBoot();
else if (link.NavigateUri.ToString() == "Interrupt boot")
InterruptBoot = true;
else if (link.NavigateUri.ToString() == "Normal boot")
InterruptBoot = false;
}
}
private void Document_Loaded(object sender, RoutedEventArgs e)
{
(sender as FlowDocument).AddHandler(Hyperlink.ClickEvent, new RoutedEventHandler(HandleHyperlinkClick));
}
public static readonly DependencyProperty InterruptBootProperty =
DependencyProperty.Register("InterruptBoot", typeof(Boolean), typeof(Empty), new FrameworkPropertyMetadata(InterruptBootChanged));
public bool InterruptBoot
{
get
{
return (bool)GetValue(InterruptBootProperty);
}
set
{
SetValue(InterruptBootProperty, value);
}
}
internal static void InterruptBootChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
App.InterruptBoot = (bool)e.NewValue;
if ((bool)e.NewValue)
{
// Find the phone notifier
DependencyObject obj = d;
while (!(obj is MainWindow))
obj = VisualTreeHelper.GetParent(obj);
PhoneNotifierViewModel PhoneNotifier = ((MainViewModel)(((MainWindow)obj).DataContext)).PhoneNotifier;
if (PhoneNotifier.CurrentInterface == PhoneInterfaces.Lumia_Bootloader)
{
App.InterruptBoot = false;
LogFile.Log("Found Lumia BootMgr and user forced to interrupt the boot process. Force to Flash-mode.");
Task.Run(() => SwitchModeViewModel.SwitchTo(PhoneNotifier, PhoneInterfaces.Lumia_Flash));
}
}
}
}
}
+178
View File
@@ -0,0 +1,178 @@
<!--
Copyright (c) 2018, Rene Lergner - wpinternals.net - @Heathcliff74xda
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the "Software"),
to deal in the Software without restriction, including without limitation
the rights to use, copy, modify, merge, publish, distribute, sublicense,
and/or sell copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.
-->
<UserControl x:Class="WPinternals.FlashResourcesView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:WPinternals"
mc:Ignorable="d"
d:DesignWidth="700">
<UserControl.Resources>
<local:HexConverter x:Key="HexConverter" />
<local:BooleanConverter x:Key="VisibilityConverter" OnTrue="Visible" OnFalse="Collapsed" OnNull="Collapsed"/>
<local:BooleanConverter x:Key="InverseVisibilityConverter" OnTrue="Collapsed" OnFalse="Visible" OnNull="Collapsed" />
</UserControl.Resources>
<StackPanel VerticalAlignment="Center">
<Border BorderThickness="1" BorderBrush="#FFD4D4D4" HorizontalAlignment="Stretch" VerticalAlignment="Center" Padding="25" Margin="0,0,0,0">
<local:FlowDocumentScrollViewerNoMouseWheel Grid.Column="1" Margin="20,0" VerticalScrollBarVisibility="Auto" >
<FlowDocument Loaded="Document_Loaded" FontFamily="Segoe UI" FontSize="12" PagePadding="1">
<local:Paragraph>
<Run Text="General info" FontSize="18" FontWeight="Bold" Foreground="#FF3753A6" />
<LineBreak />
<LineBreak />
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="200" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<TextBlock Grid.Row="0" Grid.Column="0" Text="Operating mode" />
<TextBlock Grid.Row="0" Grid.Column="1" Text="{Binding CurrentMode}" FontWeight="Bold" Foreground="#FF3753A6" TextWrapping="Wrap" />
<TextBlock Grid.Row="1" Grid.Column="0" Text="Root Key Hash" />
<TextBlock Grid.Row="1" Grid.Column="1" Text="{Binding Path=RootKeyHash, Converter={StaticResource HexConverter}, Mode=OneWay}" TextWrapping="Wrap" />
</Grid>
</local:Paragraph>
</FlowDocument>
</local:FlowDocumentScrollViewerNoMouseWheel>
</Border>
<Border BorderThickness="1" BorderBrush="#FFD4D4D4" HorizontalAlignment="Stretch" VerticalAlignment="Center" Padding="25" Margin="0,20,0,0" >
<StackPanel Margin="20,0,20,0">
<StackPanel Visibility="{Binding Path=TargetHasNewFlashProtocol, Converter={StaticResource InverseVisibilityConverter}}">
<local:FlowDocumentScrollViewerNoMouseWheel Grid.Column="1" VerticalScrollBarVisibility="Auto" >
<FlowDocument Loaded="Document_Loaded" FontFamily="Segoe UI" FontSize="12" PagePadding="1">
<local:Paragraph TextAlignment="Left">
<Run Text="SecureBoot Unlock V1" FontSize="18" FontWeight="Bold" Foreground="#FF3753A6" />
<LineBreak />
<LineBreak />
<Run Text="When you unlock the bootloader, Windows Phone Internals will also need an original FFU file for this phone, to extract some data from it. If you don't have an FFU-image for your phone yet, you can "/>
<Hyperlink NavigateUri="Download">
<Run Text="download"/>
</Hyperlink>
<Run Text=" it."/>
<LineBreak />
</local:Paragraph>
</FlowDocument>
</local:FlowDocumentScrollViewerNoMouseWheel>
<local:FilePicker SelectionText="Select your FFU-image..." Path="{Binding FFUPath, Mode=TwoWay}" HorizontalAlignment="Stretch"/>
<local:FlowDocumentScrollViewerNoMouseWheel Grid.Column="1" VerticalScrollBarVisibility="Auto" Visibility="{Binding Path=IsBootLoaderUnlocked, Converter={StaticResource InverseVisibilityConverter}}">
<FlowDocument Loaded="Document_Loaded" FontFamily="Segoe UI" FontSize="12" PagePadding="1">
<local:Paragraph TextAlignment="Left">
<LineBreak />
<Run Text="You should also select a folder where you have Lumia Emergency Flash Loaders. This tool will try to select the Loader that is suitable for your phone."/>
<LineBreak />
</local:Paragraph>
</FlowDocument>
</local:FlowDocumentScrollViewerNoMouseWheel>
<local:FolderPicker SelectionText="Select the folder with Lumia Emergency Flash Loaders..." Path="{Binding LoadersPath, Mode=TwoWay}" HorizontalAlignment="Stretch" Visibility="{Binding Path=IsBootLoaderUnlocked, Converter={StaticResource InverseVisibilityConverter}}"/>
<local:FlowDocumentScrollViewerNoMouseWheel Grid.Column="1" VerticalScrollBarVisibility="Auto" >
<FlowDocument Loaded="Document_Loaded" FontFamily="Segoe UI" FontSize="12" PagePadding="1">
<local:Paragraph TextAlignment="Left">
<LineBreak />
<Run Text="You can optionally select an image that contains the SBL3 partition of an engineering phone. This is for the purpose of unlocking Mass Storage Mode. This mode is not implemented in the retail versions of the SBL3 partition. You can select an " />
<Hyperlink NavigateUri="https://www.google.com/search?safe=off&amp;q=%22Lumia%22+%22Engineering+ROM%22&amp;oq=%22Lumia%22+%22Engineering+ROM%22">FFU-image</Hyperlink>
<Run Text=" or raw-image. This tool will try to extract the partition. SBL3 also contains hardware-profiles. So it is not possible to exchange SBL3 partitions from different CPU's or OEM's! Verify that the SBL3 you select was originally meant for a phone from the same OEM and it has the same CPU as your target device! Flashing a wrong SBL3 will harm your phone!" />
<LineBreak />
</local:Paragraph>
</FlowDocument>
</local:FlowDocumentScrollViewerNoMouseWheel>
<local:FilePicker SelectionText="Optionally select an FFU-image or raw image with an Engineering SBL3 partition..." AllowNull="True" Path="{Binding SBL3Path, Mode=TwoWay}" HorizontalAlignment="Stretch"/>
</StackPanel>
<StackPanel Visibility="{Binding Path=TargetHasNewFlashProtocol, Converter={StaticResource VisibilityConverter}}">
<local:FlowDocumentScrollViewerNoMouseWheel Grid.Column="1" VerticalScrollBarVisibility="Auto" >
<FlowDocument Loaded="Document_Loaded" FontFamily="Segoe UI" FontSize="12" PagePadding="1">
<local:Paragraph TextAlignment="Left">
<Run Foreground="#FF3753A6" FontWeight="Bold" FontSize="18" Text="SecureBoot Unlock V2"/>
<LineBreak/>
<LineBreak/>
<Run Text="To unlock this phone you need Windows Phone Internals SecureBoot Unlock V2. To flash this to the phone Windows Phone Internals needs to have a &quot;Flashing Profile&quot;. If you unlock or flash this phone for the first time, Windows Phone Internals will try to find the flashing profile. During this phase your phone will start to reboot a couple of times. This may look weird, but it is expected behavior. When a flashing profile is found, it is saved. After that Windows Phone Internals will flash an unlocked bootloader." />
<LineBreak/>
<LineBreak/>
<Run Text="Warning: " Foreground="Red" FontWeight="Bold"/>
<Run Text="While looking for a Flashing Profile, the phone will be rebooted through different modes. The phone will also enter Emergency Download Mode. Windows Phone Internals will use the Emergency Programmer to run faster through the process. If you haven't downloaded the Emergency Programmer for target phone yet, you can still do so by going to the " />
<Hyperlink NavigateUri="Download">
<Run Text="download-section"/>
</Hyperlink>
<Run Text=". Emergency Programmers are available for most Lumia-models. If you don't have an Emergency Programmer for the phone and you still choose to continue, the phone may pause for up to 30 seconds between reboots. Some phone models may not even reboot at all without an Emergency Programmer. In this case you need to manually reboot the phone, when it hangs after an attempt to find the Flashing Profile. Reboot the phone by pressing and holding the power-button until the phone vibrates."/>
<LineBreak/>
<LineBreak/>
<Run Text="Warning: " Foreground="Red" FontWeight="Bold"/>
<Run Text="Some Windows 10 based phones need additional modifications to be able to boot properly after the bootloader is unlocked. The patches will be applied automatically if the OS on the phone is on a supported version. In case the phone doesn't boot properly, you can still enter Mass Storage Mode if you want. To boot properly again, restore the bootloader. You can update to a supported OS version and try again after that." />
<LineBreak/>
<LineBreak/>
<Run Text="Warning: " Foreground="Red" FontWeight="Bold"/>
<Run Text="The unlock sequence for Lumia's with bootloader spec B depends on a certain &quot;Boot order&quot;. Right after a Full Flash or right after you relocked a phone, this boot order is different. When you flash an FFU, you can interrupt the boot immediately, before it has completed its first boot. If you would then try to unlock the bootloader, this will fail halfway. This problem will be detected and the changes will be rolled back. A simple reboot will solve the problem; the boot order is restored. After that you can start the unlock sequence again." />
<LineBreak />
<LineBreak />
<Run Text="When you perform a &quot;Custom Flash&quot; Windows Phone Internals will also need an original FFU file for this phone, to extract some profiling information from it. If you don't have an FFU-image for your phone yet, you can "/>
<Hyperlink NavigateUri="Download">
<Run Text="download"/>
</Hyperlink>
<Run Text=" it."/>
<LineBreak/>
</local:Paragraph>
</FlowDocument>
</local:FlowDocumentScrollViewerNoMouseWheel>
<local:FilePicker SelectionText="Select your FFU-image for profiling..." Path="{Binding ProfileFFUPath, Mode=TwoWay}" HorizontalAlignment="Stretch"/>
<local:FlowDocumentScrollViewerNoMouseWheel Grid.Column="1" VerticalScrollBarVisibility="Auto" >
<FlowDocument Loaded="Document_Loaded" FontFamily="Segoe UI" FontSize="12" PagePadding="1">
<local:Paragraph TextAlignment="Left">
<LineBreak />
<Run Text="You will also need an emergency programmer for your phone."/>
<LineBreak />
</local:Paragraph>
</FlowDocument>
</local:FlowDocumentScrollViewerNoMouseWheel>
<local:FilePicker SelectionText="Select the EDE-file for your phone..." Path="{Binding EDEPath, Mode=TwoWay}" HorizontalAlignment="Stretch"/>
<StackPanel Visibility="{Binding Path=IsSupportedFfuNeeded, Converter={StaticResource VisibilityConverter}}">
<local:FlowDocumentScrollViewerNoMouseWheel Grid.Column="1" VerticalScrollBarVisibility="Auto" >
<FlowDocument Loaded="Document_Loaded" FontFamily="Segoe UI" FontSize="12" PagePadding="1">
<local:Paragraph TextAlignment="Left">
<LineBreak />
<Run Text="The FFU-image you selected for profiling does not have a supported OS-version. Windows Phone Internals needs to extract files from a supported OS-version. You need to select such donor-FFU. If necessary, you can select an FFU-image for a different model." />
<LineBreak />
</local:Paragraph>
</FlowDocument>
</local:FlowDocumentScrollViewerNoMouseWheel>
<local:FilePicker SelectionText="Select an FFU-image with supported OS-version..." AllowNull="False" Path="{Binding SupportedFFUPath, Mode=TwoWay}" HorizontalAlignment="Stretch"/>
<local:FlowDocumentScrollViewerNoMouseWheel Grid.Column="1" VerticalScrollBarVisibility="Auto" Visibility="{Binding Path=IsSupportedFfuValid, Converter={StaticResource InverseVisibilityConverter}}">
<FlowDocument Loaded="Document_Loaded" FontFamily="Segoe UI" FontSize="12" PagePadding="1" FontWeight="Bold" Foreground="Red">
<local:Paragraph TextAlignment="Left">
<LineBreak />
<Run Text="The OS version of the selected FFU is not supported. Select a donor-FFU with a supported OS version." />
</local:Paragraph>
</FlowDocument>
</local:FlowDocumentScrollViewerNoMouseWheel>
</StackPanel>
</StackPanel>
<StackPanel Orientation="Horizontal" Width="Auto" Height="Auto" HorizontalAlignment="Right" VerticalAlignment="Bottom" Margin="0,25,0,0">
<Button Command="{Binding Path=OkCommand, Mode=OneWay}" Content="Unlock" Width="100" Height="Auto" Padding="0,5"/>
<Button Command="{Binding Path=CancelCommand, Mode=OneWay}" Content="Abort" Width="100" Height="Auto" Padding="0,5" Margin="20,0,0,0" />
</StackPanel>
</StackPanel>
</Border>
</StackPanel>
</UserControl>
+56
View File
@@ -0,0 +1,56 @@
// Copyright (c) 2018, Rene Lergner - wpinternals.net - @Heathcliff74xda
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the "Software"),
// to deal in the Software without restriction, including without limitation
// the rights to use, copy, modify, merge, publish, distribute, sublicense,
// and/or sell copies of the Software, and to permit persons to whom the
// Software is furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
namespace WPinternals
{
/// <summary>
/// Interaction logic for FlashResourcesView.xaml
/// </summary>
public partial class FlashResourcesView : UserControl
{
public FlashResourcesView()
{
InitializeComponent();
}
private void HandleHyperlinkClick(object sender, RoutedEventArgs args)
{
Hyperlink link = args.Source as Hyperlink;
if (link != null)
{
if (link.NavigateUri.ToString() == "Flash")
((FlashResourcesViewModel)DataContext).SwitchToFlashRom();
else if (link.NavigateUri.ToString() == "Download")
((FlashResourcesViewModel)DataContext).SwitchToDownload();
else
System.Diagnostics.Process.Start(link.NavigateUri.ToString());
}
}
private void Document_Loaded(object sender, RoutedEventArgs e)
{
(sender as FlowDocument).AddHandler(Hyperlink.ClickEvent, new RoutedEventHandler(HandleHyperlinkClick));
}
}
}
+160
View File
@@ -0,0 +1,160 @@
<!--
Copyright (c) 2018, Rene Lergner - wpinternals.net - @Heathcliff74xda
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the "Software"),
to deal in the Software without restriction, including without limitation
the rights to use, copy, modify, merge, publish, distribute, sublicense,
and/or sell copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.
-->
<UserControl x:Class="WPinternals.FlashRomView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:WPinternals"
mc:Ignorable="d"
d:DesignWidth="700">
<UserControl.Resources>
<local:ObjectToVisibilityConverter x:Key="ObjectToVisibilityConverter" />
</UserControl.Resources>
<StackPanel VerticalAlignment="Center">
<Border BorderThickness="1" BorderBrush="#FFD4D4D4" HorizontalAlignment="Stretch" VerticalAlignment="Center" Margin="0,0,0,20">
<StackPanel>
<local:FlowDocumentScrollViewerNoMouseWheel Grid.Column="1" Margin="20,0,20,0" VerticalScrollBarVisibility="Auto" >
<FlowDocument FontFamily="Segoe UI" FontSize="12" Loaded="Document_Loaded" TextAlignment="Left">
<FlowDocument.Resources>
<!-- This style is used to set the margins for all paragraphs in the FlowDocument to 0. -->
<Style TargetType="{x:Type Paragraph}">
<Setter Property="Margin" Value="0"/>
</Style>
<Style TargetType="{x:Type Section}">
<Setter Property="Margin" Value="0"/>
</Style>
</FlowDocument.Resources>
<local:Paragraph>
<Run Text="Flash Custom ROM" FontSize="18" FontWeight="Bold" Foreground="#FF3753A6" />
<LineBreak />
<LineBreak />
<Run Text="A Custom ROM typically contains an unlocked EFIESP partition and an uninitialized MainOS partition and Data partition. If you have a phone with a Bootloader Spec B, you can flash the Custom ROM straight to the phone. If you have a phone with Bootloader Spec A, your bootloader needs to be "/>
<Hyperlink NavigateUri="UnlockBoot">unlocked</Hyperlink>
<Run Text=" before you can flash a Custom ROM or restore a backup. You don't need to have an Engineering bootloader to use this flash-method. A Custom ROM can be created based on a "/>
<Hyperlink NavigateUri="Backup">backup</Hyperlink>
<Run Text=" of a live phone, or you can "/>
<Hyperlink NavigateUri="Dump">dump</Hyperlink>
<Run Text=" these partitions from an original FFU file, which can then be customized. After a Custom ROM is flashed, all apps, data and settings are be removed from the phone! " />
<LineBreak />
<LineBreak />
<Run Text="NOTE: " FontWeight="Bold"/>
<Run Text=" Flashing a Custom ROM usually takes a lot of time, especially on phones with Bootloader Spec B! Be sure that the battery of your phone is properly charged before you start flashing a Custom ROM."/>
<LineBreak />
<LineBreak />
<local:FilePicker Caption="Custom ROM or backup image: " SelectionText="Select the source-file to flash to the phone..." Path="{Binding ArchivePath, Mode=TwoWay}" AllowNull="True" HorizontalAlignment="Stretch" PathChanged="FilePicker_PathChanged"/>
<LineBreak />
<LineBreak />
<local:CollapsibleRun Text="You have to connect your phone before you can continue." IsVisible="{Binding IsPhoneDisconnected, Mode=OneWay}"/>
<local:CollapsibleRun Text="When you continue, the phone will be switched to Flash mode and then the Custom ROM will be flashed." IsVisible="{Binding IsPhoneInOtherMode, Mode=OneWay}"/>
<local:CollapsibleRun Text="The phone is in Flash mode. You can continue to flash the Custom ROM." IsVisible="{Binding IsPhoneInFlashMode, Mode=OneWay}"/>
</local:Paragraph>
</FlowDocument>
</local:FlowDocumentScrollViewerNoMouseWheel>
<StackPanel Orientation="Horizontal" Width="Auto" Height="Auto" HorizontalAlignment="Right" VerticalAlignment="Bottom" Margin="0,10,40,25">
<Button Command="{Binding Path=FlashArchiveCommand, Mode=OneWay}" Content="Flash custom ROM" Width="120" Height="Auto" Padding="0,5" />
</StackPanel>
</StackPanel>
</Border>
<Border BorderThickness="1" BorderBrush="#FFD4D4D4" HorizontalAlignment="Stretch" VerticalAlignment="Center" Margin="0,0,0,20">
<StackPanel>
<local:FlowDocumentScrollViewerNoMouseWheel Grid.Column="1" Margin="20,0,20,0" VerticalScrollBarVisibility="Auto" >
<FlowDocument FontFamily="Segoe UI" FontSize="12" Loaded="Document_Loaded" TextAlignment="Left">
<FlowDocument.Resources>
<!-- This style is used to set the margins for all paragraphs in the FlowDocument to 0. -->
<Style TargetType="{x:Type Paragraph}">
<Setter Property="Margin" Value="0"/>
</Style>
<Style TargetType="{x:Type Section}">
<Setter Property="Margin" Value="0"/>
</Style>
</FlowDocument.Resources>
<local:Paragraph>
<Run Text="Flash original FFU" FontSize="18" FontWeight="Bold" Foreground="#FF3753A6" />
<LineBreak />
<LineBreak />
<Run Text="When you flash an original FFU, the phone will be restored to its original configuration. All unlocks, apps and data will be removed from the phone!"/>
<LineBreak />
<LineBreak />
<local:FilePicker Caption="FFU: " SelectionText="Select the FFU-file to flash to the phone..." Path="{Binding FFUPath, Mode=TwoWay}" AllowNull="True" HorizontalAlignment="Stretch" PathChanged="FilePicker_PathChanged"/>
<LineBreak />
<LineBreak />
<local:CollapsibleRun Text="You have to connect your phone before you can continue." IsVisible="{Binding IsPhoneDisconnected, Mode=OneWay}"/>
<local:CollapsibleRun Text="When you continue, the phone will be switched to Flash mode and then the FFU image will be flashed." IsVisible="{Binding IsPhoneInOtherMode, Mode=OneWay}"/>
<local:CollapsibleRun Text="The phone is in Flash mode. You can continue to flash the FFU image." IsVisible="{Binding IsPhoneInFlashMode, Mode=OneWay}"/>
</local:Paragraph>
</FlowDocument>
</local:FlowDocumentScrollViewerNoMouseWheel>
<StackPanel Orientation="Horizontal" Width="Auto" Height="Auto" HorizontalAlignment="Right" VerticalAlignment="Bottom" Margin="0,10,40,25">
<Button Command="{Binding Path=FlashFFUCommand, Mode=OneWay}" Content="Flash FFU image" Width="120" Height="Auto" Padding="0,5" />
</StackPanel>
</StackPanel>
</Border>
<Border BorderThickness="1" BorderBrush="#FFD4D4D4" HorizontalAlignment="Stretch" VerticalAlignment="Center" Margin="0,0,0,0">
<StackPanel>
<local:FlowDocumentScrollViewerNoMouseWheel Grid.Column="1" Margin="20,0,20,0" VerticalScrollBarVisibility="Auto" >
<FlowDocument FontFamily="Segoe UI" FontSize="12" Loaded="Document_Loaded" TextAlignment="Left">
<FlowDocument.Resources>
<!-- This style is used to set the margins for all paragraphs in the FlowDocument to 0. -->
<Style TargetType="{x:Type Paragraph}">
<Setter Property="Margin" Value="0"/>
</Style>
<Style TargetType="{x:Type Section}">
<Setter Property="Margin" Value="0"/>
</Style>
</FlowDocument.Resources>
<local:Paragraph>
<Run Text="Flash separate partitions" FontSize="18" FontWeight="Bold" Foreground="#FF3753A6" />
<LineBreak />
<LineBreak />
<Run Text="To flash separate partitions, your bootloader needs to be "/>
<Hyperlink NavigateUri="UnlockBoot">unlocked</Hyperlink>
<Run Text=". You can flash an " />
<Hyperlink NavigateUri="UnlockRoot">unlocked</Hyperlink>
<Run Text=" EFIESP partition, which you typically need to do only once. Make sure you flash an EFIESP partition for exact model of the phone because this partition contains model-specific information. After that you can flash an " />
<Hyperlink NavigateUri="UnlockRoot">unlocked</Hyperlink>
<Run Text=" MainOS partition or custom ROM as often as you want. Remember that the MainOS partition and Data partition are tied together, so you need to flash both partitions together. When these partitions are flashed, all apps, data and settings are removed from the phone!" />
<LineBreak />
<LineBreak />
<local:FilePicker Caption="EFIESP: " SelectionText="Select the source-file to flash to the EFIESP partition..." Path="{Binding EFIESPPath, Mode=TwoWay}" AllowNull="True" DefaultFileName="EFIESP.bin" HorizontalAlignment="Stretch" PathChanged="FilePicker_PathChanged"/>
<LineBreak />
<LineBreak />
<local:FilePicker Caption="MainOS: " SelectionText="Select the source-file to flash to the MainOS partition..." Path="{Binding MainOSPath, Mode=TwoWay}" AllowNull="True" DefaultFileName="MainOS.bin" HorizontalAlignment="Stretch" PathChanged="FilePicker_PathChanged"/>
<LineBreak />
<LineBreak />
<local:FilePicker Caption="Data: " SelectionText="Select the source-file to flash to the Data partition..." Path="{Binding DataPath, Mode=TwoWay}" AllowNull="True" DefaultFileName="Data.bin" HorizontalAlignment="Stretch" PathChanged="FilePicker_PathChanged"/>
<LineBreak />
<LineBreak />
<local:CollapsibleRun Text="You have to connect your phone before you can continue." IsVisible="{Binding IsPhoneDisconnected, Mode=OneWay}"/>
<local:CollapsibleRun Text="When you continue, the phone will be switched to Flash mode and then the selected partitions will be flashed." IsVisible="{Binding IsPhoneInOtherMode, Mode=OneWay}"/>
<local:CollapsibleRun Text="The phone is in Flash mode. You can continue to flash selected partitions." IsVisible="{Binding IsPhoneInFlashMode, Mode=OneWay}"/>
</local:Paragraph>
</FlowDocument>
</local:FlowDocumentScrollViewerNoMouseWheel>
<StackPanel Orientation="Horizontal" Width="Auto" Height="Auto" HorizontalAlignment="Right" VerticalAlignment="Bottom" Margin="0,10,40,25">
<Button Command="{Binding Path=FlashPartitionsCommand, Mode=OneWay}" Content="Flash partitions" Width="120" Height="Auto" Padding="0,5" />
</StackPanel>
</StackPanel>
</Border>
</StackPanel>
</UserControl>
+63
View File
@@ -0,0 +1,63 @@
// Copyright (c) 2018, Rene Lergner - wpinternals.net - @Heathcliff74xda
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the "Software"),
// to deal in the Software without restriction, including without limitation
// the rights to use, copy, modify, merge, publish, distribute, sublicense,
// and/or sell copies of the Software, and to permit persons to whom the
// Software is furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
namespace WPinternals
{
/// <summary>
/// Interaction logic for FlashRomView.xaml
/// </summary>
public partial class FlashRomView : UserControl
{
public FlashRomView()
{
InitializeComponent();
}
private void HandleHyperlinkClick(object sender, RoutedEventArgs args)
{
Hyperlink link = args.Source as Hyperlink;
if (link != null)
{
if (link.NavigateUri.ToString() == "UnlockBoot")
(this.DataContext as LumiaFlashRomSourceSelectionViewModel).SwitchToUnlockBoot();
else if (link.NavigateUri.ToString() == "UnlockRoot")
(this.DataContext as LumiaFlashRomSourceSelectionViewModel).SwitchToUnlockRoot();
else if (link.NavigateUri.ToString() == "Dump")
(this.DataContext as LumiaFlashRomSourceSelectionViewModel).SwitchToDumpFFU();
else if (link.NavigateUri.ToString() == "Backup")
(this.DataContext as LumiaFlashRomSourceSelectionViewModel).SwitchToBackup();
}
}
private void Document_Loaded(object sender, RoutedEventArgs e)
{
(sender as FlowDocument).AddHandler(Hyperlink.ClickEvent, new RoutedEventHandler(HandleHyperlinkClick));
}
private void FilePicker_PathChanged(object sender, PathChangedEventArgs e)
{
((LumiaFlashRomSourceSelectionViewModel)DataContext).EvaluateViewState();
}
}
}
+896
View File
@@ -0,0 +1,896 @@
<!--
Copyright (c) 2018, Rene Lergner - wpinternals.net - @Heathcliff74xda
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the "Software"),
to deal in the Software without restriction, including without limitation
the rights to use, copy, modify, merge, publish, distribute, sublicense,
and/or sell copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.
-->
<UserControl x:Class="WPinternals.GettingStartedView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:WPinternals"
mc:Ignorable="d"
d:DesignWidth="700">
<StackPanel>
<Border BorderThickness="1" BorderBrush="#FFD4D4D4" HorizontalAlignment="Stretch" VerticalAlignment="Center" Padding="25" Margin="0,0,0,20">
<StackPanel>
<local:FlowDocumentScrollViewerNoMouseWheel Grid.Column="1" Margin="20,0" VerticalScrollBarVisibility="Auto">
<FlowDocument FontFamily="Segoe UI" FontSize="12" Loaded="Document_Loaded" PagePadding="1">
<local:Paragraph>
<Run Text="Getting started" FontSize="18" FontWeight="Bold" Foreground="#FF3753A6" />
<LineBreak />
<LineBreak />
<Run Text="This tool may cause irrevocable damage and/or data loss when applied to any target device. As such please ensure that you fully comprehend and accept the " />
<Hyperlink NavigateUri="Disclaimer">Disclaimer and warnings</Hyperlink>
<Run Text=" before proceeding any further." />
<LineBreak />
<LineBreak />
<Run Text="If you appreciate the countless hours of hacking, research and development I put into creating this tool then consider " />
<Hyperlink NavigateUri="https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&amp;hosted_button_id=VY8N7BCBT9CS4">buying me a beer</Hyperlink>
<Run Text=". If you wish to leave me a comment or ask a question visit my blog at " />
<LineBreak />
<Hyperlink NavigateUri="http://www.wpinternals.net/">www.wpinternals.net</Hyperlink>
<Run Text="." />
<LineBreak />
<LineBreak />
<Run Text="This section explains some basic information about using this tool. I suggest you take a few minutes and read this section thoroughly to help avoid problems and surprises. However please remember that any damage caused to a device during the use of this tool is your responsibility solely." />
</local:Paragraph>
</FlowDocument>
</local:FlowDocumentScrollViewerNoMouseWheel>
</StackPanel>
</Border>
<Border BorderThickness="1" BorderBrush="#FFD4D4D4" HorizontalAlignment="Stretch" VerticalAlignment="Center" Padding="25" Margin="0,0,0,20">
<StackPanel>
<local:FlowDocumentScrollViewerNoMouseWheel Grid.Column="1" Margin="20,0" VerticalScrollBarVisibility="Auto" >
<FlowDocument FontFamily="Segoe UI" FontSize="12" Loaded="Document_Loaded" PagePadding="1">
<local:Paragraph>
<Run Text="Supported phones" FontSize="18" FontWeight="Bold" Foreground="#FF3753A6" />
<LineBreak />
<LineBreak />
<Run Text="Compatibility of this tool largely depends on the bootloader of the phone. The bootloaders of Lumia phones consist of different parts. Different bootphases are implemented by Qualcomm, Intel, Nokia and Microsoft. The earliest Windows Phone 8 based Lumia's are based on the Qualcomm Snapdragon S4 chipset. For reference I will call the bootloaders of these phones: " />
<Run Text="&quot;Lumia Bootloader Spec A&quot;" FontStyle="Italic" />
<Run Text=". Windows Phone Internals version 1 was written to target those Lumia's." />
<LineBreak />
<LineBreak />
<Run Text="Later models are based on Qualcomm Snapdragon 200 - 800 series. Qualcomm refactored a significant part of their bootloader-code for these new chipsets. And at the same time Nokia also made significant changes to their parts of the bootloader. For reference I will call the bootloaders of these phones: " />
<Run Text="&quot;Lumia Bootloader Spec B&quot;" FontStyle="Italic" />
<Run Text=". So by introducing Lumia's based on the new Qualcomm chipsets all my earlier exploits were rendered useless. I had to find new exploits for defeating the new SecureBoot code, for flashing custom ROM's and for entering Mass Storage mode. Windows Phone Internals version 2 also targets Lumia phones with Bootloader Spec B now." />
<LineBreak />
<LineBreak />
<Run Text="My old exploits have been proven to work on all Lumia's with Bootloader Spec A. My new exploits should be working on all Lumia's with Bootloader Spec B. I have tested a lot of models, but not all. So I cannot be sure yet that the new exploits work on all models. It is possible that some models have modified bootloaders which may not be compatible. When a phone turns out to be incompatible when trying to unlock it, it will end up in Flash mode, and it will not be able to boot the OS anymore. In this case it will always be possible to flash a stock ROM to get the phone booting again. Here is a list which shows what Bootloader Spec was used for different Lumia models. It also shows which OS versions are supported for enabling Root Access."/>
<LineBreak />
<LineBreak />
</local:Paragraph>
</FlowDocument>
</local:FlowDocumentScrollViewerNoMouseWheel>
<Border BorderThickness="1" BorderBrush="#FFD4D4D4" Background="#FFF8F8F8" HorizontalAlignment="Stretch" Margin="20,-10,20,0" Padding="0,20,0,20" >
<TextBlock Margin="30,0,30,0">
<Bold>Lumia models with Bootloader Spec A</Bold><LineBreak />
<LineBreak />
- Lumia 520, 521, 525, 526 <LineBreak />
- Lumia 620, 625 <LineBreak />
- Lumia 720 <LineBreak />
- Lumia 820, 822 <LineBreak />
- Lumia 920, 925, 928 <LineBreak />
- Lumia 1020 <LineBreak />
- Lumia 1320 <LineBreak />
<LineBreak />
<Bold>Lumia models with Bootloader Spec B</Bold><LineBreak />
<LineBreak />
- Lumia 1520 <LineBreak />
- Lumia 430, 435 <LineBreak />
- Lumia 530, 532, 535 <LineBreak />
- Lumia 630, 635, 636, 638 <LineBreak />
- Lumia 730, 735 <LineBreak />
- Lumia 830 <LineBreak />
- Lumia 929 (Icon), 930 <LineBreak />
- Lumia 540 <LineBreak />
- Lumia 640, 640 XL <LineBreak />
- Lumia 550 <LineBreak />
- Lumia 650 <LineBreak />
- Lumia 950, 950 XL
</TextBlock>
</Border>
<Border BorderThickness="1" BorderBrush="#FFD4D4D4" Background="#FFF8F8F8" HorizontalAlignment="Stretch" Margin="20,20,20,0" Padding="0,20,0,20" >
<TextBlock Margin="30,0,30,0">
<Bold>Supported OS versions for Root Access on models with Bootloader Spec A</Bold><LineBreak />
<LineBreak />
- 8.10.12393.890 <LineBreak />
- 8.10.12397.895 <LineBreak />
- 8.10.14219.341 <LineBreak />
- 8.10.14226.359 <LineBreak />
- 8.10.14234.375 <LineBreak />
- 8.10.15116.125 <LineBreak />
- 8.10.15148.160 <LineBreak />
- 10.0.10512.1000 <LineBreak />
- 10.0.10536.1004 <LineBreak />
- 10.0.10549.4 <LineBreak />
- 10.0.10581.0 <LineBreak />
- 10.0.10586.11 <LineBreak />
- 10.0.10586.36 <LineBreak />
<LineBreak />
<Bold>Supported OS versions for all Lumia's</Bold><LineBreak />
<LineBreak />
- 10.0.10586.107 <LineBreak />
- 10.0.10586.318 <LineBreak />
- 10.0.10586.494 <LineBreak />
- 10.0.15063.0 <LineBreak />
- 10.0.15063.297 <LineBreak />
- 10.0.15254.1 <LineBreak />
- 10.0.15254.12 <LineBreak />
- 10.0.15254.16 (Insider build) <LineBreak />
- 10.0.15254.124 <LineBreak />
- 10.0.15254.158 (Insider and production builds) <LineBreak />
- 10.0.15254.490 <LineBreak />
- 10.0.15254.527 <LineBreak />
- 10.0.15254.530
</TextBlock>
<!--
- 10.0.10240.16384 <LineBreak />
-->
</Border>
</StackPanel>
</Border>
<Border BorderThickness="1" BorderBrush="#FFD4D4D4" HorizontalAlignment="Stretch" VerticalAlignment="Center" Padding="25" Margin="0,0,0,20">
<local:FlowDocumentScrollViewerNoMouseWheel Grid.Column="1" Margin="20,0" VerticalScrollBarVisibility="Auto" >
<FlowDocument FontFamily="Segoe UI" FontSize="12" Loaded="Document_Loaded" PagePadding="1">
<local:Paragraph>
<Run Text="Required Third Party Downloads" FontSize="18" FontWeight="Bold" Foreground="#FF3753A6" />
<LineBreak />
<LineBreak />
<Run Text="There are a number of third party components which must be downloaded and in some cases installed before you can use this tool." />
</local:Paragraph>
<local:Paragraph>
<Run Text="Lumia drivers" FontWeight="Bold" Foreground="#FF3753A6" />
<LineBreak />
<LineBreak />
<Run Text="The majority of the Lumia drivers which are required by this tool are installed by the " />
<Hyperlink NavigateUri="http://go.microsoft.com/fwlink/?LinkID=525569">Windows Device Recovery Tool</Hyperlink>
<Run Text=". Please download and install this tool on the computer on which you will run this tool." />
<LineBreak />
<LineBreak />
<Run Text="Qualcomm Emergency Download drivers" FontWeight="Bold" Foreground="#FF3753A6" />
<LineBreak />
<LineBreak />
<Run Text="When the bootloader is being unlocked, the phone needs to be switched to Qualcomm Emergency Download mode." />
<LineBreak />
<LineBreak />
<Run Text="To enable communication with your phone whilst it is in this mode you must install one of the following drivers, both of which are supported by the tool."/>
</local:Paragraph>
<List MarkerStyle="Decimal">
<ListItem>
<local:Paragraph>
<Run FontWeight="Bold" Text="Microsoft / Nokia Driver"/>
<Run Text=" This exposes the phone in emergency mode as a WinUSB device. This "/>
<Hyperlink NavigateUri="https://www.google.com/search?q=%22emergencydownloaddriver.msi%22">google search</Hyperlink>
<Run Text=" will help you locate the driver."/>
</local:Paragraph>
</ListItem>
<ListItem>
<local:Paragraph>
<Run FontWeight="Bold" Text="Qualcomm Driver"/>
<Run Text=" This exposes the phone as a serial device whilst in this emergency mode. This "/>
<Hyperlink NavigateUri="https://www.google.com/search?q=%22qcser.inf%22">google search</Hyperlink>
<Run Text=" will help you locate the driver."/>
</local:Paragraph>
</ListItem>
</List>
<local:Paragraph>
<Run FontWeight="Bold" Text="WARNING: "/>
<Run Text="I would strongly suggest to use the Microsoft / Nokia driver. Eventhough the Qualcomm driver is supported, I have seen some unexpected behavior when using this driver. If Windows Phone Internals freezes when the phone is switched to or through Emergency Mode, first make sure you have a driver installed for Emergency Mode. If the phone is exposed as serial COM port, then you should uninstall the driver and install the WinUSB driver from Microsoft." />
<LineBreak />
<LineBreak />
<Run Text="The downloaded driver may come as an msi package which can simply be run/installed. Alternatively if the driver package comes as an archive it will contain an INF file which can be installed with this command line:-" />
<LineBreak />
<LineBreak />
<Run Text=" PNPUtil.exe -i -a PATH_TO_YOUR_FILE.INF" FontFamily="Courier New" FontSize="12" />
<LineBreak />
<LineBreak />
<Run FontWeight="Bold" Text="NOTE: "/>
<Run Text="Whilst in emergency mode the phone will appear in device manager as having the device ID &quot;VID_05C6&amp;PID_9008&quot;." />
<LineBreak />
<LineBreak />
<Run Text="FFU file" FontWeight="Bold" Foreground="#FF3753A6" />
<LineBreak />
<LineBreak />
<Run Text="The process of unlocking the bootloader depends on a ROM image for your target phone. Downloading such ROM images (FFU files) has become much easier with Windows Phone Internals version 2. Basically you just connect the phone, go to the " />
<Hyperlink NavigateUri="Download">Download</Hyperlink>
<Run Text=" page of this tool and download the ROM image."/>
<LineBreak />
<LineBreak />
<Run FontWeight="Bold" Text="NOTE: " />
<Run Text="If you are about to unlock a phone with Bootloader Spec B, then you also click the &quot;Download all&quot; button. This will download the FFU file and also the emergency programmer files. If the FFU file contains an OS version which is not supported by Windows Phone Internals SecureBoot Unlock version 2, the this will also automatically download an additional FFU file to extract the necessary files from it." />
<LineBreak />
<LineBreak />
<Run FontWeight="Bold" Text="WARNING:"/>
<Run Text=" There is a "/>
<Hyperlink NavigateUri="http://forum.xda-developers.com/showthread.php?t=2096045">known bug</Hyperlink>
<Run Text=" related to Samsung branded memory which is used in some Lumia phones. This bug can be triggered during flashing both with official and unofficial tools and during OS updates and will render the entire eMMC (flash memory) to become write protected." />
<LineBreak />
<LineBreak />
<Run Text="If this bug is trigged it " />
<Run FontWeight="Bold" Text="is not"/>
<Run Text=" caused by this tool (official tools also trigger it) but instead it is a fault caused by a combination of the Samsung eMMC bug and recent eMMC drivers." />
<LineBreak />
<LineBreak />
<Run Text="It is possible that tweakers may be able to modify drivers or restore an old driver to avoid this problem using the access provided by this tool." />
<LineBreak />
<LineBreak />
<Run Text="Lumia Emergency Programmer" FontWeight="Bold" Foreground="#FF3753A6" />
<LineBreak />
<LineBreak />
<Run Text="The tool requires an emergency programmer for the device that you are unlocking. There is a different programmer for every phone model. The emergency programmer can also be downloaded by using the " />
<Hyperlink NavigateUri="Download">Download</Hyperlink>
<Run Text=" page of this tool. In some cases the emergency files cannot be found this way and you will need to download the emergency files yourself. This " />
<Hyperlink NavigateUri="https://www.google.com/search?q=%22Lumia 650 emergency files%22">google search</Hyperlink>
<Run Text=" may yield some relevant results." />
<LineBreak />
<LineBreak />
<Run Text="Engineering SBL3" FontWeight="Bold" Foreground="#FF3753A6" />
<LineBreak />
<LineBreak />
<Run Text="Engineering phones can be switched to Mass Storage Mode. When in this mode the phone acts as if it is removable hard drive allowing full access to the flash memory. This mode is not implemented in retail ROM images. For phones with Bootloader Spec B this is not a problem, because Windows Phone Internals is able to locate all necessary resources to unlock Mass Storage Mode on these phone. If you want to unlock Mass Storage Mode on a phone with Bootloader Spec A, then you need to select an image from an engineering phone which contains an SBL3 partition." />
<LineBreak />
<LineBreak />
<Run Text="This tool will try to extract the SBL3 partition from either an FFU file or a raw image. This " />
<Hyperlink NavigateUri="https://www.google.com/search?q=%22Lumia%22+%22Engineering%22+%22FFU%22">google search</Hyperlink>
<Run Text=" may yield some relevant results. But remember to verify the OEM and CPU from the image you download. The engineering SBL3 must come from a phone or image that is from the same OEM and has the same CPU as your target device. " />
<Run FontWeight="Bold" Text="Flashing the wrong SBL3 may permanently damage your phone."/>
<LineBreak />
<LineBreak />
<Run Text="If you are unable to obtain an engineering image, you must first dump your phones ROM image, then apply the desired changes to this image and finally flash the modified image back onto your device." />
</local:Paragraph>
</FlowDocument>
</local:FlowDocumentScrollViewerNoMouseWheel>
</Border>
<Border BorderThickness="1" BorderBrush="#FFD4D4D4" HorizontalAlignment="Stretch" VerticalAlignment="Center" Padding="25" Margin="0,0,0,20">
<local:FlowDocumentScrollViewerNoMouseWheel Grid.Column="1" Margin="20,0" VerticalScrollBarVisibility="Auto" >
<FlowDocument FontFamily="Segoe UI" FontSize="12" Loaded="Document_Loaded" PagePadding="1">
<local:Paragraph>
<Run Text="Unlocking the bootloader" FontSize="18" FontWeight="Bold" Foreground="#FF3753A6" />
<LineBreak />
<LineBreak />
<Run Text="SecureBoot is a chain of integrity checks which prevents any modifications to system-files that has the following phases." />
<LineBreak />
<LineBreak />
<BulletDecorator IsHitTestVisible="False">
<BulletDecorator.Bullet>
<TextBlock Text="-" Margin="20,0,10,0"/>
</BulletDecorator.Bullet>
<TextBlock Text="Bootloader" Margin="30,0,0,0"/>
</BulletDecorator>
<LineBreak />
<BulletDecorator IsHitTestVisible="False">
<BulletDecorator.Bullet>
<TextBlock Text="-" Margin="20,0,10,0"/>
</BulletDecorator.Bullet>
<TextBlock Text="Operating System Loader" Margin="30,0,0,0"/>
</BulletDecorator>
<LineBreak />
<BulletDecorator IsHitTestVisible="False">
<BulletDecorator.Bullet>
<TextBlock Text="-" Margin="20,0,10,0"/>
</BulletDecorator.Bullet>
<TextBlock Text="Operating System Runtime" Margin="30,0,0,0"/>
</BulletDecorator>
<LineBreak />
<LineBreak />
<Hyperlink NavigateUri="UnlockBoot">Unlocking the bootloader</Hyperlink>
<Run Text=" will disable the integrity checks in bootloader (e.g. the first stage of SecureBoot). This is a mandatory requirement that enables changes to the subsequent stages of the secure boot chain. Therefore you must unlock the bootloader before you enable Root Access." />
<LineBreak />
<LineBreak />
<Run Text="As for flashing Custom ROM's there is a difference in the approach for Bootloaders Spec A and Bootloaders Spec B. The &quot;Custom flash&quot; exploit, which is used for the phones with Bootloader Spec B, works even on phones which did not unlock the bootloader yet. So you can start flashing a Custom ROM straight away. But the first time you will use the Custom flash on such phone, it will need to find a Flashing Profile first. It will be done automatically. During this phase the phone may reboot quite a few times. Although it may look as if the phone is in a reboot-loop, you should not interfere with the process. This reboot-loop will end after Windows Phone Internals was able to find a working Flashing Profile." />
<LineBreak />
<LineBreak />
<Run FontWeight="Bold" Text="NOTE: "/>
<Run Text="Unlocking the bootloader of the phone requires a certain version of UEFI on your phone. This tool will verify this version. If it is not possible to perform the Flash-operation you will be notified and you will need to run Windows Updates on your phone or flash a newer ROM to your phone before you can proceed." />
<LineBreak />
<LineBreak />
<Run FontWeight="Bold" Text="NOTE: "/>
<Run Text="The unlock sequence for Lumia's with bootloader spec B depends on a certain &quot;Boot order&quot;. Right after a Full Flash or right after you relocked a phone, this boot order is different. When you flash an FFU, you can interrupt the boot immediately, before it has completed its first boot. If you would then try to unlock the bootloader, this will fail halfway. This problem will be detected and the changes will be rolled back. A simple reboot will solve the problem; the boot order is restored. After that you can start the unlock sequence again." />
<LineBreak />
<LineBreak />
<Run Text="Mass Storage Mode" FontWeight="Bold" Foreground="#FF3753A6" />
<LineBreak />
<LineBreak />
<Run Text="This mode allows direct access to the eMMC (flash memory) of the phone at sector and file levels. This means it is possible to directly patch system-files. Once in mass storage mode the phone will appear as a removable hard drive in Windows." />
<LineBreak />
<LineBreak />
<Run Text="Be very careful with this feature as it can cause irreparable damage to your phone. In particular be aware of the following:-" />
<LineBreak />
<LineBreak />
<BulletDecorator IsHitTestVisible="False">
<BulletDecorator.Bullet>
<TextBlock Text="-" Margin="20,0,10,0"/>
</BulletDecorator.Bullet>
<TextBlock Margin="30,0,0,0" Text="Never use a Virus Scanner on the phone as they may inadvertently corrupt system boot data."/>
</BulletDecorator>
<LineBreak />
<BulletDecorator IsHitTestVisible="False">
<BulletDecorator.Bullet>
<TextBlock Text="-" Margin="20,0,10,0"/>
</BulletDecorator.Bullet>
<TextBlock Margin="30,0,0,0" Text="Never use disk repair tools for the same reason."/>
</BulletDecorator>
<LineBreak />
<BulletDecorator IsHitTestVisible="False">
<BulletDecorator.Bullet>
<TextBlock Text="-" Margin="20,0,10,0"/>
</BulletDecorator.Bullet>
<TextBlock TextWrapping="Wrap" Margin="30,0,0,0" >
<TextBlock.Inlines>
<Run Text="If Windows prompts you to format a partition when your phone is in Mass Storage Mode it is essentially that your ignore these messages. "/>
<Run FontWeight="Bold" Text="Formatting a phone partition may permanently damage the device."/>
</TextBlock.Inlines>
</TextBlock>
</BulletDecorator>
<LineBreak />
<BulletDecorator IsHitTestVisible="False">
<BulletDecorator.Bullet>
<TextBlock Text="-" Margin="20,0,10,0"/>
</BulletDecorator.Bullet>
<TextBlock TextWrapping="Wrap" Margin="30,0,0,0" >
<TextBlock.Inlines>
<Run Text="Never modify the security-settings (ACL) of a file or registry-key."/>
</TextBlock.Inlines>
</TextBlock>
</BulletDecorator>
<LineBreak />
<LineBreak />
<Run Text="You will notice that some files or folders cannot be accessed due to its security-settings. Do not alter the security-settings to get access to these files! Instead run a file-browser under the SYSTEM account to access these files and folders. Download and install " />
<Hyperlink NavigateUri="https://technet.microsoft.com/en-us/sysinternals/bb896649.aspx">Sysinternals PsTools</Hyperlink>
<Run Text=" and a " />
<Hyperlink NavigateUri="https://www.google.nl/?#&amp;q=freeware+file+manager">3rd party file manager</Hyperlink>
<Run Text=". Then launch the file manager like this:-" />
<LineBreak />
<LineBreak />
<Run Text=" &quot;C:\Program Files\PsTools\PsExec.exe&quot; -d -s -i &quot;&lt;PATH TO FILE MANAGER&gt;&quot;" FontFamily="Courier New" FontSize="12" />
</local:Paragraph>
</FlowDocument>
</local:FlowDocumentScrollViewerNoMouseWheel>
</Border>
<Border BorderThickness="1" BorderBrush="#FFD4D4D4" HorizontalAlignment="Stretch" VerticalAlignment="Center" Padding="25" Margin="0,0,0,20">
<local:FlowDocumentScrollViewerNoMouseWheel Grid.Column="1" Margin="20,0" VerticalScrollBarVisibility="Auto" >
<FlowDocument FontFamily="Segoe UI" FontSize="12" Loaded="Document_Loaded" PagePadding="1">
<local:Paragraph>
<Run Text="Root Access" FontSize="18" FontWeight="Bold" Foreground="#FF3753A6" />
<LineBreak />
<LineBreak />
<Hyperlink NavigateUri="UnlockRoot">Root Access</Hyperlink>
<Run Text=" is a set of hacks that unleashes the power of your Windows Phone:" />
<LineBreak />
<LineBreak />
<BulletDecorator IsHitTestVisible="False">
<BulletDecorator.Bullet>
<TextBlock Text="-" Margin="20,0,10,0"/>
</BulletDecorator.Bullet>
<TextBlock TextWrapping="Wrap" Margin="30,0,0,0" >
<TextBlock.Inlines>
<Run Text="Disable SecureBoot at OS loader and at OS runtime level"/>
</TextBlock.Inlines>
</TextBlock>
</BulletDecorator>
<LineBreak />
<BulletDecorator IsHitTestVisible="False">
<BulletDecorator.Bullet>
<TextBlock Text="-" Margin="20,0,10,0"/>
</BulletDecorator.Bullet>
<TextBlock TextWrapping="Wrap" Margin="30,0,0,0" >
<TextBlock.Inlines>
<Run Text="Disable all ACL, Capability and Privileges checks"/>
</TextBlock.Inlines>
</TextBlock>
</BulletDecorator>
<LineBreak />
<BulletDecorator IsHitTestVisible="False">
<BulletDecorator.Bullet>
<TextBlock Text="-" Margin="20,0,10,0"/>
</BulletDecorator.Bullet>
<TextBlock TextWrapping="Wrap" Margin="30,0,0,0" >
<TextBlock.Inlines>
<Run Text="Allow threads to escape from sandbox security"/>
</TextBlock.Inlines>
</TextBlock>
</BulletDecorator>
<LineBreak />
<BulletDecorator IsHitTestVisible="False">
<BulletDecorator.Bullet>
<TextBlock Text="-" Margin="20,0,10,0"/>
</BulletDecorator.Bullet>
<TextBlock TextWrapping="Wrap" Margin="30,0,0,0" >
<TextBlock.Inlines>
<Run Text="Allow .NET Console executables"/>
</TextBlock.Inlines>
</TextBlock>
</BulletDecorator>
<LineBreak />
<BulletDecorator IsHitTestVisible="False">
<BulletDecorator.Bullet>
<TextBlock Text="-" Margin="20,0,10,0"/>
</BulletDecorator.Bullet>
<TextBlock TextWrapping="Wrap" Margin="30,0,0,0" >
<TextBlock.Inlines>
<Run Text="Jailbreak (side-load homebrew apps, only for WP 8.0 and 8.1 as Windows 10 Mobile already allows side-loading through &quot;developer mode&quot;)"/>
</TextBlock.Inlines>
</TextBlock>
</BulletDecorator>
<LineBreak />
<LineBreak />
<Run Text="When all ACL, Capability and Privileges checks are disabled, it means that you have access to all system resources, which effectively means you have Root Access. Apps will still run in a &quot;Low Box&quot;, because the Low Box security token contains information that is necessary for app to be able to communicate with the system. Some API's deny access to threads that run with a Low Box token. Root Access disables the account logon checks, which allows an app to logon an account and create a thread with non-Lowboxed security token. This thread will also have access to these forbidden API's." />
<LineBreak />
<LineBreak />
<Run Text="Root Access also implements Windows Phone Jailbreak, which lets you install Homebrew apps on your phone." />
<LineBreak />
<LineBreak />
<Run Text="Root Access can be applied directly on the phone through Mass Storage Mode or it can be applied to a mounted ROM image." />
<LineBreak />
<LineBreak />
<Run Text="Root Access must be implemented differently for every version of the Windows Phone Operating System. This tool aims to support the most popular versions of the OS. The Patch Engine is very flexible. Future versions will add support for additional versions of the Windows Phone Operating System." />
<LineBreak />
<LineBreak />
<Run Text="Root Access allows a high degree of tweaking on your phone. But be aware that it also makes your phone vulnerable to badly written software and malware! If you unlocked Mass Storage mode, then this tool will allow you to enable or disable Root Access directly on your phone. To be safe, you can enable Root Access, then make necessary changes and tweaks to your phone and then disable Root Access afterwards." />
</local:Paragraph>
</FlowDocument>
</local:FlowDocumentScrollViewerNoMouseWheel>
</Border>
<Border BorderThickness="1" BorderBrush="#FFD4D4D4" HorizontalAlignment="Stretch" VerticalAlignment="Center" Padding="25" Margin="0,0,0,20">
<local:FlowDocumentScrollViewerNoMouseWheel Grid.Column="1" Margin="20,0" VerticalScrollBarVisibility="Auto" >
<FlowDocument FontFamily="Segoe UI" FontSize="12" Loaded="Document_Loaded" PagePadding="1">
<local:Paragraph>
<Run Text="Custom ROM's" FontSize="18" FontWeight="Bold" Foreground="#FF3753A6" />
<LineBreak />
<LineBreak />
<Run Text="At present there is very little tooling around custom ROM's for Windows Phone 8+. This tool implements a basic set of tools that provide the necessary building blocks to enable experimentation with custom ROMs in a convenient manner." />
<LineBreak />
<LineBreak />
<Run Text="The eMMC of the phone basically consists of four partition types:" />
<LineBreak />
<LineBreak />
<BulletDecorator IsHitTestVisible="False">
<BulletDecorator.Bullet>
<TextBlock Text="-" Margin="20,0,10,0"/>
</BulletDecorator.Bullet>
<TextBlock Margin="30,0,0,0" TextWrapping="Wrap">
<TextBlock.Inlines>
<Run FontStyle="Italic" Text="Boot Partitions" />
<Run Text=" There are a bunch of boot partitions. This tool manages these on your behalf." />
</TextBlock.Inlines>
</TextBlock>
</BulletDecorator>
<LineBreak />
<BulletDecorator IsHitTestVisible="False">
<BulletDecorator.Bullet>
<TextBlock Text="-" Margin="20,0,10,0"/>
</BulletDecorator.Bullet>
<TextBlock Margin="30,0,0,0" TextWrapping="Wrap">
<TextBlock.Inlines>
<Run FontStyle="Italic" Text="The EFIESP partition" />
<Run Text=" The OS Loader and model-specific configuration." />
</TextBlock.Inlines>
</TextBlock>
</BulletDecorator>
<LineBreak />
<BulletDecorator IsHitTestVisible="False">
<BulletDecorator.Bullet>
<TextBlock Text="-" Margin="20,0,10,0"/>
</BulletDecorator.Bullet>
<TextBlock Margin="30,0,0,0" TextWrapping="Wrap">
<TextBlock.Inlines>
<Run FontStyle="Italic" Text="The MainOS partition" />
<Run Text=" The majority of the operating system, model-specific drivers and configuration data." />
</TextBlock.Inlines>
</TextBlock>
</BulletDecorator>
<LineBreak />
<BulletDecorator IsHitTestVisible="False">
<BulletDecorator.Bullet>
<TextBlock Text="-" Margin="20,0,10,0"/>
</BulletDecorator.Bullet>
<TextBlock Margin="30,0,0,0" TextWrapping="Wrap">
<TextBlock.Inlines>
<Run FontStyle="Italic" Text="The Data partition" />
<Run Text=" Applications and user data." />
</TextBlock.Inlines>
</TextBlock>
</BulletDecorator>
<LineBreak />
<LineBreak />
<Run Text="A custom ROM image contains copies of the EFIESP, MainOS and Data-partitions. To create an image you must first "/>
<Hyperlink NavigateUri="Dump">dump</Hyperlink>
<Run Text=" these partitions. Then use " />
<Hyperlink NavigateUri="http://www.osforensics.com/tools/mount-disk-images.html">OSFMount</Hyperlink>
<Run Text=" to mount these partitions and "/>
<Hyperlink NavigateUri="UnlockRoot">Root Access</Hyperlink>
<Run Text=" can be applied on the mounted partitions. When you apply Root Access, the EFIESP and MainOS partitions will be modified. After that you can further customize the partitions." />
<LineBreak />
<LineBreak />
<Run Text="When you are ready dismount the partitions and compress these partitions into a Zip-archive. This Zip-archive is effectively your custom ROM image." />
<LineBreak />
<LineBreak />
<Run Text="The " />
<Hyperlink NavigateUri="Flash">flash-function</Hyperlink>
<Run Text=" allows you to select the Zip-archive and flash the complete contents to the phone at once. It is also possible to flash separate partitions." />
<LineBreak />
<LineBreak />
<Run Text="The partition images are usually very large files. Especially the Data-partition. It can be many Gigabytes in size, depending on the phone-model. Handling such large files can be painful. Therefore it is possible to compress a partition when it is dumped." />
<LineBreak />
<LineBreak />
<Run Text="If you add the compressed partition to the custom ROM Zip-image the flash-function is able to use it properly. Compressed partitions cannot be mounted so you may not wish to compress the EFIESP and MainOS-partitions. The sizes of the partitions can be different on different versions of the OS. The partition-table of the phone will automatically be realigned if necessary." />
<LineBreak />
<LineBreak />
<Run Text="Be aware that the Windows Phone system binaries are protected by copyright! Only create custom ROM's for gaining a more comprehensive understanding of your target device and for your own personal use." />
</local:Paragraph>
</FlowDocument>
</local:FlowDocumentScrollViewerNoMouseWheel>
</Border>
<Border BorderThickness="1" BorderBrush="#FFD4D4D4" HorizontalAlignment="Stretch" VerticalAlignment="Center" Padding="25" Margin="0,0,0,20">
<local:FlowDocumentScrollViewerNoMouseWheel Grid.Column="1" Margin="20,0" VerticalScrollBarVisibility="Auto" >
<FlowDocument FontFamily="Segoe UI" FontSize="12" Loaded="Document_Loaded" PagePadding="1">
<local:Paragraph>
<Run Text="Updating your phone" FontSize="18" FontWeight="Bold" Foreground="#FF3753A6" />
<LineBreak />
<LineBreak />
<Run Text="If you want to update your phone, you should first disable Root Access and Relock the bootloader. After that you can safely update your phone. But be aware that the phone may get updated to a version, which is not supported by Windows Phone Internals. In that case you won't be able to unlock the phone after the update." />
<LineBreak />
<LineBreak />
<Run FontWeight="Bold" Text="WARNING: "/>
<Run Text="When you are running Windows Phone 8 or Windows Phone 8.1, the phone can still start the update process when the phone is unlocked. But that may damage your phone! On Windows 10 Mobile update process will first do an integrity check. When the phone it unlocked, the update process will not start. After relocking the phone, you can update it again." />
</local:Paragraph>
</FlowDocument>
</local:FlowDocumentScrollViewerNoMouseWheel>
</Border>
<Border BorderThickness="1" BorderBrush="#FFD4D4D4" HorizontalAlignment="Stretch" VerticalAlignment="Center" Padding="25" Margin="0,0,0,20">
<local:FlowDocumentScrollViewerNoMouseWheel Grid.Column="1" Margin="20,0" VerticalScrollBarVisibility="Auto" >
<FlowDocument FontFamily="Segoe UI" FontSize="12" Loaded="Document_Loaded" PagePadding="1">
<local:Paragraph>
<Run Text="Backup" FontSize="18" FontWeight="Bold" Foreground="#FF3753A6" />
<LineBreak />
<LineBreak />
<Run Text="If you unlocked Mass Storage mode, this allows you to make a "/>
<Hyperlink NavigateUri="Backup">backup</Hyperlink>
<Run Text=" of the phone. You can backup either single partitions or all partitions straight into one single Zip-image. This Zip-image can be used as if it were a custom ROM and you can use the "/>
<Hyperlink NavigateUri="Flash">flash-function</Hyperlink>
<Run Text=" to restore this backup to the phone." />
<LineBreak />
<LineBreak />
<Run Text="It is important to realize that the MainOS and Data partitions are tied together. Even though the Data partition contains most user data and installed apps, the MainOS partition contains the registry hives and other configuration data. This means that system backup and restore must contain the contents of both partitions." />
<LineBreak />
<LineBreak />
<Run Text="Be aware that all stages of SecureBoot must be disabled at all times to be able to boot a custom ROM. Therefore the Backup-function also makes a backup of the EFIESP partition." />
</local:Paragraph>
</FlowDocument>
</local:FlowDocumentScrollViewerNoMouseWheel>
</Border>
<Border BorderThickness="1" BorderBrush="#FFD4D4D4" HorizontalAlignment="Stretch" VerticalAlignment="Center" Padding="25" Margin="0,0,0,20">
<local:FlowDocumentScrollViewerNoMouseWheel Grid.Column="1" Margin="20,0" VerticalScrollBarVisibility="Auto" >
<FlowDocument FontFamily="Segoe UI" FontSize="12" Loaded="Document_Loaded" PagePadding="1">
<local:Paragraph>
<Run Text="Build and capture" FontSize="18" FontWeight="Bold" Foreground="#FF3753A6" />
<LineBreak />
<LineBreak />
<Run Text="A custom ROM can be built on a live phone and then captured to a ROM image. The phone needs to have unlocked Mass Storage mode. After you applied all changes to the phone, you should Hard Reset the phone and create a backup of the reinitialized phone at the moment it is about to perform a clean boot for the first time. When you create a backup of the phone in this state, the user will have to perform the cold-boot procedure, just as if a stock ROM was flashed to the phone." />
<LineBreak />
<LineBreak />
<Run FontWeight="Bold" Text="Performing a Hard Reset on a phone will remove all user data including pictures, music, call history, messages and saved games."/>
<LineBreak />
<LineBreak />
<Run FontWeight="Bold" Text="NOTE: " />
<Run Text="Most changes to the file-system on the C: drive of the phone will survive a Hard Reset. If a bootloader was unlocked and Root Access was enabled, the phone will still be unlocked after a Hard Reset. However, the registry-hives are restored on Hard Reset. If you want to modify the registry permanently, you have to edit the registry-hives in this location:-" />
<LineBreak />
<LineBreak />
<Run Text=" \Windows\system32\config\REGBACK\" FontFamily="Courier New" FontSize="12" />
<LineBreak />
<LineBreak />
<Run Text="After a Hard Reset the backup-image of the phone may still contain dirty sectors, which can possibly even contain private data. Therefore it is best practice to clean unused sectors. You can download and install " />
<Hyperlink NavigateUri="https://technet.microsoft.com/en-us/sysinternals/bb897443.aspx">Sysinternals SDelete</Hyperlink>
<Run Text=" to clean up the images." />
<LineBreak />
<LineBreak />
<Run Text="Follow these steps for a complete Build and Capture:-" />
<LineBreak />
<LineBreak />
<BulletDecorator IsHitTestVisible="False">
<BulletDecorator.Bullet>
<TextBlock Text="-" Margin="20,0,10,0"/>
</BulletDecorator.Bullet>
<TextBlock Margin="30,0,0,0" TextWrapping="Wrap">
<TextBlock.Inlines>
<Run Text="Make sure the phone is fully charged" />
</TextBlock.Inlines>
</TextBlock>
</BulletDecorator>
<LineBreak />
<BulletDecorator IsHitTestVisible="False">
<BulletDecorator.Bullet>
<TextBlock Text="-" Margin="20,0,10,0"/>
</BulletDecorator.Bullet>
<TextBlock Margin="30,0,0,0" TextWrapping="Wrap">
<TextBlock.Inlines>
<Run Text="Disconnect the phone from the PC" />
</TextBlock.Inlines>
</TextBlock>
</BulletDecorator>
<LineBreak />
<BulletDecorator IsHitTestVisible="False">
<BulletDecorator.Bullet>
<TextBlock Text="-" Margin="20,0,10,0"/>
</BulletDecorator.Bullet>
<TextBlock Margin="30,0,0,0" TextWrapping="Wrap">
<TextBlock.Inlines>
<Run Text="Power down the phone" />
</TextBlock.Inlines>
</TextBlock>
</BulletDecorator>
<LineBreak />
<BulletDecorator IsHitTestVisible="False">
<BulletDecorator.Bullet>
<TextBlock Text="-" Margin="20,0,10,0"/>
</BulletDecorator.Bullet>
<TextBlock Margin="30,0,0,0" TextWrapping="Wrap">
<TextBlock.Inlines>
<Run Text="Press and hold Volume-Down-button and then shortly press the Power-button while still keeping the Volume-Down-button pressed until you see an exclamation-mark" />
</TextBlock.Inlines>
</TextBlock>
</BulletDecorator>
<LineBreak />
<BulletDecorator IsHitTestVisible="False">
<BulletDecorator.Bullet>
<TextBlock Text="-" Margin="20,0,10,0"/>
</BulletDecorator.Bullet>
<TextBlock Margin="30,0,0,0" TextWrapping="Wrap">
<TextBlock.Inlines>
<Run Text="Press in this order: Volume Up, Volume Down, Power and Volume Down" />
</TextBlock.Inlines>
</TextBlock>
</BulletDecorator>
<LineBreak />
<BulletDecorator IsHitTestVisible="False">
<BulletDecorator.Bullet>
<TextBlock Text="-" Margin="20,0,10,0"/>
</BulletDecorator.Bullet>
<TextBlock Margin="30,0,0,0" TextWrapping="Wrap">
<TextBlock.Inlines>
<Run Text="The phone will reboot and show spinning gears" />
</TextBlock.Inlines>
</TextBlock>
</BulletDecorator>
<LineBreak />
<BulletDecorator IsHitTestVisible="False">
<BulletDecorator.Bullet>
<TextBlock Text="-" Margin="20,0,10,0"/>
</BulletDecorator.Bullet>
<TextBlock Margin="30,0,0,0" TextWrapping="Wrap">
<TextBlock.Inlines>
<Run Text="When the phone is showing gears choose the Backup menu-item in this tool and then connect the phone to the PC" />
</TextBlock.Inlines>
</TextBlock>
</BulletDecorator>
<LineBreak />
<BulletDecorator IsHitTestVisible="False">
<BulletDecorator.Bullet>
<TextBlock Text="-" Margin="20,0,10,0"/>
</BulletDecorator.Bullet>
<TextBlock Margin="30,0,0,0" TextWrapping="Wrap">
<TextBlock.Inlines>
<Run Text="After a while the phone will reboot and this tool will force the phone into Flash mode" />
</TextBlock.Inlines>
</TextBlock>
</BulletDecorator>
<LineBreak />
<BulletDecorator IsHitTestVisible="False">
<BulletDecorator.Bullet>
<TextBlock Text="-" Margin="20,0,10,0"/>
</BulletDecorator.Bullet>
<TextBlock Margin="30,0,0,0" TextWrapping="Wrap">
<TextBlock.Inlines>
<Run Text="Choose to make a backup of separate partitions and select target-locations for the EFIESP, MainOS and Data-partition binaries" />
</TextBlock.Inlines>
</TextBlock>
</BulletDecorator>
<LineBreak />
<BulletDecorator IsHitTestVisible="True">
<BulletDecorator.Bullet>
<TextBlock Text="-" Margin="20,0,10,0"/>
</BulletDecorator.Bullet>
<TextBlock Margin="30,0,0,0" TextWrapping="Wrap">
<TextBlock.Inlines>
<Run Text="Use " />
<Hyperlink NavigateUri="http://www.osforensics.com/tools/mount-disk-images.html">OSFMount</Hyperlink>
<Run Text=" to mount all three partitions in Read / Write mode" />
</TextBlock.Inlines>
</TextBlock>
</BulletDecorator>
<LineBreak />
<BulletDecorator IsHitTestVisible="False">
<BulletDecorator.Bullet>
<TextBlock Text="-" Margin="20,0,10,0"/>
</BulletDecorator.Bullet>
<TextBlock Margin="30,0,0,0" TextWrapping="Wrap">
<TextBlock.Inlines>
<Run Text="Assuming the partitions are mounted as drives D: E: and F: execute these commandlines: " />
<LineBreak />
<LineBreak />
<Run Text=" sdelete -z D:" FontFamily="Courier New" FontSize="12" />
<LineBreak />
<Run Text=" sdelete -z E:" FontFamily="Courier New" FontSize="12" />
<LineBreak />
<Run Text=" sdelete -z F:" FontFamily="Courier New" FontSize="12" />
<LineBreak />
</TextBlock.Inlines>
</TextBlock>
</BulletDecorator>
<LineBreak />
<BulletDecorator IsHitTestVisible="False">
<BulletDecorator.Bullet>
<TextBlock Text="-" Margin="20,0,10,0"/>
</BulletDecorator.Bullet>
<TextBlock Margin="30,0,0,0" TextWrapping="Wrap">
<TextBlock.Inlines>
<Run Text="Unmount the partitions" />
</TextBlock.Inlines>
</TextBlock>
</BulletDecorator>
<LineBreak />
<BulletDecorator IsHitTestVisible="False">
<BulletDecorator.Bullet>
<TextBlock Text="-" Margin="20,0,10,0"/>
</BulletDecorator.Bullet>
<TextBlock Margin="30,0,0,0" TextWrapping="Wrap">
<TextBlock.Inlines>
<Run Text="Create a ZIP-archive containing the three partitions" />
</TextBlock.Inlines>
</TextBlock>
</BulletDecorator>
</local:Paragraph>
</FlowDocument>
</local:FlowDocumentScrollViewerNoMouseWheel>
</Border>
<Border BorderThickness="1" BorderBrush="#FFD4D4D4" HorizontalAlignment="Stretch" VerticalAlignment="Center" Padding="25" Margin="0,0,0,20">
<local:FlowDocumentScrollViewerNoMouseWheel Grid.Column="1" Margin="20,0" VerticalScrollBarVisibility="Auto" >
<FlowDocument FontFamily="Segoe UI" FontSize="12" Loaded="Document_Loaded" PagePadding="1">
<local:Paragraph>
<Run Text="Windows 10 Mobile" FontSize="18" FontWeight="Bold" Foreground="#FF3753A6" />
<LineBreak />
<LineBreak />
<Run Text="If your phone is not officially supported to run Windows 10 Mobile, then you can follow "/>
<Hyperlink NavigateUri="https://forum.xda-developers.com/windows-10-mobile/guide-win10-mobile-offline-update-t3527340">these steps</Hyperlink>
<Run Text=" to update your phone. Keep in mind that Windows 10 Mobile may have performance issues when running on unsupported phones."/>
<LineBreak />
<LineBreak />
<Run Text="Security Lock" FontWeight="Bold" Foreground="#FF3753A6" />
<LineBreak />
<LineBreak />
<Run Text="Windows 10 Mobile has a new security feature, which is called Security Lock. This feature is part of the NGC module (Next Generation Credentials), also known as Windows Hello. This module is responsible for storing credentials, like the Device Pincode, in a secure place. When the Device Pincode is enabled, it creates a container to store the pincode, using encryption and some system-variables (hash-codes of system-files)." />
<LineBreak />
<LineBreak />
<Run Text="When system-files are modified, the hash-codes don't match the variables on the secure container anymore, and it will not be possible to decrypt the pincode for two hours and it will not be possible to unlock the phone during this time. The phone will show this warning: -" />
</local:Paragraph>
<local:Paragraph Margin="30,0,0,0">
<Run FontStyle="Italic" Text="&quot;This device has been locked for security reasons. Connect your device to a power source for at least two hours, and then try again.&quot;" />
</local:Paragraph>
<local:Paragraph>
<Run Text="Security Lock can be triggered when you previously had a pincode enabled and then disabled it later on. Disabling the pincode does not clean-up the security container. If you then Enable Root Access, the variables with hash-codes of system-files will change. As soon as you enable the pincode again, you will get the Security Lock warning. In this situation you have three options:"/>
<LineBreak/>
<LineBreak/>
<BulletDecorator IsHitTestVisible="True">
<BulletDecorator.Bullet>
<TextBlock Text="-" Margin="20,0,10,0"/>
</BulletDecorator.Bullet>
<TextBlock Margin="30,0,0,0" TextWrapping="Wrap">
<TextBlock.Inlines>
<Hyperlink NavigateUri="https://support.microsoft.com/en-us/help/4028741/windows-unlock-your-windows-10-phone-remotely">Remote unlock</Hyperlink>
<Run Text=" your phone"/>
</TextBlock.Inlines>
</TextBlock>
</BulletDecorator>
<LineBreak />
<BulletDecorator IsHitTestVisible="False">
<BulletDecorator.Bullet>
<TextBlock Text="-" Margin="20,0,10,0"/>
</BulletDecorator.Bullet>
<TextBlock Margin="30,0,0,0" TextWrapping="Wrap">
<TextBlock.Inlines>
<Run Text="Charge your phone and reboot after two hours" />
</TextBlock.Inlines>
</TextBlock>
</BulletDecorator>
<LineBreak />
<BulletDecorator IsHitTestVisible="False">
<BulletDecorator.Bullet>
<TextBlock Text="-" Margin="20,0,10,0"/>
</BulletDecorator.Bullet>
<TextBlock Margin="30,0,0,0" TextWrapping="Wrap">
<TextBlock.Inlines>
<Run Text="Or you can prevent this situation by performing a Hard Reset on the phone after having Root Access enabled. This will remove all user data including pictures, music, call history, messages and saved games!" />
</TextBlock.Inlines>
</TextBlock>
</BulletDecorator>
</local:Paragraph>
</FlowDocument>
</local:FlowDocumentScrollViewerNoMouseWheel>
</Border>
<Border BorderThickness="1" BorderBrush="#FFD4D4D4" HorizontalAlignment="Stretch" VerticalAlignment="Center" Padding="25">
<local:FlowDocumentScrollViewerNoMouseWheel Grid.Column="1" Margin="20,0" VerticalScrollBarVisibility="Auto" >
<FlowDocument FontFamily="Segoe UI" FontSize="12" Loaded="Document_Loaded" PagePadding="1">
<local:Paragraph>
<Run Text="Known limitations" FontSize="18" FontWeight="Bold" Foreground="#FF3753A6" />
<LineBreak />
<LineBreak />
<Run Text="The problems stated in this section should be fixed in later versions of Windows Phone Internals. But it needs more time to implement the solutions." />
<LineBreak />
<LineBreak />
<Run Text="The phone may boot to a Blue Screen after unlocking the bootloader" FontWeight="Bold" Foreground="#FF3753A6" />
<LineBreak />
<LineBreak />
<Run Text="This is a limitation of SecureBoot Unlock v2. Some Windows 10 based phones need additional modifications to be able to boot properly after the bootloader is unlocked. The patches will be applied automatically if the OS on the phone is on a supported version. In case the phone doesn't boot properly, you can still enter Mass Storage Mode if you want. To boot properly again, restore the bootloader. You can update to a supported OS version and try again after that." />
<LineBreak />
<LineBreak />
<Run Text="Some Silverlight apps may not work" FontWeight="Bold" Foreground="#FF3753A6" />
<LineBreak />
<LineBreak />
<Run Text="This is a limitation of SecureBoot Unlock v2. The cause of this problem is known. For now this problem can be fixed by enabling Root Access on the phone." />
<LineBreak />
<LineBreak />
<Run Text="Iris scanner does not work anymore on Lumia 950 and Lumia 950 XL" FontWeight="Bold" Foreground="#FF3753A6" />
<LineBreak />
<LineBreak />
<Run Text="This is a limitation of SecureBoot Unlock v2. SecureBoot Unlock v2 removes all policies and this also disables the iris scanner. Windows Hello does not work properly anymore. To fix the problem you can restore the bootloader." />
<LineBreak />
<LineBreak />
<Run Text="Can't unlock ROM image for Lumia's with Bootloader Spec B" FontWeight="Bold" Foreground="#FF3753A6" />
<LineBreak />
<LineBreak />
<Run Text="Due to the complexity of SecureBoot Hack v2, unlocking mounted ROM images is only possible for Lumia's with Bootloader Spec A. For Lumia's with bootloader Spec B you can create Custom ROM's with Root Access using the &quot;Build and capture&quot; technique, as described on the Getting started page." />
<LineBreak />
<LineBreak />
<Run Text="SecureBoot unlock v2 may occasionally fail" FontWeight="Bold" Foreground="#FF3753A6" />
<LineBreak />
<LineBreak />
<Run Text="On occasional the Mass Storage drivers on the PC can misbehave. In this case, the phone will be in mass storage mode, but the PC does not recognize it. This could affect the unlock process. Windows Phone Internals now has a detection-method for this behavior, but that only works on Windows 8.1 and Windows 10. So for the most stable unlock-experience, you should avoid Windows 7 or older." />
<LineBreak />
<LineBreak />
<Run Text="Sector-boundaries for custom flashing partitions" FontWeight="Bold" Foreground="#FF3753A6" />
<LineBreak />
<LineBreak />
<Run Text="Lumia's with Bootloader Spec B can only flash partitions on a 0x100 sector-boundary (or 0x20000 bytes-boundary). Your partition-layout should comply to this rule. When Windows Phone Internals calculates a new partition layout for a Custom ROM, the layout will automatically comply to this rule." />
<LineBreak />
<LineBreak />
<Run Text="SecureBoot Unlock v2 may fail altogether" FontWeight="Bold" Foreground="#FF3753A6" />
<LineBreak />
<LineBreak />
<Run Text="Some phones, namely the Lumia 535 models, may experience problems during the unlock process. The first part of the unlock succeeds, but when the phone is being switched to Mass Storage Mode, it is not able to find a working Flashing Profile anymore. This issue is under investigation." />
<LineBreak />
<LineBreak />
<Run Text="Windows Phone Internals often tries to find a flashing profile" FontWeight="Bold" Foreground="#FF3753A6" />
<LineBreak />
<LineBreak />
<Run Text="When you try to unlock or relock a phone with a non-supported OS version, then you will need to provide a donor-FFU with a supported OS-version. When unlocking or relocking the phone, modifications will be made to the phone, which may also cause the existing flashing-profile to become invalid. In this case Windown Phone Internals may need to search for a new flashing profile during any unlock- or relock-attempt." />
<LineBreak />
<LineBreak />
<Run Text="Support for single phone" FontWeight="Bold" Foreground="#FF3753A6" />
<LineBreak />
<LineBreak />
<Run Text="Windows Phone Internals supports only one single connected phone at a time. When multiple phones are connected, Windows Phone Internals can start showing unexpected and unstable behaviour." />
</local:Paragraph>
</FlowDocument>
</local:FlowDocumentScrollViewerNoMouseWheel>
</Border>
</StackPanel>
</UserControl>
+88
View File
@@ -0,0 +1,88 @@
// Copyright (c) 2018, Rene Lergner - wpinternals.net - @Heathcliff74xda
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the "Software"),
// to deal in the Software without restriction, including without limitation
// the rights to use, copy, modify, merge, publish, distribute, sublicense,
// and/or sell copies of the Software, and to permit persons to whom the
// Software is furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.
using System.Diagnostics;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
namespace WPinternals
{
/// <summary>
/// Interaction logic for GettingStartedView.xaml
/// </summary>
public partial class GettingStartedView : UserControl
{
public GettingStartedView()
{
InitializeComponent();
}
private void HandleHyperlinkClick(object sender, RoutedEventArgs args)
{
Hyperlink link = args.Source as Hyperlink;
if (link != null)
{
switch (link.NavigateUri.ToString())
{
case "Disclaimer":
(this.DataContext as GettingStartedViewModel).ShowDisclaimer();
break;
case "UnlockBoot":
(this.DataContext as GettingStartedViewModel).SwitchToUnlockBoot();
break;
case "UnlockRoot":
(this.DataContext as GettingStartedViewModel).SwitchToUnlockRoot();
break;
case "Backup":
(this.DataContext as GettingStartedViewModel).SwitchToBackup();
break;
case "Flash":
(this.DataContext as GettingStartedViewModel).SwitchToFlashRom();
break;
case "Dump":
(this.DataContext as GettingStartedViewModel).SwitchToDumpRom();
break;
case "Download":
(this.DataContext as GettingStartedViewModel).SwitchToDownload();
break;
default:
Process.Start(link.NavigateUri.AbsoluteUri);
break;
}
}
}
private void Document_Loaded(object sender, RoutedEventArgs e)
{
(sender as FlowDocument).AddHandler(Hyperlink.ClickEvent, new RoutedEventHandler(HandleHyperlinkClick));
}
private void TextBlock_Loaded(object sender, RoutedEventArgs e)
{
(sender as TextBlock).AddHandler(Hyperlink.ClickEvent, new RoutedEventHandler(HandleHyperlinkClick));
}
private void BulletDecorator_Loaded(object sender, RoutedEventArgs e)
{
(sender as System.Windows.Controls.Primitives.BulletDecorator).AddHandler(Hyperlink.ClickEvent, new RoutedEventHandler(HandleHyperlinkClick));
}
}
}
+240
View File
@@ -0,0 +1,240 @@
<!--
Copyright (c) 2018, Rene Lergner - wpinternals.net - @Heathcliff74xda
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the "Software"),
to deal in the Software without restriction, including without limitation
the rights to use, copy, modify, merge, publish, distribute, sublicense,
and/or sell copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.
-->
<UserControl x:Class="WPinternals.LumiaDownloadView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:WPinternals"
mc:Ignorable="d"
d:DesignWidth="700">
<UserControl.Resources>
<local:ObjectToVisibilityConverter x:Key="ObjectToVisibilityConverter" />
<local:DownloaderNameConvertor x:Key="DownloaderNameConvertor" />
<local:DownloaderSizeConvertor x:Key="DownloaderSizeConvertor" />
<local:DownloaderSpeedConvertor x:Key="DownloaderSpeedConvertor" />
<local:DownloaderTimeRemainingConvertor x:Key="DownloaderTimeRemainingConvertor" />
<Style x:Key="HeaderLeftAligned" TargetType="{x:Type GridViewColumnHeader}">
<Setter Property="HorizontalContentAlignment" Value="Left"></Setter>
<Setter Property="Padding" Value="6,0,0,0"></Setter>
</Style>
<Style x:Key="HeaderRightAligned" TargetType="{x:Type GridViewColumnHeader}">
<Setter Property="HorizontalContentAlignment" Value="Right"></Setter>
<Setter Property="Padding" Value="0,0,6,0"></Setter>
</Style>
<Style x:Key="ContentRightAligned" TargetType="ListViewItem">
<Setter Property="HorizontalContentAlignment" Value="Right" />
<Setter Property="Padding" Value="0,0,6,0" />
</Style>
</UserControl.Resources>
<StackPanel VerticalAlignment="Center">
<Border BorderThickness="1" BorderBrush="#FFD4D4D4" HorizontalAlignment="Stretch" VerticalAlignment="Center" Margin="0,0,0,20">
<StackPanel>
<local:FlowDocumentScrollViewerNoMouseWheel Grid.Column="1" Margin="20,0,20,0" VerticalScrollBarVisibility="Auto" >
<FlowDocument FontFamily="Segoe UI" FontSize="12" Loaded="Document_Loaded" TextAlignment="Left">
<FlowDocument.Resources>
<!-- This style is used to set the margins for all paragraphs in the FlowDocument to 0. -->
<Style TargetType="{x:Type Paragraph}">
<Setter Property="Margin" Value="0"/>
</Style>
<Style TargetType="{x:Type Section}">
<Setter Property="Margin" Value="0"/>
</Style>
</FlowDocument.Resources>
<local:Paragraph>
<Run Text="Download" FontSize="18" FontWeight="Bold" Foreground="#FF3753A6" />
<LineBreak />
<LineBreak />
<local:FolderPicker Caption="Download folder: " SelectionText="Select the destination location for the downloaded files..." Path="{Binding DownloadFolder, Mode=TwoWay}" AllowNull="False" HorizontalAlignment="Stretch" />
</local:Paragraph>
</FlowDocument>
</local:FlowDocumentScrollViewerNoMouseWheel>
<TextBlock Margin="36,0,36,6">Currently downloading:</TextBlock>
<ListView Grid.Row="1" ItemsSource="{Binding DownloadList}" Margin="36,0,36,24" MinHeight="66" ScrollViewer.HorizontalScrollBarVisibility="Disabled" ScrollViewer.VerticalScrollBarVisibility="Visible" local:GridViewColumnResize.Enabled="True" >
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
</Style>
</ListView.ItemContainerStyle>
<ListView.View>
<GridView>
<GridViewColumn local:GridViewColumnResize.Width="*" Header="Name" DisplayMemberBinding="{Binding Name}" HeaderContainerStyle="{StaticResource HeaderLeftAligned}" />
<GridViewColumn Width="80" Header="Size" HeaderContainerStyle="{StaticResource HeaderRightAligned}" >
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBlock Style="{x:Null}" Text="{Binding Size, Converter={StaticResource DownloaderSizeConvertor}}" TextAlignment="Right" />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Width="75" Header="Time Left" HeaderContainerStyle="{StaticResource HeaderRightAligned}" >
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBlock Style="{x:Null}" Text="{Binding TimeLeft,Mode=OneWay,Converter={StaticResource DownloaderTimeRemainingConvertor}}" TextAlignment="Right" />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Width="75" Header="Speed" HeaderContainerStyle="{StaticResource HeaderRightAligned}" >
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBlock Style="{x:Null}" Text="{Binding Speed, Mode=OneWay,Converter={StaticResource DownloaderSpeedConvertor}}" TextAlignment="Right" />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Width="123" Header="Progress">
<GridViewColumn.CellTemplate>
<DataTemplate>
<ProgressBar Value="{Binding Progress, Mode=OneWay}" Width="120" Height="16" Maximum="100"></ProgressBar>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
</StackPanel>
</Border>
<Border BorderThickness="1" BorderBrush="#FFD4D4D4" HorizontalAlignment="Stretch" VerticalAlignment="Center" Margin="0,0,0,20">
<StackPanel>
<local:FlowDocumentScrollViewerNoMouseWheel Grid.Column="1" Margin="20,0,20,0" VerticalScrollBarVisibility="Auto" >
<FlowDocument FontFamily="Segoe UI" FontSize="12" Loaded="Document_Loaded" TextAlignment="Left">
<FlowDocument.Resources>
<!-- This style is used to set the margins for all paragraphs in the FlowDocument to 0. -->
<Style TargetType="{x:Type Paragraph}">
<Setter Property="Margin" Value="0"/>
</Style>
<Style TargetType="{x:Type Section}">
<Setter Property="Margin" Value="0"/>
</Style>
</FlowDocument.Resources>
<local:Paragraph>
<Run Text="Model" FontSize="18" FontWeight="Bold" Foreground="#FF3753A6" />
<LineBreak/>
<LineBreak/>
<Run Text="When you choose &quot;Download all&quot;, Windows Phone Internals will download an FFU-file and emergency-files for your phone. When the FFU-file is downloaded, it will be analyzed. And if the OS-version is not a supported version, then Windows Phone Internals will start to download another FFU-file, which should have a supported OS-version. It will be for a different model, but Windows Phone Internals needs it extract some files from it." />
<LineBreak/>
<LineBreak/>
<Run Text="When you connect your phone, the search criteria will be detected automatically. For some older Lumia models this may not work when the phone is in Flash mode. To get the exact search criteria, you need to switch the phone to Normal mode first." />
<LineBreak/>
<LineBreak/>
<Run Text="In some cases the emergency files cannot be found and you will need to download the emergency files yourself. This " />
<Hyperlink NavigateUri="https://www.google.com/search?q=%22Lumia 650 emergency files%22">google search</Hyperlink>
<Run Text=" may yield some relevant results." />
<LineBreak/>
<LineBreak/>
<Run Text="For some older Lumia models the operatorcode search criterion doesn't work. Your search may not yield any results when use the Operatorcode search criterion. You should use the Productcode to find the files for your exact model." />
<LineBreak/>
</local:Paragraph>
</FlowDocument>
</local:FlowDocumentScrollViewerNoMouseWheel>
<Grid Margin="36,-6,36,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid Grid.Column="0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="100" />
<ColumnDefinition Width="120" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<TextBlock Grid.Column="0" Grid.Row="0">Producttype</TextBlock>
<TextBlock Grid.Column="0" Grid.Row="1">Productcode</TextBlock>
<TextBlock Grid.Column="0" Grid.Row="2">Operatorcode</TextBlock>
<TextBox Grid.Column="1" Grid.Row="0" Width="Auto" Margin="0,0,0,8" Text="{Binding ProductType, Mode=TwoWay}"/>
<TextBox Grid.Column="1" Grid.Row="1" Width="Auto" Margin="0,0,0,8" Text="{Binding ProductCode, Mode=TwoWay}"/>
<TextBox Grid.Column="1" Grid.Row="2" Width="Auto" Text="{Binding OperatorCode, Mode=TwoWay}"/>
</Grid>
<StackPanel Grid.Column="1" HorizontalAlignment="Right" VerticalAlignment="Bottom" Orientation="Horizontal">
<Button Content="Search" Padding="0,5" Width="120" Margin="0,0,20,0" Command="{Binding Path=SearchCommand, Mode=OneWay}" IsDefault="True"/>
<Button Content="Download all" Padding="0,5" Width="120" Command="{Binding Path=DownloadAllCommand, Mode=OneWay}" />
</StackPanel>
</Grid>
<TextBlock Margin="36,30,36,6">Search results:</TextBlock>
<ListView Grid.Row="1" Name="SearchResultsListView" ItemsSource="{Binding SearchResultList}" Margin="36,0,36,0" MinHeight="66" ScrollViewer.HorizontalScrollBarVisibility="Disabled" ScrollViewer.VerticalScrollBarVisibility="Visible" local:GridViewColumnResize.Enabled="True">
<ListView.ItemContainerStyle>
<Style TargetType="{x:Type ListBoxItem}">
<Setter Property="IsSelected" Value="{Binding IsSelected, Mode=TwoWay}" />
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
</Style>
</ListView.ItemContainerStyle>
<ListView.View>
<GridView>
<GridViewColumn local:GridViewColumnResize.Width="*" Header="Name" DisplayMemberBinding="{Binding Name}" HeaderContainerStyle="{StaticResource HeaderLeftAligned}" />
<GridViewColumn Width="80" Header="Size" HeaderContainerStyle="{StaticResource HeaderRightAligned}" >
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBlock Style="{x:Null}" Text="{Binding Size, Converter={StaticResource DownloaderSizeConvertor}}" TextAlignment="Right" />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
<StackPanel Orientation="Horizontal" Width="Auto" Height="Auto" HorizontalAlignment="Right" VerticalAlignment="Bottom" Margin="0,16,36,25">
<Button Command="{Binding Path=DownloadSelectedCommand, Mode=OneWay}" Content="Download selected" Width="Auto" Height="Auto" Padding="20,5" />
</StackPanel>
</StackPanel>
</Border>
<Border BorderThickness="1" BorderBrush="#FFD4D4D4" HorizontalAlignment="Stretch" VerticalAlignment="Center">
<StackPanel>
<local:FlowDocumentScrollViewerNoMouseWheel Grid.Column="1" Margin="20,0,20,0" VerticalScrollBarVisibility="Auto">
<FlowDocument FontFamily="Segoe UI" FontSize="12" Loaded="Document_Loaded" TextAlignment="Left">
<FlowDocument.Resources>
<!-- This style is used to set the margins for all paragraphs in the FlowDocument to 0. -->
<Style TargetType="{x:Type Paragraph}">
<Setter Property="Margin" Value="0"/>
</Style>
<Style TargetType="{x:Type Section}">
<Setter Property="Margin" Value="0"/>
</Style>
</FlowDocument.Resources>
<local:Paragraph>
<Run Text="Repository" FontSize="18" FontWeight="Bold" Foreground="#FF3753A6" />
</local:Paragraph>
</FlowDocument>
</local:FlowDocumentScrollViewerNoMouseWheel>
<local:FlowDocumentScrollViewerNoMouseWheel Grid.Column="1" Margin="20,-15,20,0" VerticalScrollBarVisibility="Auto" Visibility="{Binding Path=LastStatusText, Converter={StaticResource ObjectToVisibilityConverter}}">
<FlowDocument FontFamily="Segoe UI" FontSize="12" Loaded="Document_Loaded" TextAlignment="Left">
<FlowDocument.Resources>
<!-- This style is used to set the margins for all paragraphs in the FlowDocument to 0. -->
<Style TargetType="{x:Type Paragraph}">
<Setter Property="Margin" Value="0"/>
</Style>
<Style TargetType="{x:Type Section}">
<Setter Property="Margin" Value="0"/>
</Style>
</FlowDocument.Resources>
<local:Paragraph>
<Run Text="{Binding Path=LastStatusText}" />
</local:Paragraph>
</FlowDocument>
</local:FlowDocumentScrollViewerNoMouseWheel>
<Button Height="30" Width="Auto" Content="Add existing FFU-file..." Padding="20,5,20,5" HorizontalAlignment="Right" Margin="0,0,36,20" Command="{Binding Path=AddFFUCommand}"/>
</StackPanel>
</Border>
</StackPanel>
</UserControl>
+59
View File
@@ -0,0 +1,59 @@
// Copyright (c) 2018, Rene Lergner - wpinternals.net - @Heathcliff74xda
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the "Software"),
// to deal in the Software without restriction, including without limitation
// the rights to use, copy, modify, merge, publish, distribute, sublicense,
// and/or sell copies of the Software, and to permit persons to whom the
// Software is furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.
using System.Diagnostics;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
namespace WPinternals
{
/// <summary>
/// Interaction logic for LumiaDownloadView.xaml
/// </summary>
public partial class LumiaDownloadView : UserControl
{
public LumiaDownloadView()
{
InitializeComponent();
}
private void HandleHyperlinkClick(object sender, RoutedEventArgs args)
{
Hyperlink link = args.Source as Hyperlink;
if (link != null)
{
if (link.NavigateUri.ToString() == "UnlockBoot")
(this.DataContext as LumiaFlashRomSourceSelectionViewModel).SwitchToUnlockBoot();
else if (link.NavigateUri.ToString() == "UnlockRoot")
(this.DataContext as LumiaFlashRomSourceSelectionViewModel).SwitchToUnlockRoot();
else if (link.NavigateUri.ToString() == "Dump")
(this.DataContext as LumiaFlashRomSourceSelectionViewModel).SwitchToDumpFFU();
else
Process.Start(link.NavigateUri.AbsoluteUri);
}
}
private void Document_Loaded(object sender, RoutedEventArgs e)
{
(sender as FlowDocument).AddHandler(Hyperlink.ClickEvent, new RoutedEventHandler(HandleHyperlinkClick));
}
}
}
@@ -0,0 +1,73 @@
<!--
Copyright (c) 2018, Rene Lergner - wpinternals.net - @Heathcliff74xda
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the "Software"),
to deal in the Software without restriction, including without limitation
the rights to use, copy, modify, merge, publish, distribute, sublicense,
and/or sell copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.
-->
<UserControl x:Class="WPinternals.LumiaUndoRootTargetSelectionView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:WPinternals"
mc:Ignorable="d"
d:DesignWidth="700">
<UserControl.Resources>
<local:ObjectToVisibilityConverter x:Key="ObjectToVisibilityConverter" />
</UserControl.Resources>
<StackPanel VerticalAlignment="Center">
<Border BorderThickness="1" BorderBrush="#FFD4D4D4" HorizontalAlignment="Stretch" VerticalAlignment="Center" Margin="0,0,0,0">
<StackPanel>
<local:FlowDocumentScrollViewerNoMouseWheel Grid.Column="1" Margin="20,0,20,0" VerticalScrollBarVisibility="Auto" >
<FlowDocument FontFamily="Segoe UI" FontSize="12" Loaded="Document_Loaded" TextAlignment="Left">
<FlowDocument.Resources>
<!-- This style is used to set the margins for all paragraphs in the FlowDocument to 0. -->
<Style TargetType="{x:Type Paragraph}">
<Setter Property="Margin" Value="0"/>
</Style>
<Style TargetType="{x:Type Section}">
<Setter Property="Margin" Value="0"/>
</Style>
</FlowDocument.Resources>
<local:Paragraph>
<Run Text="Disable Root Access directly on phone" FontSize="18" FontWeight="Bold" Foreground="#FF3753A6" />
<LineBreak />
<LineBreak />
<Run Text="If you want to disable Root Access directly on the phone, Mass Storage mode must have been " />
<Hyperlink NavigateUri="UnlockBoot">unlocked</Hyperlink>
<Run Text=". Make sure you don't have any Windows Phone disks or partitions mounted before you continue to Mass Storage Mode." />
<LineBreak />
<LineBreak />
<Run Text="Warning: " FontWeight="Bold" Foreground="Red" />
<Run Text="If you flashed a Custom ROM with Root Access enabled, or if you performed a Hard Reset while Root Access was still enabled, then the phone may not boot properly anymore, after you disabled Root Access. In this case you should perform another Hard Reset to solve the problem. A Hard Reset will erase all Apps, Settings, Photo's and other data from the phone!" />
<LineBreak />
<LineBreak />
<local:CollapsibleRun Text="You have to connect your phone before you can continue." IsVisible="{Binding IsPhoneDisconnected, Mode=OneWay}"/>
<local:CollapsibleRun Text="When you continue, the phone will be switched to Mass Storage mode and then Root Access will be disabled." IsVisible="{Binding IsPhoneInOtherMode, Mode=OneWay}"/>
<local:CollapsibleRun Text="The phone is in Mass Storage mode. You can continue to disable Root Access." IsVisible="{Binding IsPhoneInMassStorage, Mode=OneWay}"/>
</local:Paragraph>
</FlowDocument>
</local:FlowDocumentScrollViewerNoMouseWheel>
<StackPanel Orientation="Horizontal" Width="Auto" Height="Auto" HorizontalAlignment="Right" VerticalAlignment="Bottom" Margin="0,10,40,25">
<Button Command="{Binding Path=UnlockPhoneCommand, Mode=OneWay}" Content="Disable Root Access" Width="120" Height="Auto" Padding="0,5" />
</StackPanel>
</StackPanel>
</Border>
</StackPanel>
</UserControl>
@@ -0,0 +1,52 @@
// Copyright (c) 2018, Rene Lergner - wpinternals.net - @Heathcliff74xda
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the "Software"),
// to deal in the Software without restriction, including without limitation
// the rights to use, copy, modify, merge, publish, distribute, sublicense,
// and/or sell copies of the Software, and to permit persons to whom the
// Software is furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
namespace WPinternals
{
/// <summary>
/// Interaction logic for LumiaUnlockRootTargetSelectionView.xaml
/// </summary>
public partial class LumiaUndoRootTargetSelectionView : UserControl
{
public LumiaUndoRootTargetSelectionView()
{
InitializeComponent();
}
private void HandleHyperlinkClick(object sender, RoutedEventArgs args)
{
Hyperlink link = args.Source as Hyperlink;
if (link != null)
{
if (link.NavigateUri.ToString() == "UnlockBoot")
((LumiaUndoRootTargetSelectionViewModel)DataContext).SwitchToUnlockBoot();
}
}
private void Document_Loaded(object sender, RoutedEventArgs e)
{
(sender as FlowDocument).AddHandler(Hyperlink.ClickEvent, new RoutedEventHandler(HandleHyperlinkClick));
}
}
}
@@ -0,0 +1,119 @@
<!--
Copyright (c) 2018, Rene Lergner - wpinternals.net - @Heathcliff74xda
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the "Software"),
to deal in the Software without restriction, including without limitation
the rights to use, copy, modify, merge, publish, distribute, sublicense,
and/or sell copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.
-->
<UserControl x:Class="WPinternals.LumiaUnlockRootTargetSelectionView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:WPinternals"
mc:Ignorable="d"
d:DesignWidth="700">
<UserControl.Resources>
<local:ObjectToVisibilityConverter x:Key="ObjectToVisibilityConverter" />
</UserControl.Resources>
<StackPanel VerticalAlignment="Center">
<Border BorderThickness="1" BorderBrush="#FFD4D4D4" HorizontalAlignment="Stretch" VerticalAlignment="Center" Margin="0,0,0,25">
<StackPanel>
<local:FlowDocumentScrollViewerNoMouseWheel Grid.Column="1" Margin="20,0,20,0" VerticalScrollBarVisibility="Auto" >
<FlowDocument FontFamily="Segoe UI" FontSize="12" Loaded="Document_Loaded" TextAlignment="Left">
<FlowDocument.Resources>
<!-- This style is used to set the margins for all paragraphs in the FlowDocument to 0. -->
<Style TargetType="{x:Type Paragraph}">
<Setter Property="Margin" Value="0"/>
</Style>
<Style TargetType="{x:Type Section}">
<Setter Property="Margin" Value="0"/>
</Style>
</FlowDocument.Resources>
<local:Paragraph>
<Run Text="Enable Root Access directly on phone" FontSize="18" FontWeight="Bold" Foreground="#FF3753A6" />
<LineBreak />
<LineBreak />
<Run Text="Before you can enable Root Access directly on the phone, you need to have Mass Storage mode " />
<Hyperlink NavigateUri="UnlockBoot">unlocked</Hyperlink>
<Run Text=" first. Make sure you don't have any Windows Phone disks or partitions mounted before you continue to Mass Storage Mode. Not all OS versions are supported. The OS version will verified after the phone is switched to Mass Storage mode." />
<LineBreak />
<LineBreak />
<local:CollapsibleRun Text="You have to connect your phone before you can continue." IsVisible="{Binding IsPhoneDisconnected, Mode=OneWay}"/>
<local:CollapsibleRun Text="When you continue, the phone will be switched to Mass Storage mode and then Root Access will be enabled." IsVisible="{Binding IsPhoneInOtherMode, Mode=OneWay}"/>
<local:CollapsibleRun Text="The phone is in Mass Storage mode. You can continue to enable Root Access." IsVisible="{Binding IsPhoneInMassStorage, Mode=OneWay}"/>
</local:Paragraph>
</FlowDocument>
</local:FlowDocumentScrollViewerNoMouseWheel>
<StackPanel Orientation="Horizontal" Width="Auto" Height="Auto" HorizontalAlignment="Right" VerticalAlignment="Bottom" Margin="0,10,40,25">
<Button Command="{Binding Path=UnlockPhoneCommand, Mode=OneWay}" Content="Unlock phone" Width="120" Height="Auto" Padding="0,5" />
</StackPanel>
</StackPanel>
</Border>
<Border BorderThickness="1" BorderBrush="#FFD4D4D4" HorizontalAlignment="Stretch" VerticalAlignment="Center">
<StackPanel>
<local:FlowDocumentScrollViewerNoMouseWheel Grid.Column="1" Margin="20,0,20,0" VerticalScrollBarVisibility="Auto" >
<FlowDocument FontFamily="Segoe UI" FontSize="12" Loaded="Document_Loaded" TextAlignment="Left">
<FlowDocument.Resources>
<!-- This style is used to set the margins for all paragraphs in the FlowDocument to 0. -->
<Style TargetType="{x:Type Paragraph}">
<Setter Property="Margin" Value="0"/>
</Style>
<Style TargetType="{x:Type Section}">
<Setter Property="Margin" Value="0"/>
</Style>
</FlowDocument.Resources>
<local:Paragraph>
<Run Text="Enable Root Access on ROM images" FontSize="18" FontWeight="Bold" Foreground="#FF3753A6" />
<LineBreak />
<LineBreak />
<Run Text="In some cases you may want to unlock a ROM image, instead of enabling Root Access directly on the phone. For example, if you were not able to unlock Mass Storage mode on the phone, or when you want to prepare a ROM image for later use."/>
<LineBreak />
<LineBreak />
<Run Text="If you can't use Mass Storage on the phone, you need to "/>
<Hyperlink NavigateUri="Dump">dump</Hyperlink>
<Run Text=" the EFIESP and MainOS partitions from an FFU file. Then you need to mount the partitions with a tool like " />
<Hyperlink NavigateUri="http://www.osforensics.com/tools/mount-disk-images.html">OSFMount</Hyperlink>
<Run Text=" and use the selection fields below to browse to the mounted partitions. After the images are unlocked you need to unmount them and then " />
<Hyperlink NavigateUri="Flash">flash</Hyperlink>
<Run Text=" the unlocked images to the phone. Unlocking the EFIESP partition is something you typically need to do only once. Note that the EFIESP partition contains model-specific data for your phone! So you need to make sure that you dump EFIESP partition from an FFU file that is meant specifically for your phone." />
<LineBreak />
<LineBreak />
<Run Text="WARNING: " Foreground="Red" FontWeight="Bold"/>
<Run Text="Due to the complexity of SecureBoot Hack v2, unlocking mounted ROM images is only possible for Lumia's with bootloader Spec A. For Lumia's with bootloader Spec B you can create Custom ROM's with Root Access using the &quot;Build and capture&quot; technique, as described on the " />
<Hyperlink NavigateUri="GettingStarted">Getting started</Hyperlink>
<Run Text=" page." />
<LineBreak />
<LineBreak />
<Run Text="Select the mount-points of the partitions you wish to unlock:" />
<LineBreak />
<LineBreak />
<local:FolderPicker Caption="EFIESP: " SelectionText="Select the drive where the EFIESP partition is mounted..." Path="{Binding EFIESPMountPoint, Mode=TwoWay}" AllowNull="True" HorizontalAlignment="Stretch" PathChanged="FolderPicker_PathChanged"/>
<LineBreak />
<LineBreak />
<local:FolderPicker Caption="MainOS: " SelectionText="Select the drive where the MainOS partition is mounted..." Path="{Binding MainOSMountPoint, Mode=TwoWay}" AllowNull="True" HorizontalAlignment="Stretch" PathChanged="FolderPicker_PathChanged"/>
</local:Paragraph>
</FlowDocument>
</local:FlowDocumentScrollViewerNoMouseWheel>
<StackPanel Orientation="Horizontal" Width="Auto" Height="Auto" HorizontalAlignment="Right" VerticalAlignment="Bottom" Margin="0,10,40,25">
<Button Command="{Binding Path=UnlockImageCommand, Mode=OneWay}" Content="Unlock images" Width="120" Height="Auto" Padding="0,5" />
</StackPanel>
</StackPanel>
</Border>
</StackPanel>
</UserControl>
@@ -0,0 +1,66 @@
// Copyright (c) 2018, Rene Lergner - wpinternals.net - @Heathcliff74xda
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the "Software"),
// to deal in the Software without restriction, including without limitation
// the rights to use, copy, modify, merge, publish, distribute, sublicense,
// and/or sell copies of the Software, and to permit persons to whom the
// Software is furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.
using System.Diagnostics;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
namespace WPinternals
{
/// <summary>
/// Interaction logic for LumiaUnlockRootTargetSelectionView.xaml
/// </summary>
public partial class LumiaUnlockRootTargetSelectionView : UserControl
{
public LumiaUnlockRootTargetSelectionView()
{
InitializeComponent();
}
private void HandleHyperlinkClick(object sender, RoutedEventArgs args)
{
Hyperlink link = args.Source as Hyperlink;
if (link != null)
{
if (link.NavigateUri.ToString() == "Dump")
((LumiaUnlockRootTargetSelectionViewModel)DataContext).SwitchToDumpRom();
else if (link.NavigateUri.ToString() == "Flash")
((LumiaUnlockRootTargetSelectionViewModel)DataContext).SwitchToFlashRom();
else if (link.NavigateUri.ToString() == "UnlockBoot")
((LumiaUnlockRootTargetSelectionViewModel)DataContext).SwitchToUnlockBoot();
else if (link.NavigateUri.ToString() == "GettingStarted")
App.NavigateToGettingStarted();
else
Process.Start(link.NavigateUri.ToString());
}
}
private void Document_Loaded(object sender, RoutedEventArgs e)
{
(sender as FlowDocument).AddHandler(Hyperlink.ClickEvent, new RoutedEventHandler(HandleHyperlinkClick));
}
private void FolderPicker_PathChanged(object sender, PathChangedEventArgs e)
{
((LumiaUnlockRootTargetSelectionViewModel)DataContext).EvaluateViewState();
}
}
}
+231
View File
@@ -0,0 +1,231 @@
<!--
Copyright (c) 2018, Rene Lergner - wpinternals.net - @Heathcliff74xda
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the "Software"),
to deal in the Software without restriction, including without limitation
the rights to use, copy, modify, merge, publish, distribute, sublicense,
and/or sell copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.
-->
<Window x:Class="WPinternals.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:WPinternals" Height="760" Width="1150" Icon="..\WPinternals.ico" Closed="Window_Closed">
<Window.Resources>
<DataTemplate DataType="{x:Type local:BootUnlockResourcesViewModel}">
<local:FlashResourcesView />
</DataTemplate>
<DataTemplate DataType="{x:Type local:BootRestoreResourcesViewModel}">
<local:BootRestoreResourcesView />
</DataTemplate>
<DataTemplate DataType="{x:Type local:NokiaNormalViewModel}">
<local:NokiaNormalView />
</DataTemplate>
<DataTemplate DataType="{x:Type local:NokiaFlashViewModel}">
<local:NokiaFlashView />
</DataTemplate>
<DataTemplate DataType="{x:Type local:NokiaLabelViewModel}">
<local:NokiaLabelView />
</DataTemplate>
<DataTemplate DataType="{x:Type local:AboutViewModel}">
<local:About />
</DataTemplate>
<DataTemplate DataType="{x:Type local:NotImplementedViewModel}">
<local:NotImplementedView />
</DataTemplate>
<DataTemplate DataType="{x:Type local:NokiaModeNormalViewModel}">
<local:NokiaModeNormalView />
</DataTemplate>
<DataTemplate DataType="{x:Type local:NokiaModeFlashViewModel}">
<local:NokiaModeFlashView />
</DataTemplate>
<DataTemplate DataType="{x:Type local:NokiaModeLabelViewModel}">
<local:NokiaModeLabelView />
</DataTemplate>
<DataTemplate DataType="{x:Type local:NokiaModeMassStorageViewModel}">
<local:NokiaModeMassStorageView />
</DataTemplate>
<DataTemplate DataType="{x:Type local:NokiaMassStorageViewModel}">
<local:NokiaMassStorageView />
</DataTemplate>
<DataTemplate DataType="{x:Type local:BusyViewModel}">
<local:BusyView />
</DataTemplate>
<DataTemplate DataType="{x:Type local:MessageViewModel}">
<local:MessageView />
</DataTemplate>
<DataTemplate DataType="{x:Type local:DisclaimerViewModel}">
<local:DisclaimerView />
</DataTemplate>
<DataTemplate DataType="{x:Type local:DisclaimerAndNdaViewModel}">
<local:DisclaimerAndNdaView />
</DataTemplate>
<DataTemplate DataType="{x:Type local:RegistrationViewModel}">
<local:RegistrationView />
</DataTemplate>
<DataTemplate DataType="{x:Type local:GettingStartedViewModel}">
<local:GettingStartedView />
</DataTemplate>
<DataTemplate DataType="{x:Type local:LumiaUnlockRootTargetSelectionViewModel}">
<local:LumiaUnlockRootTargetSelectionView />
</DataTemplate>
<DataTemplate DataType="{x:Type local:LumiaUndoRootTargetSelectionViewModel}">
<local:LumiaUndoRootTargetSelectionView />
</DataTemplate>
<DataTemplate DataType="{x:Type local:BackupTargetSelectionViewModel}">
<local:BackupView />
</DataTemplate>
<DataTemplate DataType="{x:Type local:RestoreSourceSelectionViewModel}">
<local:RestoreView />
</DataTemplate>
<DataTemplate DataType="{x:Type local:LumiaFlashRomSourceSelectionViewModel}">
<local:FlashRomView />
</DataTemplate>
<DataTemplate DataType="{x:Type local:DumpRomTargetSelectionViewModel}">
<local:DumpRomView />
</DataTemplate>
<DataTemplate DataType="{x:Type local:DownloadsViewModel}">
<local:LumiaDownloadView />
</DataTemplate>
<DataTemplate DataType="{x:Type local:ContextViewModel}">
<local:ContextView />
</DataTemplate>
<BitmapImage x:Key="LogoImageSource" UriSource="..\Logo.png" />
<BitmapImage x:Key="LogoSmallImageSource" UriSource="..\Logo-Small.png" />
<Style x:Key="MenuButtonStyle" BasedOn="{StaticResource {x:Static ToolBar.ButtonStyleKey}}" TargetType="{x:Type Button}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<Grid x:Name="Bd" Background="{TemplateBinding Background}" SnapsToDevicePixels="True">
<ContentPresenter ContentTemplate="{TemplateBinding ContentTemplate}" Content="{TemplateBinding Content}" ContentStringFormat="{TemplateBinding ContentStringFormat}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" TargetName="Bd" Value="#21FFFFFF"/>
</Trigger>
<Trigger Property="IsKeyboardFocused" Value="True">
<Setter Property="Background" TargetName="Bd" Value="#10FFFFFF"/>
</Trigger>
<Trigger Property="IsPressed" Value="True">
<Setter Property="Background" TargetName="Bd" Value="#40FFFFFF"/>
</Trigger>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Style x:Key="MenuButtonStyle_" TargetType="{x:Type Button}">
<Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/>
<Setter Property="Padding" Value="2"/>
<Setter Property="BorderThickness" Value="1"/>
<Setter Property="Background" Value="Transparent"/>
<Setter Property="BorderBrush" Value="Transparent"/>
<Setter Property="HorizontalAlignment" Value="Center"/>
<Setter Property="VerticalAlignment" Value="Center"/>
<Setter Property="HorizontalContentAlignment" Value="Center"/>
<Setter Property="VerticalContentAlignment" Value="Center"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<Border x:Name="Bd" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" Padding="{TemplateBinding Padding}" SnapsToDevicePixels="True">
<ContentPresenter ContentTemplate="{TemplateBinding ContentTemplate}" Content="{TemplateBinding Content}" ContentStringFormat="{TemplateBinding ContentStringFormat}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="BorderBrush" TargetName="Bd" Value="#80DADADA"/>
<Setter Property="Background" TargetName="Bd" Value="#210080FF"/>
</Trigger>
<Trigger Property="IsKeyboardFocused" Value="True">
<Setter Property="BorderBrush" TargetName="Bd" Value="#80DADADA"/>
<Setter Property="Background" TargetName="Bd" Value="#210080FF"/>
</Trigger>
<Trigger Property="IsPressed" Value="True">
<Setter Property="BorderBrush" TargetName="Bd" Value="#90006CD9"/>
<Setter Property="Background" TargetName="Bd" Value="#400080FF"/>
</Trigger>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Window.Resources>
<Grid>
<Grid.Background>
<LinearGradientBrush EndPoint="1.5,1.5" StartPoint="0.6,0.2" SpreadMethod="Reflect">
<GradientStop Color="#FF342F8D" Offset="0"/>
<GradientStop Color="#FFE8E7F0" Offset="1"/>
</LinearGradientBrush>
</Grid.Background>
<Grid HorizontalAlignment="Left" Height="100" VerticalAlignment="Top" Width="100"/>
<Border Margin="256,100,0,30" HorizontalAlignment="Stretch" CornerRadius="15,0,0,15" Background="White" Padding="0">
<ScrollViewer x:Name="MainContentScrollViewer" VerticalScrollBarVisibility="Auto" SizeChanged="ScrollViewer_SizeChanged">
<ContentControl x:Name="ChildFrame" Content="{Binding ContextViewModel}" HorizontalAlignment="Center" Width="700">
<ContentControl.Style>
<Style TargetType="{x:Type ContentControl}">
<Style.Triggers>
<DataTrigger Binding="{Binding Content, RelativeSource={x:Static RelativeSource.Self}}" Value="{x:Null}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<local:Empty/>
</ControlTemplate>
</Setter.Value>
</Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</ContentControl.Style>
</ContentControl>
</ScrollViewer>
</Border>
<StackPanel HorizontalAlignment="Right" Height="85" Margin="0,10,10,0" VerticalAlignment="Top" Orientation="Horizontal">
<Label Content="Windows Phone Internals" Width="657" Foreground="White" FontSize="56" HorizontalContentAlignment="Right"/>
<Image Source="{StaticResource LogoSmallImageSource}" SnapsToDevicePixels="True"/>
</StackPanel>
<StackPanel Name="Menu" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="10,120,0,0" Orientation="Vertical" IsEnabled="{Binding IsMenuEnabled}">
<Label FontSize="20" Height="40" Margin="0,6,0,0" Content="General" HorizontalAlignment="Left" VerticalAlignment="Top" Width="180" Foreground="White"/>
<Border Height="2" Margin="0,-6,0,6" BorderBrush="#FFA0A0E2" BorderThickness="1" HorizontalAlignment="Left" VerticalAlignment="Top" Width="219"/>
<Button FontSize="16" Height="24" Margin="21,0,0,0" Content="Getting started" HorizontalAlignment="Left" VerticalAlignment="Top" Width="198" Background="{x:Null}" BorderBrush="{x:Null}" Foreground="White" BorderThickness="0" HorizontalContentAlignment="Stretch" Padding="0" VerticalContentAlignment="Top" Command="{Binding GettingStartedCommand}" Style="{DynamicResource MenuButtonStyle}"/>
<Label FontSize="20" Height="40" Margin="0,6,0,0" Content="Phone" HorizontalAlignment="Left" VerticalAlignment="Top" Width="180" Foreground="White"/>
<Border BorderBrush="#FFA0A0E2" BorderThickness="1" HorizontalAlignment="Left" Height="2" Margin="0,-6,0,6" VerticalAlignment="Top" Width="219"/>
<Button FontSize="16" Height="24" Margin="21,0,0,0" Content="Info" HorizontalAlignment="Left" VerticalAlignment="Top" Width="198" Background="{x:Null}" BorderBrush="{x:Null}" Foreground="White" BorderThickness="0" HorizontalContentAlignment="Stretch" Padding="0" VerticalContentAlignment="Top" Command="{Binding InfoCommand}" Style="{DynamicResource MenuButtonStyle}"/>
<Button FontSize="16" Height="24" Margin="21,0,0,0" Content="Manual mode" HorizontalAlignment="Left" VerticalAlignment="Top" Width="198" Background="{x:Null}" BorderBrush="{x:Null}" Foreground="White" BorderThickness="0" HorizontalContentAlignment="Stretch" Padding="0" VerticalContentAlignment="Top" Command="{Binding ModeCommand}" Style="{DynamicResource MenuButtonStyle}"/>
<Label FontSize="20" Height="40" Margin="0,6,0,0" Content="Unlock" HorizontalAlignment="Left" VerticalAlignment="Top" Width="180" Foreground="White"/>
<Border BorderBrush="#FFA0A0E2" BorderThickness="1" HorizontalAlignment="Left" Height="2" Margin="0,-6,0,6" VerticalAlignment="Top" Width="219"/>
<Button FontSize="16" Height="24" Margin="21,0,0,0" Content="Unlock bootloader" HorizontalAlignment="Left" VerticalAlignment="Top" Width="198" Background="{x:Null}" BorderBrush="{x:Null}" Foreground="White" BorderThickness="0" HorizontalContentAlignment="Stretch" Padding="0" VerticalContentAlignment="Top" Command="{Binding BootUnlockCommand}" Style="{DynamicResource MenuButtonStyle}"/>
<Button FontSize="16" Height="24" Margin="21,0,0,0" Content="Restore bootloader" HorizontalAlignment="Left" VerticalAlignment="Top" Width="198" Background="{x:Null}" BorderBrush="{x:Null}" Foreground="White" BorderThickness="0" HorizontalContentAlignment="Stretch" Padding="0" VerticalContentAlignment="Top" Command="{Binding BootRestoreCommand}" Style="{DynamicResource MenuButtonStyle}"/>
<Button FontSize="16" Height="24" Margin="21,0,0,0" Content="Enable root access" HorizontalAlignment="Left" VerticalAlignment="Top" Width="198" Background="{x:Null}" BorderBrush="{x:Null}" Foreground="White" BorderThickness="0" HorizontalContentAlignment="Stretch" Padding="0" VerticalContentAlignment="Top" Command="{Binding RootUnlockCommand}" Style="{DynamicResource MenuButtonStyle}"/>
<Button FontSize="16" Height="24" Margin="21,0,0,0" Content="Disable root access" HorizontalAlignment="Left" VerticalAlignment="Top" Width="198" Background="{x:Null}" BorderBrush="{x:Null}" Foreground="White" BorderThickness="0" HorizontalContentAlignment="Stretch" Padding="0" VerticalContentAlignment="Top" Command="{Binding RootUndoCommand}" Style="{DynamicResource MenuButtonStyle}"/>
<Label FontSize="20" Height="40" Margin="0,6,0,0" Content="Platform" HorizontalAlignment="Left" VerticalAlignment="Top" Width="180" Foreground="White"/>
<Border BorderBrush="#FFA0A0E2" BorderThickness="1" HorizontalAlignment="Left" Height="2" Margin="0,-6,0,6" VerticalAlignment="Top" Width="219"/>
<Button FontSize="16" Height="24" Margin="21,0,0,0" Content="Backup" HorizontalAlignment="Left" VerticalAlignment="Top" Width="198" Background="{x:Null}" BorderBrush="{x:Null}" Foreground="White" BorderThickness="0" HorizontalContentAlignment="Stretch" Padding="0" VerticalContentAlignment="Top" Command="{Binding BackupCommand}" Style="{DynamicResource MenuButtonStyle}"/>
<Button FontSize="16" Height="24" Margin="21,0,0,0" Content="Flash" HorizontalAlignment="Left" VerticalAlignment="Top" Width="198" Background="{x:Null}" BorderBrush="{x:Null}" Foreground="White" BorderThickness="0" HorizontalContentAlignment="Stretch" Padding="0" VerticalContentAlignment="Top" Command="{Binding LumiaFlashRomCommand}" Style="{DynamicResource MenuButtonStyle}"/>
<Button FontSize="16" Height="24" Margin="21,0,0,0" Content="Dump" HorizontalAlignment="Left" VerticalAlignment="Top" Width="198" Background="{x:Null}" BorderBrush="{x:Null}" Foreground="White" BorderThickness="0" HorizontalContentAlignment="Stretch" Padding="0" VerticalContentAlignment="Top" Command="{Binding DumpRomCommand}" Style="{DynamicResource MenuButtonStyle}"/>
<Button FontSize="16" Height="24" Margin="21,0,0,0" Content="Download" HorizontalAlignment="Left" VerticalAlignment="Top" Width="198" Background="{x:Null}" BorderBrush="{x:Null}" Foreground="White" BorderThickness="0" HorizontalContentAlignment="Stretch" Padding="0" VerticalContentAlignment="Top" Command="{Binding DownloadCommand}" Style="{DynamicResource MenuButtonStyle}"/>
<Label FontSize="20" Height="40" Margin="0,6,0,0" Content="Help" HorizontalAlignment="Left" VerticalAlignment="Top" Width="180" Foreground="White"/>
<Border BorderBrush="#FFA0A0E2" BorderThickness="1" HorizontalAlignment="Left" Height="2" Margin="0,-6,0,6" VerticalAlignment="Top" Width="219"/>
<Button FontSize="16" Height="24" Margin="21,0,0,0" Content="About" HorizontalAlignment="Left" VerticalAlignment="Top" Width="198" Background="{x:Null}" BorderBrush="{x:Null}" Foreground="White" BorderThickness="0" HorizontalContentAlignment="Stretch" Padding="0" VerticalContentAlignment="Top" Command="{Binding AboutCommand}" Style="{DynamicResource MenuButtonStyle}"/>
<Button FontSize="16" Height="24" Margin="21,0,0,0" Content="Donate" HorizontalAlignment="Left" VerticalAlignment="Top" Width="198" Background="{x:Null}" BorderBrush="{x:Null}" Foreground="White" BorderThickness="0" HorizontalContentAlignment="Stretch" Padding="0" VerticalContentAlignment="Top" Command="{Binding DonateCommand}" Style="{DynamicResource MenuButtonStyle}"/>
<Button FontSize="16" Height="24" Margin="21,0,0,0" Content="www.wpinternals.net" HorizontalAlignment="Left" VerticalAlignment="Top" Width="198" Background="{x:Null}" BorderBrush="{x:Null}" Foreground="White" BorderThickness="0" HorizontalContentAlignment="Stretch" Padding="0" VerticalContentAlignment="Top" Command="{Binding OpenWebSiteCommand}" Style="{DynamicResource MenuButtonStyle}"/>
</StackPanel>
</Grid>
</Window>
+76
View File
@@ -0,0 +1,76 @@
// Copyright (c) 2018, Rene Lergner - wpinternals.net - @Heathcliff74xda
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the "Software"),
// to deal in the Software without restriction, including without limitation
// the rights to use, copy, modify, merge, publish, distribute, sublicense,
// and/or sell copies of the Software, and to permit persons to whom the
// Software is furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.
using System;
using System.Windows;
namespace WPinternals
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
Visibility = System.Windows.Visibility.Collapsed;
}
protected override void OnSourceInitialized(EventArgs e)
{
base.OnSourceInitialized(e);
DataContext = new MainViewModel();
((MainViewModel)DataContext).PropertyChanged += MainViewModel_PropertyChanged;
}
private void MainViewModel_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
{
if (e.PropertyName == "ContextViewModel")
MainContentScrollViewer.ScrollToTop();
}
private void ScrollViewer_SizeChanged(object sender, SizeChangedEventArgs e)
{
const int MinChildWidth = 500;
const int MaxChildWidth = 700;
const int MarginTarget = 100;
if (e.WidthChanged)
{
if (e.NewSize.Width >= (MaxChildWidth + (2 * MarginTarget)))
ChildFrame.Width = MaxChildWidth;
else if ((e.NewSize.Width - (2 * MarginTarget)) < MinChildWidth)
ChildFrame.Width = MinChildWidth;
else
ChildFrame.Width = e.NewSize.Width - (2 * MarginTarget);
}
ChildFrame.Margin = new Thickness(0, 20, 0, 20);
}
private void Window_Closed(object sender, EventArgs e)
{
if ((Application.Current.MainWindow != this) && (Application.Current.MainWindow != null))
Application.Current.MainWindow.Close(); // This one holds the hWnd for handling USB events and it must be closed too.
}
}
}
+48
View File
@@ -0,0 +1,48 @@
<!--
Copyright (c) 2018, Rene Lergner - wpinternals.net - @Heathcliff74xda
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the "Software"),
to deal in the Software without restriction, including without limitation
the rights to use, copy, modify, merge, publish, distribute, sublicense,
and/or sell copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.
-->
<UserControl x:Class="WPinternals.MessageView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:WPinternals"
mc:Ignorable="d"
d:DesignWidth="700">
<UserControl.Resources>
<local:ObjectToVisibilityConverter x:Key="ObjectToVisibilityConverter" />
</UserControl.Resources>
<Border BorderThickness="1" BorderBrush="#FFD4D4D4" HorizontalAlignment="Stretch" VerticalAlignment="Center">
<StackPanel Orientation="Vertical" Margin="50,25,50,25">
<TextBlock Text="{Binding Message}" FontSize="20" TextWrapping="WrapWithOverflow" />
<TextBlock TextAlignment="Left" Text="{Binding SubMessage}" Visibility="{Binding Path=SubMessage, Converter={StaticResource ObjectToVisibilityConverter}}" Margin="0,10,0,0" TextWrapping="WrapWithOverflow" >
<TextBlock.Foreground>
<SolidColorBrush Color="{DynamicResource {x:Static SystemColors.ControlDarkDarkColorKey}}"/>
</TextBlock.Foreground>
</TextBlock>
<StackPanel Orientation="Horizontal" Width="Auto" Height="Auto" HorizontalAlignment="Right" VerticalAlignment="Bottom" Margin="0,20,0,0">
<Button Command="{Binding Path=OkCommand, Mode=OneWay}" Content="OK" Width="100" Height="Auto" Padding="0,5" Visibility="{Binding Path=OkCommand, Converter={StaticResource ObjectToVisibilityConverter}}"/>
<Button Command="{Binding Path=CancelCommand, Mode=OneWay}" Content="Cancel" Width="100" Height="Auto" Padding="0,5" Margin="20,0,0,0" Visibility="{Binding Path=CancelCommand, Converter={StaticResource ObjectToVisibilityConverter}}"/>
</StackPanel>
</StackPanel>
</Border>
</UserControl>
+35
View File
@@ -0,0 +1,35 @@
// Copyright (c) 2018, Rene Lergner - wpinternals.net - @Heathcliff74xda
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the "Software"),
// to deal in the Software without restriction, including without limitation
// the rights to use, copy, modify, merge, publish, distribute, sublicense,
// and/or sell copies of the Software, and to permit persons to whom the
// Software is furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.
using System.Windows.Controls;
namespace WPinternals
{
/// <summary>
/// Interaction logic for MessageView.xaml
/// </summary>
public partial class MessageView : UserControl
{
public MessageView()
{
InitializeComponent();
}
}
}
+227
View File
@@ -0,0 +1,227 @@
<!--
Copyright (c) 2018, Rene Lergner - wpinternals.net - @Heathcliff74xda
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the "Software"),
to deal in the Software without restriction, including without limitation
the rights to use, copy, modify, merge, publish, distribute, sublicense,
and/or sell copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.
-->
<UserControl x:Class="WPinternals.NokiaFlashView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:WPinternals"
mc:Ignorable="d"
d:DesignWidth="700">
<UserControl.Resources>
<local:HexConverter x:Key="HexConverter" />
<local:BooleanConverter x:Key="VisibilityConverter" OnTrue="Visible" OnFalse="Collapsed" OnNull="Collapsed"/>
<local:BooleanConverter x:Key="InverseVisibilityConverter" OnTrue="Collapsed" OnFalse="Visible" OnNull="Collapsed" />
<local:ObjectToVisibilityConverter x:Key="ObjectToVisibilityConverter" />
</UserControl.Resources>
<StackPanel>
<Border BorderThickness="1" BorderBrush="#FFD4D4D4" HorizontalAlignment="Stretch" VerticalAlignment="Center" Padding="25" Margin="0,0,0,20">
<StackPanel Orientation="Vertical">
<local:FlowDocumentScrollViewerNoMouseWheel Grid.Column="1" Margin="20,0" VerticalScrollBarVisibility="Auto">
<FlowDocument FontFamily="Segoe UI" FontSize="12" Loaded="Document_Loaded" PagePadding="1">
<local:Paragraph>
<Run Text="General info" FontSize="18" FontWeight="Bold" Foreground="#FF3753A6" />
<LineBreak />
<LineBreak />
<Grid IsHitTestVisible="False">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="200" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
<RowDefinition Height="*"/>
<RowDefinition Height="*"/>
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<TextBlock Grid.Row="0" Grid.Column="0" Text="Platform name" />
<TextBlock Grid.Row="0" Grid.Column="1" FontWeight="Bold" Foreground="#FF3753A6" TextWrapping="Wrap" Text="{Binding PlatformName, Mode=OneWay}" />
<TextBlock Grid.Row="1" Grid.Column="0" Text="Operating mode" />
<TextBlock Grid.Row="1" Grid.Column="1" Text="Flash" FontWeight="Bold" Foreground="#FF3753A6" TextWrapping="Wrap" />
<TextBlock Grid.Row="2" Grid.Column="0" Text="Product Type" Visibility="{Binding Path=ProductType, Converter={StaticResource ObjectToVisibilityConverter}}"/>
<TextBlock Grid.Row="2" Grid.Column="1" FontWeight="Bold" Foreground="#FF3753A6" TextWrapping="Wrap" Text="{Binding ProductType}" Visibility="{Binding Path=ProductType, Converter={StaticResource ObjectToVisibilityConverter}}"/>
<TextBlock Grid.Row="3" Grid.Column="0" Text="Product Code" Visibility="{Binding Path=ProductCode, Converter={StaticResource ObjectToVisibilityConverter}}"/>
<TextBlock Grid.Row="3" Grid.Column="1" FontWeight="Bold" Foreground="#FF3753A6" TextWrapping="Wrap" Text="{Binding ProductCode}" Visibility="{Binding Path=ProductCode, Converter={StaticResource ObjectToVisibilityConverter}}"/>
<TextBlock Grid.Row="4" Grid.Column="0" Text="Storage" />
<TextBlock Grid.Row="4" Grid.Column="1" FontWeight="Bold" Foreground="#FF3753A6" TextWrapping="Wrap" Text="{Binding eMMC}"/>
<TextBlock Grid.Row="5" Grid.Column="0" Text="Bootloader" />
<TextBlock Grid.Row="5" Grid.Column="1" FontWeight="Bold" Foreground="#FF3753A6" TextWrapping="Wrap" Text="{Binding BootloaderDescription}"/>
</Grid>
</local:Paragraph>
</FlowDocument>
</local:FlowDocumentScrollViewerNoMouseWheel>
<local:FlowDocumentScrollViewerNoMouseWheel Grid.Column="1" Margin="20,0" VerticalScrollBarVisibility="Auto" Visibility="{Binding Path=SamsungWarningVisible, Converter={StaticResource VisibilityConverter}}">
<FlowDocument FontFamily="Segoe UI" FontSize="12" Loaded="Document_Loaded" PagePadding="1">
<local:Paragraph>
<LineBreak />
<local:CollapsibleRun Text="Read the " IsVisible="{Binding SamsungWarningVisible}" />
<Hyperlink NavigateUri="GettingStarted">Getting started</Hyperlink>
<Run Text=" section for important information about Samsung eMMC." />
</local:Paragraph>
</FlowDocument>
</local:FlowDocumentScrollViewerNoMouseWheel>
<local:FlowDocumentScrollViewerNoMouseWheel Grid.Column="1" Margin="20,0" VerticalScrollBarVisibility="Auto">
<FlowDocument FontFamily="Segoe UI" FontSize="12" Loaded="Document_Loaded" PagePadding="1">
<local:Paragraph>
<LineBreak />
<Run Text="To let the phone go back to Windows, boot to " />
<Hyperlink NavigateUri="Normal">Normal</Hyperlink>
<Run Text=" mode." />
</local:Paragraph>
</FlowDocument>
</local:FlowDocumentScrollViewerNoMouseWheel>
</StackPanel>
</Border>
<Border BorderThickness="1" BorderBrush="#FFD4D4D4" HorizontalAlignment="Stretch" VerticalAlignment="Center" Padding="25" Margin="0,0,0,20">
<Expander Header="Phone identity" HorizontalContentAlignment="Stretch" Template="{DynamicResource TopicExpanderTemplate}" Margin="20,0">
<local:FlowDocumentScrollViewerNoMouseWheel Grid.Column="1" VerticalScrollBarVisibility="Auto" >
<FlowDocument x:Name="Document" FontFamily="Segoe UI" FontSize="12" Loaded="Document_Loaded" PagePadding="1">
<local:Paragraph>
<LineBreak />
<Grid IsHitTestVisible="False">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="200" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<TextBlock Grid.Row="0" Grid.Column="0" Text="Root Key Hash" />
<TextBlock Grid.Row="0" Grid.Column="1" Text="{Binding Path=RootKeyHash, Converter={StaticResource HexConverter}, Mode=OneWay}" TextWrapping="Wrap" />
<TextBlock Grid.Row="1" Grid.Column="0" Text="Public Phone ID" />
<TextBlock Grid.Row="1" Grid.Column="1" Text="{Binding Path=PublicID, Converter={StaticResource HexConverter}, Mode=OneWay}" TextWrapping="Wrap" />
</Grid>
</local:Paragraph>
</FlowDocument>
</local:FlowDocumentScrollViewerNoMouseWheel>
</Expander>
</Border>
<Border BorderThickness="1" BorderBrush="#FFD4D4D4" HorizontalAlignment="Stretch" VerticalAlignment="Center" Padding="25" Margin="0,0,0,20" >
<local:FlowDocumentScrollViewerNoMouseWheel Grid.Column="1" Margin="20,0" VerticalScrollBarVisibility="Auto" >
<FlowDocument FontFamily="Segoe UI" FontSize="12" Loaded="Document_Loaded" PagePadding="1">
<local:Paragraph TextAlignment="Left">
<Run Text="Bootloader Security" FontSize="18" FontWeight="Bold" Foreground="#FF3753A6" />
<LineBreak />
<LineBreak />
<Run Text="If either one of these flags is green, the effective bootloader security will be disabled. When bootloader security is disabled, the phone allows unsecure actions, like entering Mass Storage mode and flashing unsigned ROM images. Phones with Bootloader Spec B can flash custom ROM's even when the bootloader security is enabled." />
<LineBreak />
<LineBreak />
<Grid IsHitTestVisible="False">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="200" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
<RowDefinition />
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<TextBlock Grid.Row="0" Grid.Column="0" Text="QFuse" />
<TextBlock Grid.Row="0" Grid.Column="1" Text="Not blown" FontWeight="Bold" Foreground="#FF40C133" TextWrapping="Wrap" Visibility="{Binding Path=BootloaderSecurityQfuseStatus, Converter={StaticResource InverseVisibilityConverter}}" />
<TextBlock Grid.Row="0" Grid.Column="1" Text="Blown" FontWeight="Bold" Foreground="#FFAC3631" TextWrapping="Wrap" Visibility="{Binding Path=BootloaderSecurityQfuseStatus, Converter={StaticResource VisibilityConverter}}"/>
<TextBlock Grid.Row="1" Grid.Column="0" Text="Valid RDC certificate" />
<TextBlock Grid.Row="1" Grid.Column="1" Text="Present" FontWeight="Bold" Foreground="#FF40C133" TextWrapping="Wrap" Visibility="{Binding Path=BootloaderSecurityRdcStatus, Converter={StaticResource VisibilityConverter}}" />
<TextBlock Grid.Row="1" Grid.Column="1" Text="Not present" FontWeight="Bold" Foreground="#FFAC3631" TextWrapping="Wrap" Visibility="{Binding Path=BootloaderSecurityRdcStatus, Converter={StaticResource InverseVisibilityConverter}}"/>
<TextBlock Grid.Row="2" Grid.Column="0" Text="Super dongle" />
<TextBlock Grid.Row="2" Grid.Column="1" Text="Authenticated" FontWeight="Bold" Foreground="#FF40C133" TextWrapping="Wrap" Visibility="{Binding Path=BootloaderSecurityAuthenticationStatus, Converter={StaticResource VisibilityConverter}}" />
<TextBlock Grid.Row="2" Grid.Column="1" Text="Not authenticated" FontWeight="Bold" Foreground="#FFAC3631" TextWrapping="Wrap" Visibility="{Binding Path=BootloaderSecurityAuthenticationStatus, Converter={StaticResource InverseVisibilityConverter}}"/>
<TextBlock Grid.Row="3" Grid.Column="0" Text="" />
<TextBlock Grid.Row="4" Grid.Column="0" Text="Effective bootloader security" />
<TextBlock Grid.Row="4" Grid.Column="1" Text="Disabled" FontWeight="Bold" Foreground="#FF40C133" TextWrapping="Wrap" Visibility="{Binding Path=EffectiveBootloaderSecurityStatus, Converter={StaticResource InverseVisibilityConverter}}" />
<TextBlock Grid.Row="4" Grid.Column="1" Text="Enabled" FontWeight="Bold" Foreground="#FFAC3631" TextWrapping="Wrap" Visibility="{Binding Path=EffectiveBootloaderSecurityStatus, Converter={StaticResource VisibilityConverter}}"/>
</Grid>
</local:Paragraph>
</FlowDocument>
</local:FlowDocumentScrollViewerNoMouseWheel>
</Border>
<Border BorderThickness="1" BorderBrush="#FFD4D4D4" HorizontalAlignment="Stretch" VerticalAlignment="Center" Padding="25" Margin="0,0,0,20" >
<local:FlowDocumentScrollViewerNoMouseWheel Grid.Column="1" Margin="20,0" VerticalScrollBarVisibility="Auto" >
<FlowDocument FontFamily="Segoe UI" FontSize="12" Loaded="Document_Loaded" PagePadding="1">
<local:Paragraph TextAlignment="Left">
<Run Text="Secure Boot technology" FontSize="18" FontWeight="Bold" Foreground="#FF3753A6" />
<LineBreak />
<LineBreak />
<Run Text="&quot;Secure Boot&quot; is part of the &quot;chain of trust&quot; in the boot process. This technology verifies the integrity of the primary Operating System binaries. If either one of these flags is green, Secure Boot is disabled and primary Operating System binaries can be replaced with custom or patched binaries. The Windows Phone Operation System also has its own integrity verifications, which still remain active. These flags only affect the security of the boot process before the Operating System is loaded." />
<LineBreak />
<LineBreak />
<Grid IsHitTestVisible="False">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="200" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<TextBlock Grid.Row="0" Grid.Column="0" Text="UEFI" />
<TextBlock Grid.Row="0" Grid.Column="1" Text="Not blown" FontWeight="Bold" Foreground="#FF40C133" TextWrapping="Wrap" Visibility="{Binding Path=UefiSecureBootStatus, Converter={StaticResource InverseVisibilityConverter}}" />
<TextBlock Grid.Row="0" Grid.Column="1" Text="Blown" FontWeight="Bold" Foreground="#FFAC3631" TextWrapping="Wrap" Visibility="{Binding Path=UefiSecureBootStatus, Converter={StaticResource VisibilityConverter}}"/>
<TextBlock Grid.Row="1" Grid.Column="0" Text="Secure Boot platform" />
<TextBlock Grid.Row="1" Grid.Column="1" Text="Disabled" FontWeight="Bold" Foreground="#FF40C133" TextWrapping="Wrap" Visibility="{Binding Path=PlatformSecureBootStatus, Converter={StaticResource InverseVisibilityConverter}}" />
<TextBlock Grid.Row="1" Grid.Column="1" Text="Enabled" FontWeight="Bold" Foreground="#FFAC3631" TextWrapping="Wrap" Visibility="{Binding Path=PlatformSecureBootStatus, Converter={StaticResource VisibilityConverter}}"/>
<TextBlock Grid.Row="2" Grid.Column="0" Text="" />
<TextBlock Grid.Row="3" Grid.Column="0" Text="Effective Secure Boot status" />
<TextBlock Grid.Row="3" Grid.Column="1" Text="Disabled" FontWeight="Bold" Foreground="#FF40C133" TextWrapping="Wrap" Visibility="{Binding Path=EffectiveSecureBootStatus, Converter={StaticResource InverseVisibilityConverter}}" />
<TextBlock Grid.Row="3" Grid.Column="1" Text="Enabled" FontWeight="Bold" Foreground="#FFAC3631" TextWrapping="Wrap" Visibility="{Binding Path=EffectiveSecureBootStatus, Converter={StaticResource VisibilityConverter}}"/>
</Grid>
</local:Paragraph>
</FlowDocument>
</local:FlowDocumentScrollViewerNoMouseWheel>
</Border>
<Border BorderThickness="1" BorderBrush="#FFD4D4D4" HorizontalAlignment="Stretch" VerticalAlignment="Center" Padding="25" >
<local:FlowDocumentScrollViewerNoMouseWheel Grid.Column="1" Margin="20,0" VerticalScrollBarVisibility="Auto" >
<FlowDocument FontFamily="Segoe UI" FontSize="12" Loaded="Document_Loaded" PagePadding="1">
<local:Paragraph TextAlignment="Left">
<Run Text="Hardware debugging" FontSize="18" FontWeight="Bold" Foreground="#FF3753A6" />
<LineBreak />
<LineBreak />
<Run Text="Hardware debugging, also known as JTAG, is disabled on most retail phones. There is technology available that allows JTAG on some platforms, even when it is disabled on the phone. More info about that here: " />
<Hyperlink NavigateUri="http://www.advance-box.com/">www.advance-box.com</Hyperlink>
<Run Text="." />
<LineBreak />
<LineBreak />
<Grid IsHitTestVisible="False">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="200" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition />
</Grid.RowDefinitions>
<TextBlock Grid.Row="0" Grid.Column="0" Text="Native JTAG debugging" />
<TextBlock Grid.Row="0" Grid.Column="1" Text="Disabled" FontWeight="Bold" Foreground="#FFAC3631" TextWrapping="Wrap" Visibility="{Binding Path=NativeDebugStatus, Converter={StaticResource InverseVisibilityConverter}}" />
<TextBlock Grid.Row="0" Grid.Column="1" Text="Enabled" FontWeight="Bold" Foreground="#FF40C133" TextWrapping="Wrap" Visibility="{Binding Path=NativeDebugStatus, Converter={StaticResource VisibilityConverter}}"/>
</Grid>
</local:Paragraph>
</FlowDocument>
</local:FlowDocumentScrollViewerNoMouseWheel>
</Border>
</StackPanel>
</UserControl>
+54
View File
@@ -0,0 +1,54 @@
// Copyright (c) 2018, Rene Lergner - wpinternals.net - @Heathcliff74xda
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the "Software"),
// to deal in the Software without restriction, including without limitation
// the rights to use, copy, modify, merge, publish, distribute, sublicense,
// and/or sell copies of the Software, and to permit persons to whom the
// Software is furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
namespace WPinternals
{
/// <summary>
/// Interaction logic for NokiaFlashView.xaml
/// </summary>
public partial class NokiaFlashView : UserControl
{
public NokiaFlashView()
{
InitializeComponent();
}
private void HandleHyperlinkClick(object sender, RoutedEventArgs args)
{
Hyperlink link = args.Source as Hyperlink;
if ((link != null) && (link.NavigateUri != null))
{
if (link.NavigateUri.ToString() == "GettingStarted")
(this.DataContext as NokiaFlashViewModel).SwitchToGettingStarted();
(this.DataContext as NokiaFlashViewModel).RebootTo(link.NavigateUri.ToString());
}
}
private void Document_Loaded(object sender, RoutedEventArgs e)
{
(sender as FlowDocument).AddHandler(Hyperlink.ClickEvent, new RoutedEventHandler(HandleHyperlinkClick));
}
}
}
+110
View File
@@ -0,0 +1,110 @@
<!--
Copyright (c) 2018, Rene Lergner - wpinternals.net - @Heathcliff74xda
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the "Software"),
to deal in the Software without restriction, including without limitation
the rights to use, copy, modify, merge, publish, distribute, sublicense,
and/or sell copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.
-->
<UserControl x:Class="WPinternals.NokiaLabelView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:WPinternals"
mc:Ignorable="d"
d:DesignWidth="700">
<UserControl.Resources>
<local:HexConverter x:Key="MACConverter" Separator=":" />
<local:HexConverter x:Key="HexConverter" />
<local:BooleanConverter x:Key="VisibilityConverter" OnTrue="Visible" OnFalse="Collapsed" OnNull="Collapsed"/>
<local:BooleanConverter x:Key="InverseVisibilityConverter" OnTrue="Collapsed" OnFalse="Visible" OnNull="Collapsed" />
</UserControl.Resources>
<StackPanel>
<Border BorderThickness="1" BorderBrush="#FFD4D4D4" HorizontalAlignment="Stretch" VerticalAlignment="Center" Padding="25" Margin="0,0,0,20">
<local:FlowDocumentScrollViewerNoMouseWheel Grid.Column="1" Margin="20,0" VerticalScrollBarVisibility="Auto" >
<FlowDocument FontFamily="Segoe UI" FontSize="12" Loaded="Document_Loaded" PagePadding="1">
<local:Paragraph>
<Run Text="General info" FontSize="18" FontWeight="Bold" Foreground="#FF3753A6" />
<LineBreak />
<LineBreak />
<Grid IsHitTestVisible="False">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="200" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<TextBlock Grid.Row="0" Grid.Column="0" Text="Brand / model" />
<TextBlock Grid.Row="0" Grid.Column="1" FontWeight="Bold" Foreground="#FF3753A6" TextWrapping="Wrap">
<TextBlock.Text>
<MultiBinding StringFormat="Nokia Lumia {0}">
<Binding Path="ManufacturerModelName" />
</MultiBinding>
</TextBlock.Text>
</TextBlock>
<TextBlock Grid.Row="1" Grid.Column="0" Text="Operating mode" />
<TextBlock Grid.Row="1" Grid.Column="1" Text="Label" FontWeight="Bold" Foreground="#FF3753A6" TextWrapping="Wrap" />
<TextBlock Grid.Row="2" Grid.Column="0" Text="Product code" />
<TextBlock Grid.Row="2" Grid.Column="1" Text="{Binding Path=ProductCode}" FontWeight="Bold" Foreground="#FF3753A6" TextWrapping="Wrap"/>
<TextBlock Grid.Row="3" Grid.Column="0" Text="Firmware version" />
<TextBlock Grid.Row="3" Grid.Column="1" Text="{Binding Path=Firmware}" TextWrapping="Wrap" />
</Grid>
</local:Paragraph>
</FlowDocument>
</local:FlowDocumentScrollViewerNoMouseWheel>
</Border>
<Border BorderThickness="1" BorderBrush="#FFD4D4D4" HorizontalAlignment="Stretch" VerticalAlignment="Center" Padding="25" ><!-- Margin="0,0,0,20" -->
<Expander Header="Phone identity" HorizontalContentAlignment="Stretch" Template="{DynamicResource TopicExpanderTemplate}" Margin="20,0">
<local:FlowDocumentScrollViewerNoMouseWheel Grid.Column="1" VerticalScrollBarVisibility="Auto" >
<FlowDocument x:Name="Document" FontFamily="Segoe UI" FontSize="12" Loaded="Document_Loaded" PagePadding="1">
<local:Paragraph>
<LineBreak />
<Grid IsHitTestVisible="False">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="200" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
<RowDefinition />
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<TextBlock Grid.Row="0" Grid.Column="0" Text="IMEI" />
<TextBlock Grid.Row="0" Grid.Column="1" Text="{Binding Path=IMEI}" TextWrapping="Wrap" />
<TextBlock Grid.Row="1" Grid.Column="0" Text="Root Key Hash" />
<TextBlock Grid.Row="1" Grid.Column="1" Text="{Binding Path=RootKeyHash, Converter={StaticResource HexConverter}, Mode=OneWay}" TextWrapping="Wrap" />
<TextBlock Grid.Row="2" Grid.Column="0" Text="Public Phone ID" />
<TextBlock Grid.Row="2" Grid.Column="1" Text="{Binding Path=PublicID, Converter={StaticResource HexConverter}, Mode=OneWay}" TextWrapping="Wrap" />
<TextBlock Grid.Row="3" Grid.Column="0" Text="WLAN MAC" />
<TextBlock Grid.Row="3" Grid.Column="1" Text="{Binding Path=WlanMac, Converter={StaticResource MACConverter}, Mode=OneWay}" TextWrapping="Wrap"/>
<TextBlock Grid.Row="4" Grid.Column="0" Text="Bluetooth MAC" />
<TextBlock Grid.Row="4" Grid.Column="1" Text="{Binding Path=BluetoothMac, Converter={StaticResource MACConverter}, Mode=OneWay}" TextWrapping="Wrap" />
</Grid>
</local:Paragraph>
</FlowDocument>
</local:FlowDocumentScrollViewerNoMouseWheel>
</Expander>
</Border>
</StackPanel>
</UserControl>
+47
View File
@@ -0,0 +1,47 @@
// Copyright (c) 2018, Rene Lergner - wpinternals.net - @Heathcliff74xda
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the "Software"),
// to deal in the Software without restriction, including without limitation
// the rights to use, copy, modify, merge, publish, distribute, sublicense,
// and/or sell copies of the Software, and to permit persons to whom the
// Software is furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
namespace WPinternals
{
/// <summary>
/// Interaction logic for NokiaLabelView.xaml
/// </summary>
public partial class NokiaLabelView : UserControl
{
public NokiaLabelView()
{
InitializeComponent();
}
private void HandleHyperlinkClick(object sender, RoutedEventArgs args)
{
Hyperlink link = args.Source as Hyperlink;
}
private void Document_Loaded(object sender, RoutedEventArgs e)
{
(sender as FlowDocument).AddHandler(Hyperlink.ClickEvent, new RoutedEventHandler(HandleHyperlinkClick));
}
}
}
+66
View File
@@ -0,0 +1,66 @@
<!--
Copyright (c) 2018, Rene Lergner - wpinternals.net - @Heathcliff74xda
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the "Software"),
to deal in the Software without restriction, including without limitation
the rights to use, copy, modify, merge, publish, distribute, sublicense,
and/or sell copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.
-->
<UserControl x:Class="WPinternals.NokiaMassStorageView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:WPinternals"
mc:Ignorable="d"
d:DesignWidth="700">
<Border BorderThickness="1" BorderBrush="#FFD4D4D4" HorizontalAlignment="Stretch" VerticalAlignment="Center" Padding="25">
<local:FlowDocumentScrollViewerNoMouseWheel Grid.Column="1" Margin="20,0,0,0" VerticalScrollBarVisibility="Auto" >
<FlowDocument x:Name="Document" FontFamily="Segoe UI" FontSize="12" Loaded="Document_Loaded">
<local:Paragraph>
<Run Text="Nokia Lumia - Mass Storage mode" FontSize="18" FontWeight="Bold" Foreground="#FF3753A6" />
<LineBreak />
<LineBreak />
<Run Text="You can now access the file-system of the phone from your PC at drive " />
<Run Text="{Binding Drive, Mode=OneTime}" FontWeight="Bold" />
<LineBreak />
<LineBreak />
<Run Text="Warning 1: " Foreground="Red" FontWeight="Bold"/>
<Run Text="Be very careful with altering files. You can easily brick your phone, when you make invalid changes to the file-system of the phone." />
<LineBreak />
<LineBreak />
<Run Text="Warning 2: " Foreground="Red" FontWeight="Bold"/>
<Run Text="If you try to access a partition and it cannot be accessed, then DO NOT FORMAT IT! Also when you are asked to format it, DON'T DO THAT!" />
<LineBreak />
<LineBreak />
<Run Text="Warning 3: " Foreground="Red" FontWeight="Bold"/>
<Run Text="While in Mass Storage Mode the phone-battery will not charge. When battery is low, the phone will automatically reboot to Normal Mode." />
<LineBreak />
<LineBreak />
<Run Text="Warning 4: " Foreground="Red" FontWeight="Bold"/>
<Run Text="Never format or delete the boot-partitions! Take special care with the DPP partition. Do not format or delete this partition, bacause there is no known method to recover the phone after that (except with special equipment to access eMMC directly)." />
<LineBreak />
<LineBreak />
<Run Text="How to reboot back to normal mode" FontWeight="Bold" Foreground="#FF3753A6" />
<LineBreak />
<LineBreak />
<Run Text="When the phone is in Mass Storage mode, it also exposes a special version of the Qualcomm Emergency Download mode. That mode supports reboot-commands. But those are blocked by Mass Storage mode, so this tool is not able to reboot your phone to normal mode. But this is not a problem. To escape from Mass Storage mode you have to perform a soft-reset. Older Lumia models require you to press and hold the volume-down-button and the power-button at the same time for at least 10 seconds. New Lumia models only require to press and hold the power-button for 10 seconds. This will trigger a power-cycle and the phone will reboot. Once fully booted, the phone may show strange behavior, like complaining about mail-accounts, showing old text-messages, inability to load https-websites, etc. This is expected behavior, because the time-settings of the phone are incorrect. Just wait a few seconds for the phone to get a data-connection and have the date/time synced. After that the strange behavior will stop automatically and normal operation is resumed." />
</local:Paragraph>
</FlowDocument>
</local:FlowDocumentScrollViewerNoMouseWheel>
</Border>
</UserControl>
+47
View File
@@ -0,0 +1,47 @@
// Copyright (c) 2018, Rene Lergner - wpinternals.net - @Heathcliff74xda
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the "Software"),
// to deal in the Software without restriction, including without limitation
// the rights to use, copy, modify, merge, publish, distribute, sublicense,
// and/or sell copies of the Software, and to permit persons to whom the
// Software is furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
namespace WPinternals
{
/// <summary>
/// Interaction logic for NokiaMassStorageView.xaml
/// </summary>
public partial class NokiaMassStorageView : UserControl
{
public NokiaMassStorageView()
{
InitializeComponent();
}
private void HandleHyperlinkClick(object sender, RoutedEventArgs args)
{
Hyperlink link = args.Source as Hyperlink;
}
private void Document_Loaded(object sender, RoutedEventArgs e)
{
(sender as FlowDocument).AddHandler(Hyperlink.ClickEvent, new RoutedEventHandler(HandleHyperlinkClick));
}
}
}
+87
View File
@@ -0,0 +1,87 @@
<!--
Copyright (c) 2018, Rene Lergner - wpinternals.net - @Heathcliff74xda
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the "Software"),
to deal in the Software without restriction, including without limitation
the rights to use, copy, modify, merge, publish, distribute, sublicense,
and/or sell copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.
-->
<UserControl x:Class="WPinternals.NokiaModeFlashView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:WPinternals"
mc:Ignorable="d"
d:DesignWidth="700">
<UserControl.Resources>
<local:BooleanConverter x:Key="VisibilityConverter" OnTrue="Visible" OnFalse="Collapsed" />
<local:BooleanConverter x:Key="InvisibilityConverter" OnTrue="Collapsed" OnFalse="Visible" />
<local:BooleanConverter x:Key="InverseConverter" OnTrue="False" OnFalse="True" />
</UserControl.Resources>
<Border BorderThickness="1" BorderBrush="#FFD4D4D4" HorizontalAlignment="Stretch" VerticalAlignment="Center" Padding="25">
<local:FlowDocumentScrollViewerNoMouseWheel Grid.Column="1" Margin="20,0,0,0" VerticalScrollBarVisibility="Auto" >
<FlowDocument x:Name="Document" FontFamily="Segoe UI" FontSize="12" Loaded="Document_Loaded" TextAlignment="Left">
<FlowDocument.Resources>
<!-- This style is used to set the margins for all paragraphs in the FlowDocument to 0. -->
<Style TargetType="{x:Type Paragraph}">
<Setter Property="Margin" Value="0"/>
</Style>
<Style TargetType="{x:Type Section}">
<Setter Property="Margin" Value="0"/>
</Style>
</FlowDocument.Resources>
<local:Paragraph>
<Run Text="Nokia Lumia - Switch mode" FontSize="18" FontWeight="Bold" Foreground="#FF3753A6" />
<LineBreak />
<LineBreak />
<Run Text="Current mode: " />
<Run Text="Flash" Foreground="#FF3753A6" FontWeight="Bold" />
<LineBreak />
<LineBreak />
<Hyperlink NavigateUri="Normal">Switch to Normal-mode</Hyperlink>
<LineBreak />
<Run Text="This will switch back to Windows Phone OS." />
<LineBreak />
<LineBreak />
<Hyperlink NavigateUri="Label">Switch to Label-mode</Hyperlink>
<LineBreak />
<Run Text="This interface is meant for querying and provisioning the phone. This is normally used for configuring the phone during manufacturing." />
<LineBreak />
<LineBreak />
<Hyperlink NavigateUri="MassStorage">Switch to Mass-Storage-mode</Hyperlink>
<LineBreak />
<Run Text="This mode allows you to access the complete file-system of the phone. " />
<local:CollapsibleRun IsVisible="{Binding EffectiveBootloaderSecurityStatus, Mode=OneWay}" Text="Your security flags indicate that this mode is prohibited on this phone."/>
<local:CollapsibleRun IsVisible="{Binding EffectiveBootloaderSecurityStatus, Converter={StaticResource InverseConverter}, Mode=OneWay}" Text="Your security flags indicate the this mode can be accessed. But this switch will only succeed if you took all measures to unlock Mass Storage mode." />
<LineBreak />
<LineBreak />
<Run Text="Warning 1: " Foreground="Red" FontWeight="Bold"/>
<Run Text="Once you've entered Mass Storage mode, be very careful with altering files. You can easily brick your phone, when you make invalid changes to the file-system of the phone." />
<LineBreak />
<LineBreak />
<Run Text="Warning 2: " Foreground="Red" FontWeight="Bold"/>
<Run Text="Before switching to Mass Storage Mode, verify that you do not have any other Windows Phone disks or partitions mounted. The partitions may have equal identifiers, which will result in a conflict. The phone partitions will be mounted &quot;offline&quot; and if you try to switch them &quot;online&quot; in the Disk Manager, it will corrupt the partitions on the phone. Unmount any Windows Phone partitions before you continue." />
<LineBreak />
<LineBreak />
<Run Text="Warning 3: " Foreground="Red" FontWeight="Bold"/>
<Run Text="Switching to Mass Storage mode should take about 10 seconds. Phones with Bootloader Spec A should be unlocked using an Engineering SBL3 to enable Mass Storage mode. When you unlocked the bootloader, but you did not use an Engineering SBL3, an attempt to boot to Mass Storage mode may result in an unresponsive state. Installing drivers for this interface may also cause to hang the PC. So when this switch is taking too long, you should reboot both the PC and the phone." />
</local:Paragraph>
</FlowDocument>
</local:FlowDocumentScrollViewerNoMouseWheel>
</Border>
</UserControl>
+51
View File
@@ -0,0 +1,51 @@
// Copyright (c) 2018, Rene Lergner - wpinternals.net - @Heathcliff74xda
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the "Software"),
// to deal in the Software without restriction, including without limitation
// the rights to use, copy, modify, merge, publish, distribute, sublicense,
// and/or sell copies of the Software, and to permit persons to whom the
// Software is furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
namespace WPinternals
{
/// <summary>
/// Interaction logic for NokiaModeFlashView.xaml
/// </summary>
public partial class NokiaModeFlashView : UserControl
{
public NokiaModeFlashView()
{
InitializeComponent();
}
private void HandleHyperlinkClick(object sender, RoutedEventArgs args)
{
Hyperlink link = args.Source as Hyperlink;
if (link != null)
{
(this.DataContext as NokiaModeFlashViewModel).RebootTo(link.NavigateUri.ToString());
}
}
private void Document_Loaded(object sender, RoutedEventArgs e)
{
(sender as FlowDocument).AddHandler(Hyperlink.ClickEvent, new RoutedEventHandler(HandleHyperlinkClick));
}
}
}
+86
View File
@@ -0,0 +1,86 @@
<!--
Copyright (c) 2018, Rene Lergner - wpinternals.net - @Heathcliff74xda
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the "Software"),
to deal in the Software without restriction, including without limitation
the rights to use, copy, modify, merge, publish, distribute, sublicense,
and/or sell copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.
-->
<UserControl x:Class="WPinternals.NokiaModeLabelView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:WPinternals"
mc:Ignorable="d"
d:DesignWidth="700">
<UserControl.Resources>
<local:BooleanConverter x:Key="VisibilityConverter" OnTrue="Visible" OnFalse="Collapsed" />
<local:BooleanConverter x:Key="InvisibilityConverter" OnTrue="Collapsed" OnFalse="Visible" />
<local:BooleanConverter x:Key="InverseConverter" OnTrue="False" OnFalse="True" />
</UserControl.Resources>
<Border BorderThickness="1" BorderBrush="#FFD4D4D4" HorizontalAlignment="Stretch" VerticalAlignment="Center" Padding="25">
<local:FlowDocumentScrollViewerNoMouseWheel Grid.Column="1" Margin="20,0,0,0" VerticalScrollBarVisibility="Auto" >
<FlowDocument x:Name="Document" FontFamily="Segoe UI" FontSize="12" Loaded="Document_Loaded" TextAlignment="Left">
<FlowDocument.Resources>
<!-- This style is used to set the margins for all paragraphs in the FlowDocument to 0. -->
<Style TargetType="{x:Type Paragraph}">
<Setter Property="Margin" Value="0"/>
</Style>
<Style TargetType="{x:Type Section}">
<Setter Property="Margin" Value="0"/>
</Style>
</FlowDocument.Resources>
<local:Paragraph>
<Run Text="Nokia Lumia - Switch mode" FontSize="18" FontWeight="Bold" Foreground="#FF3753A6" />
<LineBreak />
<LineBreak />
<Run Text="Current mode: " />
<Run Text="Label" Foreground="#FF3753A6" FontWeight="Bold" />
<LineBreak />
<LineBreak />
<Hyperlink NavigateUri="Normal">Switch to Normal-mode</Hyperlink>
<LineBreak />
<Run Text="This will switch back to Windows Phone OS." />
<LineBreak />
<LineBreak />
<Hyperlink NavigateUri="Flash">Switch to Flash-mode</Hyperlink>
<LineBreak />
<Run Text="This is the interface that can be used to flash a new ROM image. It can also be used to retrieve additional info and security status." />
<LineBreak />
<LineBreak />
<Hyperlink NavigateUri="MassStorage">Switch to Mass-Storage-mode</Hyperlink>
<LineBreak />
<Run Text="This mode allows you to access the complete file-system of the phone. " />
<Run Text="To enter this mode the phone will first be booted to Flash mode. After that this tool will immediately attempt to boot the phone to Mass Storage mode. So you may see your phone reboot multiple times." />
<LineBreak />
<LineBreak />
<Run Text="Warning 1: " Foreground="Red" FontWeight="Bold"/>
<Run Text="Once you've entered Mass Storage mode, be very careful with altering files. You can easily brick your phone, when you make invalid changes to the file-system of the phone." />
<LineBreak />
<LineBreak />
<Run Text="Warning 2: " Foreground="Red" FontWeight="Bold"/>
<Run Text="Before switching to Mass Storage Mode, verify that you do not have any other Windows Phone disks or partitions mounted. The partitions may have equal identifiers, which will result in a conflict. The phone partitions will be mounted &quot;offline&quot; and if you try to switch them &quot;online&quot; in the Disk Manager, it will corrupt the partitions on the phone. Unmount any Windows Phone partitions before you continue." />
<LineBreak />
<LineBreak />
<Run Text="Warning 3: " Foreground="Red" FontWeight="Bold"/>
<Run Text="Switching to Mass Storage mode should take about 10 seconds. Phones with Bootloader Spec A should be unlocked using an Engineering SBL3 to enable Mass Storage mode. When you unlocked the bootloader, but you did not use an Engineering SBL3, an attempt to boot to Mass Storage mode may result in an unresponsive state. Installing drivers for this interface may also cause to hang the PC. So when this switch is taking too long, you should reboot both the PC and the phone." />
</local:Paragraph>
</FlowDocument>
</local:FlowDocumentScrollViewerNoMouseWheel>
</Border>
</UserControl>
+51
View File
@@ -0,0 +1,51 @@
// Copyright (c) 2018, Rene Lergner - wpinternals.net - @Heathcliff74xda
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the "Software"),
// to deal in the Software without restriction, including without limitation
// the rights to use, copy, modify, merge, publish, distribute, sublicense,
// and/or sell copies of the Software, and to permit persons to whom the
// Software is furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
namespace WPinternals
{
/// <summary>
/// Interaction logic for NokiaModeLabelView.xaml
/// </summary>
public partial class NokiaModeLabelView : UserControl
{
public NokiaModeLabelView()
{
InitializeComponent();
}
private void HandleHyperlinkClick(object sender, RoutedEventArgs args)
{
Hyperlink link = args.Source as Hyperlink;
if (link != null)
{
(this.DataContext as NokiaModeLabelViewModel).RebootTo(link.NavigateUri.ToString());
}
}
private void Document_Loaded(object sender, RoutedEventArgs e)
{
(sender as FlowDocument).AddHandler(Hyperlink.ClickEvent, new RoutedEventHandler(HandleHyperlinkClick));
}
}
}
+61
View File
@@ -0,0 +1,61 @@
<!--
Copyright (c) 2018, Rene Lergner - wpinternals.net - @Heathcliff74xda
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the "Software"),
to deal in the Software without restriction, including without limitation
the rights to use, copy, modify, merge, publish, distribute, sublicense,
and/or sell copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.
-->
<UserControl x:Class="WPinternals.NokiaModeMassStorageView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:WPinternals"
mc:Ignorable="d"
d:DesignWidth="700">
<UserControl.Resources>
<local:BooleanConverter x:Key="VisibilityConverter" OnTrue="Visible" OnFalse="Collapsed" />
<local:BooleanConverter x:Key="InvisibilityConverter" OnTrue="Collapsed" OnFalse="Visible" />
<local:BooleanConverter x:Key="InverseConverter" OnTrue="False" OnFalse="True" />
</UserControl.Resources>
<Border BorderThickness="1" BorderBrush="#FFD4D4D4" HorizontalAlignment="Stretch" VerticalAlignment="Center" Padding="25">
<local:FlowDocumentScrollViewerNoMouseWheel Grid.Column="1" Margin="20,0,0,0" VerticalScrollBarVisibility="Auto" >
<FlowDocument x:Name="Document" FontFamily="Segoe UI" FontSize="12" Loaded="Document_Loaded" TextAlignment="Left">
<FlowDocument.Resources>
<!-- This style is used to set the margins for all paragraphs in the FlowDocument to 0. -->
<Style TargetType="{x:Type Paragraph}">
<Setter Property="Margin" Value="0"/>
</Style>
<Style TargetType="{x:Type Section}">
<Setter Property="Margin" Value="0"/>
</Style>
</FlowDocument.Resources>
<local:Paragraph>
<Run Text="Nokia Lumia - Switch mode" FontSize="18" FontWeight="Bold" Foreground="#FF3753A6" />
<LineBreak />
<LineBreak />
<Run Text="Current mode: " />
<Run Text="Mass Storage" Foreground="#FF3753A6" FontWeight="Bold" />
<LineBreak />
<LineBreak />
<Run Text="Currently it is not possible to switch from Mass Storage mode to another mode. You can press and hold the power-button and volume-down to soft-reset the phone. You will then boot to Windows Phone OS." />
</local:Paragraph>
</FlowDocument>
</local:FlowDocumentScrollViewerNoMouseWheel>
</Border>
</UserControl>
+51
View File
@@ -0,0 +1,51 @@
// Copyright (c) 2018, Rene Lergner - wpinternals.net - @Heathcliff74xda
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the "Software"),
// to deal in the Software without restriction, including without limitation
// the rights to use, copy, modify, merge, publish, distribute, sublicense,
// and/or sell copies of the Software, and to permit persons to whom the
// Software is furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
namespace WPinternals
{
/// <summary>
/// Interaction logic for NokiaModeMassStorageView.xaml
/// </summary>
public partial class NokiaModeMassStorageView : UserControl
{
public NokiaModeMassStorageView()
{
InitializeComponent();
}
private void HandleHyperlinkClick(object sender, RoutedEventArgs args)
{
Hyperlink link = args.Source as Hyperlink;
if (link != null)
{
(this.DataContext as NokiaModeNormalViewModel).RebootTo(link.NavigateUri.ToString());
}
}
private void Document_Loaded(object sender, RoutedEventArgs e)
{
(sender as FlowDocument).AddHandler(Hyperlink.ClickEvent, new RoutedEventHandler(HandleHyperlinkClick));
}
}
}
+86
View File
@@ -0,0 +1,86 @@
<!--
Copyright (c) 2018, Rene Lergner - wpinternals.net - @Heathcliff74xda
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the "Software"),
to deal in the Software without restriction, including without limitation
the rights to use, copy, modify, merge, publish, distribute, sublicense,
and/or sell copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.
-->
<UserControl x:Class="WPinternals.NokiaModeNormalView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:WPinternals"
mc:Ignorable="d"
d:DesignWidth="700">
<UserControl.Resources>
<local:BooleanConverter x:Key="VisibilityConverter" OnTrue="Visible" OnFalse="Collapsed" />
<local:BooleanConverter x:Key="InvisibilityConverter" OnTrue="Collapsed" OnFalse="Visible" />
<local:BooleanConverter x:Key="InverseConverter" OnTrue="False" OnFalse="True" />
</UserControl.Resources>
<Border BorderThickness="1" BorderBrush="#FFD4D4D4" HorizontalAlignment="Stretch" VerticalAlignment="Center" Padding="25">
<local:FlowDocumentScrollViewerNoMouseWheel Grid.Column="1" Margin="20,0,0,0" VerticalScrollBarVisibility="Auto" >
<FlowDocument x:Name="Document" FontFamily="Segoe UI" FontSize="12" Loaded="Document_Loaded" TextAlignment="Left">
<FlowDocument.Resources>
<!-- This style is used to set the margins for all paragraphs in the FlowDocument to 0. -->
<Style TargetType="{x:Type Paragraph}">
<Setter Property="Margin" Value="0"/>
</Style>
<Style TargetType="{x:Type Section}">
<Setter Property="Margin" Value="0"/>
</Style>
</FlowDocument.Resources>
<local:Paragraph>
<Run Text="Nokia Lumia - Switch mode" FontSize="18" FontWeight="Bold" Foreground="#FF3753A6" />
<LineBreak />
<LineBreak />
<Run Text="Current mode: " />
<Run Text="Normal (Windows Phone OS)" Foreground="#FF3753A6" FontWeight="Bold" />
<LineBreak />
<LineBreak />
<Hyperlink NavigateUri="Flash">Switch to Flash-mode</Hyperlink>
<LineBreak />
<Run Text="This is the interface that can be used to flash a new ROM image. It can also be used to retrieve additional info and security status." />
<LineBreak />
<LineBreak />
<Hyperlink NavigateUri="Label">Switch to Label-mode</Hyperlink>
<LineBreak />
<Run Text="This interface is meant for querying and provisioning the phone. This is normally used for configuring the phone during manufacturing." />
<LineBreak />
<LineBreak />
<Hyperlink NavigateUri="MassStorage">Switch to Mass-Storage-mode</Hyperlink>
<LineBreak />
<Run Text="This mode allows you to access the complete file-system of the phone. " />
<Run Text="To enter this mode the phone will first be booted to Flash mode. After that this tool will immediately attempt to boot the phone to Mass Storage mode. So you may see your phone reboot multiple times." />
<LineBreak />
<LineBreak />
<Run Text="Warning 1: " Foreground="Red" FontWeight="Bold"/>
<Run Text="Once you've entered Mass Storage mode, be very careful with altering files. You can easily brick your phone, when you make invalid changes to the file-system of the phone." />
<LineBreak />
<LineBreak />
<Run Text="Warning 2: " Foreground="Red" FontWeight="Bold"/>
<Run Text="Before switching to Mass Storage Mode, verify that you do not have any other Windows Phone disks or partitions mounted. The partitions may have equal identifiers, which will result in a conflict. The phone partitions will be mounted &quot;offline&quot; and if you try to switch them &quot;online&quot; in the Disk Manager, it will corrupt the partitions on the phone. Unmount any Windows Phone partitions before you continue." />
<LineBreak />
<LineBreak />
<Run Text="Warning 3: " Foreground="Red" FontWeight="Bold"/>
<Run Text="Switching to Mass Storage mode should take about 10 seconds. Phones with Bootloader Spec A should be unlocked using an Engineering SBL3 to enable Mass Storage mode. When you unlocked the bootloader, but you did not use an Engineering SBL3, an attempt to boot to Mass Storage mode may result in an unresponsive state. Installing drivers for this interface may also cause to hang the PC. So when this switch is taking too long, you should reboot both the PC and the phone." />
</local:Paragraph>
</FlowDocument>
</local:FlowDocumentScrollViewerNoMouseWheel>
</Border>
</UserControl>
+51
View File
@@ -0,0 +1,51 @@
// Copyright (c) 2018, Rene Lergner - wpinternals.net - @Heathcliff74xda
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the "Software"),
// to deal in the Software without restriction, including without limitation
// the rights to use, copy, modify, merge, publish, distribute, sublicense,
// and/or sell copies of the Software, and to permit persons to whom the
// Software is furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
namespace WPinternals
{
/// <summary>
/// Interaction logic for NokiaModeNormalView.xaml
/// </summary>
public partial class NokiaModeNormalView : UserControl
{
public NokiaModeNormalView()
{
InitializeComponent();
}
private void HandleHyperlinkClick(object sender, RoutedEventArgs args)
{
Hyperlink link = args.Source as Hyperlink;
if (link != null)
{
(this.DataContext as NokiaModeNormalViewModel).RebootTo(link.NavigateUri.ToString());
}
}
private void Document_Loaded(object sender, RoutedEventArgs e)
{
(sender as FlowDocument).AddHandler(Hyperlink.ClickEvent, new RoutedEventHandler(HandleHyperlinkClick));
}
}
}
+139
View File
@@ -0,0 +1,139 @@
<!--
Copyright (c) 2018, Rene Lergner - wpinternals.net - @Heathcliff74xda
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the "Software"),
to deal in the Software without restriction, including without limitation
the rights to use, copy, modify, merge, publish, distribute, sublicense,
and/or sell copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.
-->
<UserControl x:Class="WPinternals.NokiaNormalView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:WPinternals"
mc:Ignorable="d"
d:DesignWidth="700">
<UserControl.Resources>
<local:HexConverter x:Key="MACConverter" Separator=":" />
<local:HexConverter x:Key="HexConverter" />
<local:BooleanConverter x:Key="VisibilityConverter" OnTrue="Visible" OnFalse="Collapsed" OnNull="Collapsed"/>
<local:BooleanConverter x:Key="InverseVisibilityConverter" OnTrue="Collapsed" OnFalse="Visible" OnNull="Collapsed" />
</UserControl.Resources>
<StackPanel VerticalAlignment="Center">
<Border BorderThickness="1" BorderBrush="#FFD4D4D4" HorizontalAlignment="Stretch" VerticalAlignment="Center" Padding="25" Margin="0,0,0,20">
<local:FlowDocumentScrollViewerNoMouseWheel Grid.Column="1" Margin="20,0" VerticalScrollBarVisibility="Auto" >
<FlowDocument FontFamily="Segoe UI" FontSize="12" Loaded="Document_Loaded" PagePadding="1">
<local:Paragraph>
<Run Text="General info" FontSize="18" FontWeight="Bold" Foreground="#FF3753A6" />
<LineBreak />
<LineBreak />
<Grid IsHitTestVisible="False">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="200" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
<RowDefinition />
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<TextBlock Grid.Row="0" Grid.Column="0" Text="Brand / model" />
<TextBlock Grid.Row="0" Grid.Column="1" FontWeight="Bold" Foreground="#FF3753A6" TextWrapping="Wrap">
<TextBlock.Text>
<MultiBinding StringFormat="Nokia Lumia {0}">
<Binding Path="ManufacturerModelName" />
</MultiBinding>
</TextBlock.Text>
</TextBlock>
<TextBlock Grid.Row="1" Grid.Column="0" Text="Operating mode" />
<TextBlock Grid.Row="1" Grid.Column="1" Text="Normal (Windows Phone OS)" FontWeight="Bold" Foreground="#FF3753A6" TextWrapping="Wrap" />
<TextBlock Grid.Row="2" Grid.Column="0" Text="Product code" />
<TextBlock Grid.Row="2" Grid.Column="1" Text="{Binding Path=ProductCode}" FontWeight="Bold" Foreground="#FF3753A6" TextWrapping="Wrap"/>
<TextBlock Grid.Row="3" Grid.Column="0" Text="Operator" />
<TextBlock Grid.Row="3" Grid.Column="1" Text="{Binding Path=Operator}" TextWrapping="Wrap" />
<TextBlock Grid.Row="4" Grid.Column="0" Text="Firmware version" />
<TextBlock Grid.Row="4" Grid.Column="1" Text="{Binding Path=Firmware}" TextWrapping="Wrap" />
</Grid>
</local:Paragraph>
</FlowDocument>
</local:FlowDocumentScrollViewerNoMouseWheel>
</Border>
<Border BorderThickness="1" BorderBrush="#FFD4D4D4" HorizontalAlignment="Stretch" VerticalAlignment="Center" Padding="25" Margin="0,0,0,20">
<Expander Header="Phone identity" HorizontalContentAlignment="Stretch" Template="{DynamicResource TopicExpanderTemplate}" Margin="20,0">
<local:FlowDocumentScrollViewerNoMouseWheel Grid.Column="1" VerticalScrollBarVisibility="Auto" >
<FlowDocument x:Name="Document" FontFamily="Segoe UI" FontSize="12" Loaded="Document_Loaded" PagePadding="1">
<local:Paragraph>
<LineBreak />
<Grid IsHitTestVisible="False">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="200" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<TextBlock Grid.Row="0" Grid.Column="0" Text="IMEI" />
<TextBlock Grid.Row="0" Grid.Column="1" Text="{Binding Path=IMEI}" TextWrapping="Wrap" />
<TextBlock Grid.Row="1" Grid.Column="0" Text="Public Phone ID" />
<TextBlock Grid.Row="1" Grid.Column="1" Text="{Binding Path=PublicID, Converter={StaticResource HexConverter}, Mode=OneWay}" TextWrapping="Wrap" />
<TextBlock Grid.Row="2" Grid.Column="0" Text="WLAN MAC" />
<TextBlock Grid.Row="2" Grid.Column="1" Text="{Binding Path=WlanMac, Converter={StaticResource MACConverter}, Mode=OneWay}" TextWrapping="Wrap"/>
<TextBlock Grid.Row="3" Grid.Column="0" Text="Bluetooth MAC" />
<TextBlock Grid.Row="3" Grid.Column="1" Text="{Binding Path=BluetoothMac, Converter={StaticResource MACConverter}, Mode=OneWay}" TextWrapping="Wrap" />
</Grid>
</local:Paragraph>
</FlowDocument>
</local:FlowDocumentScrollViewerNoMouseWheel>
</Expander>
</Border>
<Border BorderThickness="1" BorderBrush="#FFD4D4D4" HorizontalAlignment="Stretch" VerticalAlignment="Center" Padding="25" >
<local:FlowDocumentScrollViewerNoMouseWheel Grid.Column="1" Margin="20,0" VerticalScrollBarVisibility="Auto" >
<FlowDocument FontFamily="Segoe UI" FontSize="12" Loaded="Document_Loaded" PagePadding="1">
<local:Paragraph TextAlignment="Left">
<Run Text="Security" FontSize="18" FontWeight="Bold" Foreground="#FF3753A6" />
<LineBreak />
<LineBreak />
<Grid IsHitTestVisible="False">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="200" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<TextBlock Grid.Row="1" Grid.Column="0" Text="Sim lock" />
<TextBlock Grid.Row="1" Grid.Column="1" Text="Disabled" FontWeight="Bold" Foreground="#FF40C133" TextWrapping="Wrap" Visibility="{Binding Path=IsSimLocked, Converter={StaticResource InverseVisibilityConverter}}" />
<TextBlock Grid.Row="1" Grid.Column="1" Text="Enabled" FontWeight="Bold" Foreground="#FFAC3631" TextWrapping="Wrap" Visibility="{Binding Path=IsSimLocked, Converter={StaticResource VisibilityConverter}}"/>
</Grid>
<LineBreak />
<LineBreak />
<Run Text="For more detailed and accurate status info, switch to " />
<Hyperlink NavigateUri="Flash">Flash</Hyperlink>
<Run Text=" mode." />
</local:Paragraph>
</FlowDocument>
</local:FlowDocumentScrollViewerNoMouseWheel>
</Border>
</StackPanel>
</UserControl>
+52
View File
@@ -0,0 +1,52 @@
// Copyright (c) 2018, Rene Lergner - wpinternals.net - @Heathcliff74xda
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the "Software"),
// to deal in the Software without restriction, including without limitation
// the rights to use, copy, modify, merge, publish, distribute, sublicense,
// and/or sell copies of the Software, and to permit persons to whom the
// Software is furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
namespace WPinternals
{
/// <summary>
/// Interaction logic for NokiaNormalView.xaml
/// </summary>
public partial class NokiaNormalView : UserControl
{
public NokiaNormalView()
{
InitializeComponent();
}
private void HandleHyperlinkClick(object sender, RoutedEventArgs args)
{
Hyperlink link = args.Source as Hyperlink;
if (link != null)
{
(this.DataContext as NokiaNormalViewModel).RebootTo(link.NavigateUri.ToString());
}
}
private void Document_Loaded(object sender, RoutedEventArgs e)
{
(sender as FlowDocument).AddHandler(Hyperlink.ClickEvent, new RoutedEventHandler(HandleHyperlinkClick));
}
}
}
+33
View File
@@ -0,0 +1,33 @@
<!--
Copyright (c) 2018, Rene Lergner - wpinternals.net - @Heathcliff74xda
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the "Software"),
to deal in the Software without restriction, including without limitation
the rights to use, copy, modify, merge, publish, distribute, sublicense,
and/or sell copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.
-->
<UserControl x:Class="WPinternals.NotImplementedView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
d:DesignWidth="700">
<Border BorderThickness="1" BorderBrush="#FFD4D4D4" HorizontalAlignment="Stretch" VerticalAlignment="Center" Padding="25">
<Label Content="{Binding Message}" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="20"/>
</Border>
</UserControl>
+35
View File
@@ -0,0 +1,35 @@
// Copyright (c) 2018, Rene Lergner - wpinternals.net - @Heathcliff74xda
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the "Software"),
// to deal in the Software without restriction, including without limitation
// the rights to use, copy, modify, merge, publish, distribute, sublicense,
// and/or sell copies of the Software, and to permit persons to whom the
// Software is furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.
using System.Windows.Controls;
namespace WPinternals
{
/// <summary>
/// Interaction logic for NotImplementedView.xaml
/// </summary>
public partial class NotImplementedView : UserControl
{
public NotImplementedView()
{
InitializeComponent();
}
}
}
+71
View File
@@ -0,0 +1,71 @@
<!--
Copyright (c) 2018, Rene Lergner - wpinternals.net - @Heathcliff74xda
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the "Software"),
to deal in the Software without restriction, including without limitation
the rights to use, copy, modify, merge, publish, distribute, sublicense,
and/or sell copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.
-->
<UserControl x:Class="WPinternals.RegistrationView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:WPinternals"
mc:Ignorable="d"
d:DesignWidth="700">
<Border BorderThickness="1" BorderBrush="#FFD4D4D4" HorizontalAlignment="Stretch" VerticalAlignment="Center">
<Grid>
<local:FlowDocumentScrollViewerNoMouseWheel Margin="45,25,45,75" VerticalScrollBarVisibility="Auto">
<FlowDocument x:Name="Document" FontFamily="Segoe UI" FontSize="12" PagePadding="0">
<local:Paragraph>
<Run Text="Registration" FontSize="18" FontWeight="Bold" Foreground="#FF3753A6" />
<LineBreak />
<LineBreak />
<Run Text="This software needs to be registered. Your personal data will not be shared or sold. Information is collected for the purpose of improving the software." />
<LineBreak />
<LineBreak />
<Grid >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="150" />
<ColumnDefinition Width="350" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<TextBlock Grid.Row="0" Grid.Column="0" Text="Name" Margin="0,3,0,0" />
<TextBox Grid.Row="0" Grid.Column="1" Text="{Binding Name, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" HorizontalAlignment="Stretch" Margin="0,0,0,10" Height="24" VerticalContentAlignment="Center"/>
<TextBlock Grid.Row="1" Grid.Column="0" Text="Email" Margin="0,3,0,0" />
<TextBox Grid.Row="1" Grid.Column="1" Text="{Binding Email, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" HorizontalAlignment="Stretch" Margin="0,0,0,10" Height="24" />
<TextBlock Grid.Row="2" Grid.Column="0" Text="Skype ID (optional)" Margin="0,3,0,0" />
<TextBox Grid.Row="2" Grid.Column="1" Text="{Binding SkypeID, Mode=TwoWay}" HorizontalAlignment="Stretch" Margin="0,0,0,10" Height="24" />
<TextBlock Grid.Row="3" Grid.Column="0" Text="Telegram ID (optional)" Margin="0,3,0,0" />
<TextBox Grid.Row="3" Grid.Column="1" Text="{Binding TelegramID, Mode=TwoWay}" HorizontalAlignment="Stretch" Height="24" />
</Grid>
</local:Paragraph>
</FlowDocument>
</local:FlowDocumentScrollViewerNoMouseWheel>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Right" VerticalAlignment="Bottom" Margin="0,80,45,25">
<Button Command="{Binding Path=ContinueCommand, Mode=OneWay}" Content="Register" Width="100" Height="Auto" Padding="0,5" IsEnabled="{Binding Path=IsRegistrationComplete, Mode=OneWay}" />
<Button Command="{Binding Path=ExitCommand, Mode=OneWay}" Content="Exit" Width="100" Height="Auto" Padding="0,5" Margin="10,0,0,0" />
</StackPanel>
</Grid>
</Border>
</UserControl>
+35
View File
@@ -0,0 +1,35 @@
// Copyright (c) 2018, Rene Lergner - wpinternals.net - @Heathcliff74xda
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the "Software"),
// to deal in the Software without restriction, including without limitation
// the rights to use, copy, modify, merge, publish, distribute, sublicense,
// and/or sell copies of the Software, and to permit persons to whom the
// Software is furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.
using System.Windows.Controls;
namespace WPinternals
{
/// <summary>
/// Interaction logic for DisclaimerView.xaml
/// </summary>
public partial class RegistrationView : UserControl
{
public RegistrationView()
{
InitializeComponent();
}
}
}
+80
View File
@@ -0,0 +1,80 @@
<!--
Copyright (c) 2018, Rene Lergner - wpinternals.net - @Heathcliff74xda
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the "Software"),
to deal in the Software without restriction, including without limitation
the rights to use, copy, modify, merge, publish, distribute, sublicense,
and/or sell copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.
-->
<UserControl x:Class="WPinternals.RestoreView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:WPinternals"
mc:Ignorable="d"
d:DesignWidth="700">
<UserControl.Resources>
<local:ObjectToVisibilityConverter x:Key="ObjectToVisibilityConverter" />
</UserControl.Resources>
<StackPanel VerticalAlignment="Center">
<Border BorderThickness="1" BorderBrush="#FFD4D4D4" HorizontalAlignment="Stretch" VerticalAlignment="Center" Margin="0,0,0,0">
<StackPanel>
<local:FlowDocumentScrollViewerNoMouseWheel Grid.Column="1" Margin="20,0,20,0" VerticalScrollBarVisibility="Auto" >
<FlowDocument FontFamily="Segoe UI" FontSize="12" Loaded="Document_Loaded" TextAlignment="Left">
<FlowDocument.Resources>
<!-- This style is used to set the margins for all paragraphs in the FlowDocument to 0. -->
<Style TargetType="{x:Type Paragraph}">
<Setter Property="Margin" Value="0"/>
</Style>
<Style TargetType="{x:Type Section}">
<Setter Property="Margin" Value="0"/>
</Style>
</FlowDocument.Resources>
<local:Paragraph>
<Run Text="Restore phone" FontSize="18" FontWeight="Bold" Foreground="#FF3753A6" />
<LineBreak />
<LineBreak />
<Run Text="You need to have an "/>
<Hyperlink NavigateUri="UnlockBoot">unlocked</Hyperlink>
<Run Text=" Engineering bootloader. Use this to restore an earlier backup. If you want to flash a new unlocked custom ROM, the "/>
<Hyperlink NavigateUri="Flash">Flash-function</Hyperlink>
<Run Text=" is more suitable. Remember that MainOS partition and Data partition are tied together. Always backup and restore those partitions together. You should only restore EFIESP from the exact same phone-model, because the EFIESP partition contains model-specific data. Select one or more source-files to restore." />
<LineBreak />
<LineBreak />
<local:FilePicker Caption="EFIESP: " SelectionText="Select the source-file to restore a backup of the EFIESP partition..." Path="{Binding EFIESPPath, Mode=TwoWay}" AllowNull="True" HorizontalAlignment="Stretch" PathChanged="FilePicker_PathChanged"/>
<LineBreak />
<LineBreak />
<local:FilePicker Caption="MainOS: " SelectionText="Select the source-file to restore a backup of the MainOS partition..." Path="{Binding MainOSPath, Mode=TwoWay}" AllowNull="True" HorizontalAlignment="Stretch" PathChanged="FilePicker_PathChanged"/>
<LineBreak />
<LineBreak />
<local:FilePicker Caption="Data: " SelectionText="Select the source-file to restore a backup of the Data partition..." Path="{Binding DataPath, Mode=TwoWay}" AllowNull="True" HorizontalAlignment="Stretch" PathChanged="FilePicker_PathChanged"/>
<LineBreak />
<LineBreak />
<local:CollapsibleRun Text="You have to connect your phone before you can continue." IsVisible="{Binding IsPhoneDisconnected, Mode=OneWay}"/>
<local:CollapsibleRun Text="When you continue, the phone will be switched to Flash mode and then a backup will be restored to the selected partitions." IsVisible="{Binding IsPhoneInOtherMode, Mode=OneWay}"/>
<local:CollapsibleRun Text="The phone is in Flash mode. You can continue to restore a backup." IsVisible="{Binding IsPhoneInFlashMode, Mode=OneWay}"/>
</local:Paragraph>
</FlowDocument>
</local:FlowDocumentScrollViewerNoMouseWheel>
<StackPanel Orientation="Horizontal" Width="Auto" Height="Auto" HorizontalAlignment="Right" VerticalAlignment="Bottom" Margin="0,10,40,25">
<Button Command="{Binding Path=RestoreCommand, Mode=OneWay}" Content="Restore phone" Width="120" Height="Auto" Padding="0,5" />
</StackPanel>
</StackPanel>
</Border>
</StackPanel>
</UserControl>
+59
View File
@@ -0,0 +1,59 @@
// Copyright (c) 2018, Rene Lergner - wpinternals.net - @Heathcliff74xda
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the "Software"),
// to deal in the Software without restriction, including without limitation
// the rights to use, copy, modify, merge, publish, distribute, sublicense,
// and/or sell copies of the Software, and to permit persons to whom the
// Software is furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
namespace WPinternals
{
/// <summary>
/// Interaction logic for RestoreView.xaml
/// </summary>
public partial class RestoreView : UserControl
{
public RestoreView()
{
InitializeComponent();
}
private void HandleHyperlinkClick(object sender, RoutedEventArgs args)
{
Hyperlink link = args.Source as Hyperlink;
if (link != null)
{
if (link.NavigateUri.ToString() == "UnlockBoot")
(this.DataContext as RestoreSourceSelectionViewModel).SwitchToUnlockBoot();
else if (link.NavigateUri.ToString() == "Flash")
(this.DataContext as RestoreSourceSelectionViewModel).SwitchToFlashRom();
}
}
private void Document_Loaded(object sender, RoutedEventArgs e)
{
(sender as FlowDocument).AddHandler(Hyperlink.ClickEvent, new RoutedEventHandler(HandleHyperlinkClick));
}
private void FilePicker_PathChanged(object sender, PathChangedEventArgs e)
{
((RestoreSourceSelectionViewModel)DataContext).EvaluateViewState();
}
}
}
+30
View File
@@ -0,0 +1,30 @@
<!--
Copyright (c) 2018, Rene Lergner - wpinternals.net - @Heathcliff74xda
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the "Software"),
to deal in the Software without restriction, including without limitation
the rights to use, copy, modify, merge, publish, distribute, sublicense,
and/or sell copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.
-->
<Window x:Class="WPinternals.StartupWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="StartupWindow" Height="0" Width="0" WindowStyle="None" ShowInTaskbar="False" ShowActivated="False">
<Grid>
</Grid>
</Window>
+67
View File
@@ -0,0 +1,67 @@
// Copyright (c) 2018, Rene Lergner - wpinternals.net - @Heathcliff74xda
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the "Software"),
// to deal in the Software without restriction, including without limitation
// the rights to use, copy, modify, merge, publish, distribute, sublicense,
// and/or sell copies of the Software, and to permit persons to whom the
// Software is furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.
using Microsoft.Win32;
using System;
using System.Linq;
using System.Windows;
namespace WPinternals
{
/// <summary>
/// Interaction logic for StartupWindow.xaml
/// </summary>
public partial class StartupWindow : Window
{
public StartupWindow()
{
InitializeComponent();
}
protected override async void OnSourceInitialized(EventArgs e)
{
Visibility = System.Windows.Visibility.Hidden;
bool NeedLicenseAgrement = false;
if (Registry.CurrentUser.OpenSubKey("Software\\WPInternals") == null)
Registry.CurrentUser.OpenSubKey("Software", true).CreateSubKey("WPInternals");
if ((Registration.IsPrerelease) && (Registry.CurrentUser.OpenSubKey("Software\\WPInternals").GetValue("NdaAccepted") == null))
NeedLicenseAgrement = true;
else if (Registry.CurrentUser.OpenSubKey("Software\\WPInternals").GetValue("DisclaimerAccepted") == null)
NeedLicenseAgrement = true;
if ((!Registration.IsPrerelease || Registration.IsRegistered()) && !NeedLicenseAgrement)
{
// USB communication uses Windows Messages and therefore the MainViewModel
// can only be created after the Main Window was initialized.
System.Threading.SynchronizationContext UIContext = System.Threading.SynchronizationContext.Current;
await CommandLine.ParseCommandLine(UIContext);
}
else if (Environment.GetCommandLineArgs().Count() > 1)
{
Console.WriteLine("First time use");
Console.WriteLine("Switching to graphic user interface for license and registration");
CommandLine.CloseConsole(false);
}
new MainWindow().Show();
}
}
}