自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(46)
  • 资源 (5)
  • 收藏
  • 关注

原创 FromHandle与FromChildHandle的区别

我在使用PropertyControl插件的时候,经常遇到一个问题,就是无法用窗口探测器探测到WebBrowser,原因很简单,探测到的句柄本身并不是Control对象,可能是它的一个子控件,而这个控件并没有封装成System.Windows.Forms.Control对象,所以解决办法是:如果FromHandle返回null,则继续枚举其父控件,只到找到为止,本来想自己写的,无意中发现了Fr

2011-06-07 16:21:00 705

原创 Visual Studio调试时,中断在非托管的导出函数

<br />1.项目属性-调试-启用非托管代码调试<br />2.工具-选项-调试-本机,加载DLL导出

2011-04-01 08:02:00 576 1

原创 引用类型与地址之间的转换

<br />很早之前就在网上找到引用对象转地址的方法,后来自己研究出了地址转引用类型的方法,当时很兴奋,还准备把自己的研究过程写下来。<br /> <br />今天要用下这个功能,居然发现没有任何记录,敢情当初忘了写了?<br /> <br />又费了好半天功能,才把这个功能重写了一次,这次就不写过程了,直接上代码:<br /> <br /> <br /> IntPtr ObjectToAddress(object obj) { GCHandle g

2011-03-31 11:58:00 434

原创 托管函数的挂钩(完美版)

我之前发过一篇叫“托管函数的挂钩”的文章,实现了对MarshalByRefObject继承树下的实例函数的挂钩。最近,在CodeProject上看到一个关于托管函数挂钩的文章,发现作者的方法很好用,但是正好不能用于MarshalByRefObject继承树下的实例函数(作者本人并没有发现这个问题),于是两种方法正好互补你也许要用,我为什么要强调MarshalByRefObject继承树呢?这是因为非常多的类都存在于该类的继承树下,比如很多人习惯把代码写在自己的窗体类中,而Form就在MarshalByRef

2011-03-20 11:52:00 961

原创 注意了,由于代码优化,可能导致调试时源代码不匹配

最近出现一怪事:调试时断点不匹配,而且找不到标识符例如:void Foo(){int a=SomeMethod();//断点在这一行Console.WriteLine("OK");}我把断点设在第一行,调试时居然自动跑到第二行去了;而且我想在监视窗口中看一下a的值,结果提示我当前上下文不存在名称a类似的问题出现好几次了,我的感觉就是符号文件出问题了,Clean之后问题依旧今天又遇到这个问题了,突然一想,会不会是因为编译成Release的原因呢?(手头这个项目之前已经完成了,最近有点改动,所以没有改成Debu

2010-08-10 16:14:00 697

原创 发送电子邮件

很早之前就用过,不过每次要使用的时候还是要在网上查一下,所以干脆写下来,以备后用。为了方便使用,做了几个重载:public class EMailSender{ public static void SendEMail(string senderAddress, string password, string host, string receiverAddress, string subject, string body, string attachmentFile = null, stri

2010-08-10 15:05:00 628

原创 解决使用用户控件时,由于使用了当前路径导致设计器不能正常工作的问题

当在用户控件中使用当前路径时,如果使用下列方法,可能会导致设计器不能正常工作: Environment.CurrentDirectoryPath.GetDirectoryName(Process.GetCurrentProcess().MainModule.FileName)Path.GetDirectoryName(Assembly.GetEntryAssembly().Loca

2010-04-02 16:43:00 444

原创 WPF版的WindowFromPoint

在Win32 API中,有一个非常有用的函数,叫做:WindowFromPoint而在WPF中,有一个类型的函数,叫做:HitTest(InputHitTest),但是这个函数探测的太深了,往往会探测到控件的子元素上去于是我写了一个WPF版的WindowFromPoint函数,为了在一个函数里实现全部的功能,使用了Lambda表达式的递归实现(估且叫伪递归吧),所以对很多人来说,可能会显然

2010-03-10 00:27:00 985

原创 WPF学习心得(3)——触发器

WPF学习心得(3)  触发器 触发器包括以下几种:属性触发器 EventTrigger 和 Storyboard MultiTrigger、DataTrigger 和 MultiDataTrigger 本系统讨论其中的两种:属性触发器和事件触发器,由于属性只能出现在样式中,故本文只讨论事件触发器,属性触发器的内容将在样式一章中涉及。 示例代码如下:

2009-12-17 15:11:00 1276

原创 WPF学习心得(2)——模板

WPF学习心得(2)  模板 首先声明,我这里所说的模板,专指WPF中的控件模板(ControlTemplate),而其它的一些模板,如数据模板(DataTemplate)等不在本文的讨论范畴。 模板适用于这样一种场合:控件在功能上满足程序的要求,但界面上不能(或不方便)满足程序的要求,比如说:我们更改一个控件的外观,都是基于其已有的属性——要更改其背景色,设置Back

2009-12-16 16:36:00 1068

原创 WPF学习心得(1)——资源

WPF学习心得(1)  资源    WPF中的资源一般是指资源字典(DictionaryResource)中的元素,可以把任何对象置于其中以便访问。    要获得一个资源字典,可以新建:ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"    x

2009-12-15 15:14:00 1454 1

转载 C#程序集加载方法

 原文: http://blog.csdn.net/podded/archive/2008/10/27/3158687.aspx  要从程序集的元数据中获取程序集的信息,首先需要加载程序集。.Net中加载程序集方法有几种,本人结合自己的实践和认识简单介绍一下。描述不一定很准确,请提出来一起进步。一、隐式加载        没有被显式加载但被引用的程序集,CLR会按照全局程序集缓存(GA

2009-11-27 11:04:00 2354 1

原创 如何用代码打开系统的“运行”对话框

如何用代码打开系统的“运行”对话框这个问题我很早之前就知道了,但今天要用的时候,居然给忘了,查了好半天才搞出来,所以这里有必要记录一下,另外也可以了解一下COM的调用及C#4.0中的Dynamic Lookup。所谓“运行”对话框,就是开始菜单里的那个运行,其快捷键为Windows+R,相信很多人都用过,我这里介绍三种方法来打开“运行”对话框:一、模拟按键由于.NET类库里的Sen

2009-11-10 13:26:00 2175

原创 对象的深层拷贝

遇到这么个问题,没有参考任何资料,自己想了个方法对于自定义的一些简单类型还好,遇到.Net里一些复杂的类就无能为力了,不知道还有什么更好的方法。  class CsToD{    //基本思想是:一个对象所占据的内存空间,取决于它的实例字段(包括继承树上的私有实例字段)    public T DeepCloneObject(T obj) where T : class    { 

2009-07-29 14:15:00 1020

原创 如何获得一个对象的引用的类型

很早就有一个疑问:class Father{}class Son:Father{}Father obj=new Son();如何写一个方法,得到obj的引用的类型为Father,而其本身的类型为Son呢? 以前只知道调用obj.GetType()就得到了其自身的类型Son,但是一直不知道怎么得到其引用的类型,这两天不经意间研究出来了一个方法:  vo

2009-07-26 11:28:00 482

原创 对象的深拷贝

今天遇到一个问题,如何深层拷贝一个对象? 想了一个方法,前提是所有相关类型都必须具有公共、无参、实例构造函数。  public object DeepCloneObject(object obj) { object newObj = Activator.CreateInstance(obj.GetType()); foreach

2009-07-24 17:19:00 346

原创 正则小技巧

 前两天在CSDN看到这样一个问题:给定一段文字的编码序列,如604F20007D59(你 好),如何得到其对应的文字有人给出了如下正则解决方案:            string input = "4F600020597D";            string patern = "(?            string output = Regex.Unescape(Regex.R

2009-07-21 09:10:00 300

原创 拆分字符串的几个技巧

1、  如何获得一个已知的字符串数组?例如你可能会这样做:String[]strs={“one”,”two”,”three”,”four”};这样显得有点复杂,更为简单的方法是:String[]strs=”one two three four”.Split();2、  如何获得一个已知的字符数组?跟上面类似,应该这样:Char[]cs=”abcde”.ToCharArr

2009-06-29 09:09:00 521

原创 托管函数的挂钩

很早以前就想研究一下托管函数的挂钩,但是一直没有成功。前段时间又尝试了一次,竟然成功了,这让我十分的困惑——因为我几乎没有对代码做任何改变! 这次实验距离以前已经有很长时间了,我实在想不出有什么不同之处,唯一的区别就是以前用的是控制台程序,这次是WinForm程序,但我想不可能是这个原因吧?不过我还是尝试了一下,未曾料到竟真是如此! 我当然不会相信这样的灵异事件! 于是我想

2009-06-28 21:33:00 667

原创 C#深入剖析(2)——析构函数

第二篇    析构函数 析构函数在C#中已经很少使用了,以至于很多人已经把它淡忘了,虽然用处不大,研究一下也无妨。 一. 析构函数的特征: 析构函数只能存在于类中,而不能存在于结构中;析构函数不能有任何修饰符,包括访问控制修饰符,静态修饰符,抽象修饰符,虚拟修饰符等都不能有;析构函数没有参数,这就意味着不能有任何重载。 二. 析构函数的调用时机: 析构函数会在对象被垃圾收集器回收时调用,但垃圾收集

2009-06-16 23:00:00 709

原创 C#深入剖析(1)——事件

准备写一个系列文章,深入探讨C#及.Net中的某些特性。 第一篇    事件 事件相信每个人都不陌生,随便一个WinForm程序,就会使用大量的事件,比如:     C# code <!--Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/

2009-06-15 22:35:00 656 3

原创 本地缓冲区溢出

今天看了下缓冲区溢出,总算是了解了个大概,并且尝试了本地的缓冲区溢出,代码如下:#includechar strShellcode[] ="/x41/x41/x41/x41""/x41/x41/x41/x41""/x22/x33/x44/x55""/x12/x45/xfa/x7f"//以下是shellcode 开dos窗口"/x55/x8B/xEC/x33/xC0/

2009-06-14 22:04:00 457 1

原创 继续多线程、异步的研究

今天继续研究了下多线程、异步,并对昨天的代码进行了多次修改,已在上篇文章中更新了。 通过对于实现异步的多种方式,发现还是直接开线程最快,另外.Net提供了一些便利的方法,比如线程池、异步委托,不过效率都较之直接开线程慢,我估计异步委托就是用线程池来做的,因为两者效率差不多。另外还有许多类提供了Begin.. End..之类的方法来实现异步调用,很奇怪的事,居然IAsyncResult接

2009-06-13 22:13:00 278

原创 多线程端口扫描

今天在论坛发了一个帖子:【200分】多线程问题最后我把代码封装了一下:   public class PortScan{ public static void ScanOpenedPorts(int count, string host, int start, int end, Action portReady, Action completed) {

2009-06-12 22:34:00 426

原创 溢出

这两天终于溢出成功了!昨天我尝试入侵我所在IP段的机器,居然正好是我们班的,这个世界真是太小了,呵呵。不过今天在网吧就没那么幸运了,服务没开,又是强制来宾,我也是无能为力啊。

2009-06-11 21:03:00 404

转载 由struct的静态构造函数说起

转自路西菲尔的文章,原文在这里 最近才知道struct和class的静态构造函数的触发规则是不同的,不像class在第一次使用类的时候触发静态构造函数。如果只访问struct实例的字段是不会触发静态构造函数调用的。通过测试发现当访问静态字段,struct本身的函数(静态和实例)和带参数的构造函数就会引起静态构造函数的执行。而调用默认构造和未覆写的基类虚函数是不会的。为什么呢?    让我们

2009-06-09 21:40:00 370

原创 用正则表达式更新源字符串

问题源于这个帖子:http://topic.csdn.net/u/20090608/11/6118ebe2-5ed5-4305-9947-d9573a26e764.html?seed=1379233329 我把这个问题转换成了7,9楼所述,最后我的实现方法是:     class CsToD    {        private string[] groups;       

2009-06-08 22:04:00 220

转载 类和结构的区别

 来源于 C#编程语言详解(第2版)    11.3  类和结构的区别结构在以下几个重要方面与类不同:— 结构是值类型(参见11.3.1小节)。— 所有结构类型都隐式地继承自类System.ValueType(参见11.3.2小节)。— 对结构类型的变量进行赋值,将创建所赋的值的一个“副本”(参见11.3.3小节)。— 结构的默认值的生成方式为:将所有值类型的域设置为它

2009-06-07 22:24:00 523

原创 自定义超时

这是一个很有意思的话题:很多时候,一个操作如果成功的话,很快就会得到响应,反正,只有当长时间没有响应,我们才能确定该操作失败。例如Ping一个主机,如果主机可以连接的话,马上就有反应;反之,如果对于Ping命令,主机长时间不响应,我们才能认定主机无法连通。所以这里有个TimeOut的问题。问题是,很多操作并不提供一个设置超时的方法,例如通过Dns.GetHostByAddress解析主

2009-06-06 22:12:00 363

原创 托管注入深入研究 (《黑客防线》2008.12)

这是我发表在《黑客防线》2008年12期上的一篇文章,这里是网络上的首发。 附件是我写的一个工具“超级间谍(SuperSpy)”,主要包括一个窗口探测功能,甚至能够探测到VC自带的SPY++所不能探测到的窗口;当然,还包括这里提到的“托管注入”功能。 程序需运行在.Net2.0以上,如果需要使用注入功能,则需要.Net3.5以上。 超级间谍下载地址: http://download.csdn.ne

2009-06-05 22:12:00 1166 4

原创 随便写点

今天看了下StringFormat类;对正则表达式里分组的捕获有了更深地了解。

2009-06-04 21:49:00 328 1

转载 第四章 关键字和操作符

-4- 关键字和操作符 位于return语句之后的代码是不会被执行的。在下面给出的第1个程序中,你将发现在C#中有一个WriteLine函数调用,但是在我们的IL代码中却看不到。这是因为编译器意识到任何return之后的语句都不会被执行,从而,也就不用将其转换到IL中了。a.csclass zzz{public static void Main(){retu

2009-06-03 20:38:00 495

原创 Parse方法解析字符串

今天才注意到Parse方法解析字符串时可以通过NumberStyles枚举和IFormatProvider接口分析字符串的格式。

2009-06-02 21:43:00 550

转载 第三章 选择和循环

-3- 在IL中,标号(label)是一个末尾带有冒号(即:)的名称。它使我们能够从代码的一部分无条件地跳转到另一部分。我们经常在由反编译器生成的IL代码中看到这个标号。例如:IL_0000: ldstr      "hi"IL_0005: call       void [mscorlib]System.Console::WriteLine(class System.String

2009-06-01 15:28:00 366

转载 第二章 IL基础

      如果你真的想要理解C#代码,那么最好的方法就是通过理解由C#编译器生成的代码。本章和下面两章将关注于此,请相信我们。      因此,我们将用一个小的C#程序揭露并解释有编译器生成的IL代码。通过这样做,我们就可以“一箭双雕”了:首先,我们将能够揭开IL的神秘,其次我们将更直观地理解C#编程语言。      我们将首先向你展示一个.cs文件,并随后由C#编译器用IL编写一个程序

2009-05-31 07:16:00 626 1

原创 出来混,迟早是要还的

今天打星际遇到一个人族高手,把我给打服了,这样的高手起码半年没遇到了。出来混,迟早是要还的。

2009-05-30 22:37:00 388 3

转载 第一章 IL入门

转自包建强的翻译文章,原文在这里,后续文章不再说明。-1-      我们用C#、VB.NET语言编写的代码最终都会被编译成程序集或IL。因此用VB.NET编写的代码可以在C#中修改,随后在COBOL中使用。因此,理解IL是非常有必要的。      一旦熟悉了IL,理解.NET技术就不会有障碍了,因为所有的.NET语言都会编译为IL。IL是一门中性语言。IL是先发明的,随后才有了C

2009-05-29 18:12:00 925

转载 一段很优雅的Linq代码

来自MSDNusing System;using System.IO;using System.Linq;class Program{    static void Main(string[] args)    {        try        {            var files = from file in Directory.EnumerateFiles(@"c:/

2009-05-28 06:47:00 359

原创 在VB.NET中使用转义字符

VB.NET 里面不太好表达转义字符,通常的方法是用字符串连接的方法比如要表达一个跟C#中"I/r/nlove/r/nyou"相同的字符串,需要这样写:"I" + vbCrLf + "love" + Chr(10) + Chr(13) + "you"实在是太麻烦了。其实有简单的方法,如下:Regex.Unescape("I/r/nlove/r/nyou")其中Regex位于

2009-05-27 20:37:00 1144

原创 结构内存布局

本来打算写一篇文章,详细地讨论一下结构的内存布局,但是想了下,跟路西菲尔的这篇文章也差不多,所以这里只做一下补充:一、对齐长度如果没有显式的指定对齐长度,将以结构中占用空间最大的成员的长度作为对齐长度;如果要显式指定对齐长度,需设置StructLayoutAttribute.Pack,如:    [StructLayout(LayoutKind.Sequential,Pack=4)] 

2009-05-26 20:14:00 428

.Net远程注入工具SuperSpy

.Net下的远程注入工具,支持插件,可自行扩展其功能

2010-11-22

文件分割

因为遇到问题,还没有完善

2008-07-24

自己写的简易C#编译器

功能很简单,望大家见谅

2008-07-23

程序员秘书

大家直接反编译

2008-03-21

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除