.NET代码混淆——开源.net 混淆器ConfuserEx介绍
摘要:今天给大家介绍一个开源.net混淆器——ConfuserEx
http://yck1509.github.io/ConfuserEx/
由于项目中要用到.net 混淆器,网上搜寻了很多款,比如Dotfuscator、xeoncode、foxit等等。
但大部分收费,当然也有破解版的,公司要求不能用盗版软件。
阅读全文
posted @
2022-02-17 10:21
上校
阅读(1881)
推荐(0) 编辑
在.NET下如何预防XXE注入攻击
摘要:接下来关于.NET中XXE注入的内容来自Dean Fleming单元测试的Web站点:https://github.com/deanf1/dotnet-security-unit-tests。该站点覆盖了目前.NET下支持的所有XML解析器,且测试用例均展示了哪些情况下它们对于XXE注入而言是安全的,哪些情况下又是不安全的。这些内容更早之前是基于James Jardine这篇关于.NET XXE的杰出文章:https://www.jardinesoftware.net/2016/05/26/xxe-and-net/。与微软这篇在.NET下如何预防XXE以及XML拒绝服务的老文章http://msdn.microsoft.com/en-us/magazine/ee335713.aspx 相比它提供了更新更全的内容,但与Dean Fleming的Web站点覆盖的地方相比还是有些不准确的地方。
阅读全文
posted @
2018-12-29 10:53
上校
阅读(877)
推荐(0) 编辑
C#常使用的正则表达式
摘要:///
/// 是否为手机号码
///
///
///
public static bool IsMobileNo(string value)
{
return Regex.IsMatch(value, @"^1\d{10}$");
}
阅读全文
posted @
2013-07-18 17:33
上校
阅读(330)
推荐(0) 编辑
通过注册表开机启动程序
摘要://此方法把启动项加载到注册表中
//获得应用程序路径
string strAssName = Application.StartupPath + @"\" + Application.ProductName + @".exe";
//获得应用程序名
string ShortFileName = Application.ProductName;
阅读全文
posted @
2013-06-29 23:34
上校
阅读(313)
推荐(0) 编辑
关于串行接口
摘要:串行接口(Serial port)又称“串口”,主要用于串行式逐位数据传输。常见的有一般电脑应用的RS-232(使用 25 针或 9 针连接器)和工业电脑应用的半双工RS-485与全双工RS-422。
串行接口按电气标准及协议来分,包括RS-232-C、RS-422、RS485、USB等。 RS-232-C、RS-422与RS-485标准只对接口的电气特性做出规定,不涉及接插件、电缆或协议。USB是近几年发展起来的新型接口标准,主要应用于高速数据传输领域。
阅读全文
posted @
2013-05-31 22:25
上校
阅读(2842)
推荐(0) 编辑
跨线程访问控件类
摘要:/*******************************************************************************
* InvokeHelper.cs
* A thread-safe control invoker helper class.
* -----------------------------------------------------------------------------
* Project:Conmajia.Controls
阅读全文
posted @
2013-05-28 22:13
上校
阅读(394)
推荐(0) 编辑
[MethodImpl(MethodImplOptions.Synchronized)]、lock(this)与lock(typeof(...))
摘要:对于稍微有点经验的.NET开发人员来说,倘若被问及如何保持线程同步,我想很多人都能说好好几种。在众多的线程同步的可选方式中,加锁无疑是最为常用的。如果仅仅是基于方法级别的线程同步,使用System.Runtime.CompilerServices.MethodImplAttribute无疑是最为简洁的一种方式。MethodImplAttribute可以用于instance method,也可以用于static method。当在某个方法上标注了MethodImplAttribute,并指定MethodImplOptions.Synchronized参数,可以确保在不同线程中运行的该方式以同步的方式运行。我们几天来讨论MethodImplAttribute(MethodImplOptions.Synchronized)和lock的关系。
阅读全文
posted @
2013-05-27 23:49
上校
阅读(4207)
推荐(0) 编辑
WinForm中使用自定义事件
摘要:using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication8
阅读全文
posted @
2013-05-26 20:12
上校
阅读(6822)
推荐(0) 编辑
常用C#调用 Win32 API 收录
摘要:SendMessage(lvPrintData.Handle, WM_VSCROLL, 1, 0);
[DllImport("user32.dll", EntryPoint = "SendMessage")]
static extern int SendMessage(IntPtr hwnd, int wMsg, int wParam, int lParam);
const int WM_VSCROLL = 0x0115;
阅读全文
posted @
2013-05-25 13:37
上校
阅读(315)
推荐(0) 编辑
生成单色BMP图片
摘要:在项目的属性里要勾选 容许不安全代码
public Bitmap ConvertTo24bppTo1bpp(Bitmap SrcImg)
{
unsafe
{
阅读全文
posted @
2013-05-15 19:54
上校
阅读(4109)
推荐(0) 编辑
wince更改桌面
摘要:首先在sdmmc卡根目录中建立一个 shell 文件夹,然后运行附件中的注册表编辑器打开[HKEY_LOCAL_MACHINE\System\Explorer\Shell Floder ,看右面的DESKTOP项,原来是\windows\桌面
,把它更改为\sdmmc\shell然后把原来桌面的快捷方式拷贝到shell这个文件夹,这样再重启机器就不会丢失桌面的快捷方式啦。当然你新加的快捷方式也就不会丢失了,注意!!!注册表编辑器是在 wince底下运行的。
阅读全文
posted @
2013-02-22 17:09
上校
阅读(435)
推荐(0) 编辑
异常处理之ThreadException、unhandledException及多线程异常处理
摘要:异常处理之ThreadException、unhandledException及多线程异常处理
一:ThreadException和unhandledException的区别
处理未捕获的异常是每个应用程序起码有的功能,C#在AppDomain提供了UnhandledException 事件来接收未捕获到的异常的通知。常见的应用如下:
阅读全文
posted @
2013-01-20 15:28
上校
阅读(490)
推荐(0) 编辑
C#操作注册表
摘要:Windows 操作系统的注册表包含了很多有关计算机运行的配置方式,打开注册表我们可以看到注册表是按类似于目录的树结构组织的,其中第二级目录包含了五个预定义主键分别是:HKEY_CLASSES_ROOT,HKEY_CURRENT_USER,HKEY_LOCAL_MACHINE,HKEY_USERS,HKEY_CURRENT_CONFIG。
下面我们来分别解释这5个类的作用
HKEY_CLASSES_ROOT该主键包含了文件的扩展名和应用程序的关联信息以及Window Shell和OLE用于储存注册表的信息。该主键下的子键决定了在WINDOWS中如何显示该类文件以及他们的图标,该主键是从HKEY_LCCAL_MACHINE\SOFTWARE\Classes映射过来的。
HKEY_CURRENT_USER该主键包含了如用户窗口信息,桌面设置等当前用户的信息。
阅读全文
posted @
2013-01-16 22:31
上校
阅读(705)
推荐(0) 编辑
浏览文件按钮
摘要:private string GetPath()
{
OpenFileDialog fileDialog = new OpenFileDialog();
fileDialog.Title = "选择文件";
fileDialog.Filter = "文本文件(*.txt)|*.txt|数据文件(*.dat)|*.dat|所有文件(*.*)|*.*";
fileDialog.FilterIndex = 1;
fileDialog.RestoreDirectory = true;
if (fileDialog.ShowDialog() == DialogResult.OK)
{
return fileDialog.FileName;
}
return string.Empty;
}
阅读全文
posted @
2012-07-02 15:02
上校
阅读(278)
推荐(0) 编辑
防止程序过快生成相同随机数
摘要:static int GetRandomSeed()
{
byte[] bytes = new byte[4];
System.Security.Cryptography.RNGCryptoServiceProvider rng = new System.Security.Cryptography.RNGCryptoServiceProvider();
rng.GetBytes(bytes);
return BitConverter.ToInt32(bytes, 0);
}
阅读全文
posted @
2012-03-30 10:37
上校
阅读(322)
推荐(0) 编辑
VS如何自定义快捷键
摘要:(1)查看和修改某一命令的快捷键在 工具->选项->环境->键盘 里面,注意快捷键都有作用范围,另外查询某个快捷键时,可以直接在 显示命令包含 中输入你的命令名称,会帮你自动搜索出来, 然后就可以在下面修改了,
(2)要把某个命令作为按钮单独拎出来的话, 工具->自定义->命令 里面找到后把它拉出来就行了~~~~
阅读全文
posted @
2012-03-04 00:15
上校
阅读(2941)
推荐(0) 编辑
Visual Studio快速开发以及Visual Studio 2010新功能介绍
摘要:一直以来都在摸索着vb6.0的一些用法和语法,趁这次培训的机会正好整理Visual Studio的一些快速开发的技巧,还有一些vs2010的新功能收集和体会,把培训的一些文档性质的记录下来,希望对各位有用
1.快捷命令:
"devenv" 启动相应版本的 Visual Studio "Inetmgr" IIS 管理器,不用到管理里去找了,很快就可以显示 IIS管理了
复制代码
2.集成开发环境(IDE)
阅读全文
posted @
2011-12-21 23:10
上校
阅读(645)
推荐(0) 编辑
C#托管代码与C++非托管代码互相调用一(C#调用C++代码&.net 代码安全)
摘要:在最近的项目中,牵涉到项目源代码保密问题,由于代码是C#写的,容易被反编译,因此决定抽取核心算法部分使用C++编写,C++到目前为止好像还不能被很好的反编译,当然如果你是反汇编高手的话,也许还是有可能反编译。这样一来,就涉及C#托管代码与C++非托管代码互相调用,于是调查了一些资料,顺便与大家分享一下:源代码下载
一. C# 中静态调用C++动态链接
1. 建立VC工程CppDemo,建立的时候选择Win32 Console(dll),选择Dll。
2. 在DllDemo.cpp文件中添加这些代码。
阅读全文
posted @
2011-12-13 11:12
上校
阅读(630)
推荐(0) 编辑
多线程中控制控件
摘要:private void button1_Click(object sender, EventArgs e)
{
System.Threading.Thread th = new System.Threading.Thread(fun);
th.Start();
button1.Enabled = false;
}
private delegate void MessageDelegate(string message);
private void AddTalkMessage(string message)
{
if (button1.InvokeRequired)
{
MessageDelegate d = new MessageDelegate(AddTalkMessage);
butto
阅读全文
posted @
2011-12-05 21:40
上校
阅读(263)
推荐(0) 编辑
C#多线程学习(六) 互斥对象
摘要:如何控制好多个线程相互之间的联系,不产生冲突和重复,这需要用到互斥对象,即:System.Threading 命名空间中的 Mutex 类。
我们可以把Mutex看作一个出租车,乘客看作线程。乘客首先等车,然后上车,最后下车。当一个乘客在车上时,其他乘客就只有等他下车以后才可以上车。而线程与Mutex对象的关系也正是如此,线程使用Mutex.WaitOne()方法等待Mutex对象被释放,如果它等待的Mutex对象被释放了,它就自动拥有这个对象,直到它调用Mutex.ReleaseMutex()方法释放这个对象,而在此期间,其他想要获取这个Mutex对象的线程都只有等待。
下面这个例子使用了Mutex对象来同步四个线程,主线程等待四个线程的结束,而这四个线程的运行又是与两个Mutex对象相关联的。
其中还用到AutoResetEvent类的对象,可以把它理解为一个信号灯。这里用它的有信号状态来表示一个线程的结束。
阅读全文
posted @
2011-11-12 23:13
上校
阅读(212)
推荐(0) 编辑