C# – Useful code listings

1. List all properties and their values

static void Main(string[] args)
{
	string fileName = Path.Combine(Directory.GetCurrentDirectory(), "All Polished.mp4");
	ShellObject shellObject= ShellObject.FromParsingName(fileName);
	PropertyInfo[] propertyInfos = shellObject.Properties.System.GetType().GetProperties();
	foreach (var propertyInfo in propertyInfos)
	{
		object value = propertyInfo.GetValue(shellObject.Properties.System, null);

		if (value is ShellProperty<int?>)
		{
			var nullableIntValue = (value as ShellProperty<int?>).Value;
			Console.WriteLine($"{propertyInfo.Name} - {nullableIntValue}");
		}
		else if (value is ShellProperty<ulong?>)
		{
			var nullableLongValue =
				(value as ShellProperty<ulong?>).Value;
			Console.WriteLine($"{propertyInfo.Name} - {nullableLongValue}");
		}
		else if (value is ShellProperty<string>)
		{
			var stringValue =
				(value as ShellProperty<string>).Value;
			Console.WriteLine($"{propertyInfo.Name} - {stringValue}");
		}
		else if (value is ShellProperty<object>)
		{
			var objectValue =
				(value as ShellProperty<object>).Value;
			Console.WriteLine($"{propertyInfo.Name} - {objectValue}");
		}
		else
		{
			Console.WriteLine($"{propertyInfo.Name} - Dummy value");
		}
	}
	Console.ReadLine();
}

FluentValidation

https://github.com/JeremySkinner/FluentValidation

NodaTime

http://nodatime.org/

Quartz.net

http://www.quartz-scheduler.net/

Create Patcher

Hiện nay patcher đã không còn là một thuật ngữ xa lạ với các Cracker cũng như các Reverser trên thế giới. Và ngay cả người dùng bình thường cũng đã nhiều lần nghe đến thuật ngữ này khi phải down các bản patch vá lỗi của Windows.
• Như vậy, patch có thể hiểu là các gói phần mềm nhỏ để sửa đổi, bổ sung một phần mềm lớn đã được phát hành. Thế mạnh của các bản patch chính là sử nhỏ gọn và tính tức thời. Lấy Windows làm ví dụ, khi Microsoft phát hiện ra một lỗi bảo mật của Windows, họ sẽ tung ra các bản vá lỗi. Thực chất các bản vá lỗi này chính là các bản patch. Sau khi người dùng cuối down các bản patch này về, các bản patch sẽ tự động sửa chữa các tập tin, các config gây nên lỗi bảo mật đó.
• Tuy nhiên, cùng với sự phát triển nhanh chóng của IT thì “nghĩa” của từ patch, cũng như mục đích của nó đã dần thay đổi, nhất là trong lĩnh vực Reverse. Trong lĩnh vực này, patch đồng nghĩa với việc thay đổi thuộc tính của một chương trình theo ý muốn của một Cracker. Và đặc biệt patch được sử dụng rất nhiều trong việc bẻ khóa phần mềm (Lưu ý: Cracker = Criminal Hacker có nghĩa không chỉ là những người bẻ khóa phần mềm).

Continue reading Create Patcher