我知道这是一个奇怪的请求,但我需要混淆原始的c#源代码.
虽然这是一个坏主意,但c#代码将通过CSharpCodeProvider在客户端编译.c#中是否存在任何用于混淆源代码的类?或者,是否有第三方图书馆这样做?
我曾考虑使用Roslyn和手动变量重命名,但我找不到任何有关如何做到这一点的信息.有谁知道如何使用Roslyn重命名变量(并加载解决方案)?
我尝试过手动语法分析器,但效果不佳.
到目前为止我做了什么:
删除了所有评论.
删除了所有换行符和空格.
将所有不同项目中的所有文件放入一个包含随机25个字符的字母数字名称的文件夹中.
在代码行中添加了随机注释.不会阻止任何人,但让我头疼的阅读public /*SJKDSJKDJ398sLAjljKKxklw*/int /*SDSDSJCJKIORIO*/ privateServerKey = /*SDKSDKSDFKJSFKJ*/ ...
我尝试挂钩CopyFile2
函数,为此我编写了这个 dll:
#include "..\..\..\minhook-1.3.3\include\MinHook.h"
WCHAR msgbuf[1024];
#define DbgPrint(format, ...) wsprintf(msgbuf, format, __VA_ARGS__); \
OutputDebugString(msgbuf);
#if defined _M_X64
#pragma comment(lib, "libMinHook.x64.lib")
#elif defined _M_IX86
#pragma comment(lib, "libMinHook.x86.lib")
#endif
typedef HRESULT(WINAPI *COPY_FILE_2)(
_In_ PCWSTR pwszExistingFileName,
_In_ PCWSTR pwszNewFileName,
_In_opt_ COPYFILE2_EXTENDED_PARAMETERS *pExtendedParameters
);
COPY_FILE_2 fpCopyFile2 = NULL;
HRESULT WINAPI DetourCopyFile2(
_In_ PCWSTR pwszExistingFileName,
_In_ PCWSTR pwszNewFileName,
_In_opt_ COPYFILE2_EXTENDED_PARAMETERS *pExtendedParameters
)
{
DbgPrint(L"=> DetourCopyFile2\n");
DbgPrint(L"DetourCopyFile2.pwszExistingFileName = %ws\n", pwszExistingFileName);
DbgPrint(L"DetourCopyFile2.pwszNewFileName = %ws\n", pwszNewFileName);
return fpCopyFile2(pwszExistingFileName, pwszNewFileName, pExtendedParameters);
}
void InstallHook()
{
DbgPrint(L"=> InstallHook\n"); …
Run Code Online (Sandbox Code Playgroud) 我对这段代码感到好奇:
int a = 'ftyp'; // a == 1718909296
int b = *((int*)"ftyp"); // b == 1887007846
Run Code Online (Sandbox Code Playgroud)
我的问题:为什么一个!= b?
我尝试让按钮的外观像 CSS 中一样,您可以在此处看到。当你按下这个按钮时,它看起来就像进去了一样。
以下是我的XAML
尝试,我使用了DropShadowEffect
,但与CSS中的不完全一样。
我怎样才能实现与CSS完全相同的效果?
是否可以将 CSS 转换为 XAML?
<Window x:Class="Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
Title="Window1" Height="250" Width="400">
<Window.Resources>
<Style x:Key="FocusVisual">
<Setter Property="Control.Template">
<Setter.Value>
<ControlTemplate>
<Rectangle Margin="2" SnapsToDevicePixels="true" Stroke="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" StrokeThickness="1" StrokeDashArray="1 2"/>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<SolidColorBrush x:Key="Button.Static.Background" Color="#FFDDDDDD"/>
<SolidColorBrush x:Key="Button.Static.Border" Color="#FF707070"/>
<SolidColorBrush x:Key="Button.MouseOver.Background" Color="#FFBEE6FD"/>
<SolidColorBrush x:Key="Button.MouseOver.Border" Color="#FF3C7FB1"/>
<SolidColorBrush x:Key="Button.Pressed.Background" Color="#FFC4E5F6"/>
<SolidColorBrush x:Key="Button.Pressed.Border" Color="#FF2C628B"/>
<SolidColorBrush x:Key="Button.Disabled.Background" Color="#FFF4F4F4"/>
<SolidColorBrush x:Key="Button.Disabled.Border" Color="#FFADB2B5"/>
<SolidColorBrush x:Key="Button.Disabled.Foreground" Color="#FF838383"/>
<Style TargetType="{x:Type Button}">
<Setter Property="FocusVisualStyle" Value="{StaticResource FocusVisual}"/>
<Setter …
Run Code Online (Sandbox Code Playgroud)