Initial commit

This commit is contained in:
2026-09-19 16:13:20 +03:00 Unverified
commit d60d5b98d4
24 changed files with 1278 additions and 0 deletions
+157
View File
@@ -0,0 +1,157 @@
<?xml version="1.0" encoding="utf-8"?>
<UserControl
x:Class="IPClab3.Hack.Hack"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:IPClab3"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:c="using:IPClab3.Converters"
mc:Ignorable="d">
<UserControl.Resources>
<c:MemoryAddressConverter x:Key="MemoryAddressConverter"/>
</UserControl.Resources>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Border Margin="12" Background="{ThemeResource LayerFillColorDefaultBrush}" CornerRadius="8">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<TextBlock Text="Выберите и запустите процесс" Style="{ThemeResource BodyLargeTextBlockStyle}" Margin="16"/>
<Grid Grid.Row="1" HorizontalAlignment="Stretch" Margin="16,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<TextBox IsReadOnly="True" Margin="0,0,8,0" Text="{x:Bind ViewModel.FilePath, Mode=OneWay}"/>
<Button Grid.Column="1" Content="Выбрать" Click="Button_Click"/>
</Grid>
<Button Grid.Row="2" Style="{ThemeResource AccentButtonStyle}" Margin="16" HorizontalAlignment="Stretch" Command="{x:Bind ViewModel.StartProcessCommand}">
<Button.Content>
<StackPanel Orientation="Horizontal">
<FontIcon Glyph="&#xF5B0;" />
<TextBlock Text="Запустить процесс" Margin="8,0"/>
</StackPanel>
</Button.Content>
</Button>
</Grid>
</Border>
<TextBlock Grid.Row="1" Text="или" HorizontalAlignment="Center" Style="{ThemeResource BodyLargeTextBlockStyle}"/>
<Border Grid.Row="2" Margin="12" Background="{ThemeResource LayerFillColorDefaultBrush}" CornerRadius="8">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<TextBlock Text="Выберите запущенный процесс" Style="{ThemeResource BodyLargeTextBlockStyle}" Margin="16"/>
<AutoSuggestBox Grid.Row="1" PlaceholderText="Введите имя процесса" HorizontalAlignment="Stretch" Margin="16,0"
TextMemberPath="ProcessName" DisplayMemberPath="ProcessName" QueryIcon="Find"
Text="{x:Bind ViewModel.SearchText, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
ItemsSource="{x:Bind ViewModel.Suggestions, Mode=OneWay}"
SuggestionChosen="AutoSuggestBox_SuggestionChosen" TextChanged="AutoSuggestBox_TextChanged"
/>
<Button Grid.Row="2" Style="{ThemeResource AccentButtonStyle}" Margin="16" HorizontalAlignment="Stretch" PointerEntered="Button_PointerEntered" Command="{x:Bind ViewModel.AttachProcessCommand}">
<Button.Content>
<StackPanel Orientation="Horizontal">
<FontIcon Glyph="&#xE8CE;" />
<TextBlock Margin="8,0">
<Run Text="Подключить процесс: "/><Run Text="{x:Bind ViewModel.SelectedProcess.Pid, Mode=OneWay, TargetNullValue='', FallbackValue=''}"/>
</TextBlock>
</StackPanel>
</Button.Content>
</Button>
</Grid>
</Border>
<Border Grid.Row="3" Height="1" BorderThickness="0,1,0,0" BorderBrush="{ThemeResource DividerStrokeColorDefaultBrush}"/>
<Border Grid.Row="4" Margin="12" Background="{ThemeResource LayerFillColorDefaultBrush}" CornerRadius="8">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<TextBlock Text="{x:Bind ViewModel.ReadData, Mode=OneWay}" Style="{ThemeResource BodyLargeTextBlockStyle}" Margin="16"/>
<Grid Grid.Row="1" HorizontalAlignment="Stretch" Margin="16,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="3*"/>
<ColumnDefinition Width="2*"/>
</Grid.ColumnDefinitions>
<Grid Margin="0,0,8,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBlock Margin="0,0,8,0" Text="Адрес: " VerticalAlignment="Center"/>
<TextBox Grid.Column="1" VerticalAlignment="Center" PlaceholderText="0x7FFF5000 или 00401000" Text="{x:Bind ViewModel.MemoryAddress, Converter={StaticResource MemoryAddressConverter}, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
</Grid>
<Grid Grid.Column="1" Margin="8,0,0,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBlock Margin="0,0,8,0" Text="Длина: " VerticalAlignment="Center"/>
<NumberBox Grid.Column="1" SmallChange="1" Value="{x:Bind ViewModel.ReadLength, Mode=TwoWay}" Maximum="1024" VerticalAlignment="Center" SpinButtonPlacementMode="Compact"/>
</Grid>
</Grid>
<Button Grid.Row="2" Style="{ThemeResource AccentButtonStyle}" Margin="16" HorizontalAlignment="Stretch" Command="{x:Bind ViewModel.ReadMemoryCommand}">
<Button.Content>
<StackPanel Orientation="Horizontal">
<FontIcon Glyph="&#xE773;" />
<TextBlock Margin="8,0" Text="Прочитать"/>
</StackPanel>
</Button.Content>
</Button>
</Grid>
</Border>
<Border Grid.Row="5" Margin="12" Background="{ThemeResource LayerFillColorDefaultBrush}" CornerRadius="8">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<TextBox Text="{x:Bind ViewModel.WriteData, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" FontSize="{ThemeResource BodyLargeTextBlockFontSize}" Margin="16"/>
<Grid Grid.Row="1" HorizontalAlignment="Stretch" Margin="16,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="3*"/>
<ColumnDefinition Width="2*"/>
</Grid.ColumnDefinitions>
<Grid Margin="0,0,8,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBlock Margin="0,0,8,0" Text="Адрес: " VerticalAlignment="Center"/>
<TextBox Grid.Column="1" VerticalAlignment="Center" PlaceholderText="0x7FFF5000 или 00401000" Text="{x:Bind ViewModel.MemoryAddress, Converter={StaticResource MemoryAddressConverter}, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
</Grid>
<TextBlock Grid.Column="1" Margin="0,0,8,0" VerticalAlignment="Center" HorizontalAlignment="Center">
<Run Text="Длина: "/><Run Text="{x:Bind ViewModel.WriteData.Length, Mode=OneWay}"/>
</TextBlock>
</Grid>
<Button Grid.Row="2" Style="{ThemeResource AccentButtonStyle}" Margin="16" HorizontalAlignment="Stretch" Command="{x:Bind ViewModel.WriteMemoryCommand}">
<Button.Content>
<StackPanel Orientation="Horizontal">
<FontIcon Glyph="&#xE929;" />
<TextBlock Margin="8,0" Text="Записать"/>
</StackPanel>
</Button.Content>
</Button>
</Grid>
</Border>
<InfoBar Severity="Success" Grid.RowSpan="7" VerticalAlignment="Bottom" HorizontalAlignment="Stretch" Margin="16" Title="Записано успешно!" IsOpen="{x:Bind ViewModel.IsSuccessOpen, Mode=TwoWay}"/>
</Grid>
</UserControl>