简单C#程序加壳

本文探讨了C#程序加壳的一个例子,指出了网上流传示例中的错误,即异步调用BeginInvoke的使用不当。作者提供了一个修正后的示例,演示如何在加壳程序中进行密码验证并正确调用目标程序的Main方法。同时,源代码展示了如何在加壳程序中处理目标程序的静态Main方法和EntryValidation方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

//搞不懂网上那么多关于简单C#程序加壳转载这个的时候都不去验证一下,不去验证也不好好看为什么要去转载呢。
//转载的说是实现简单输入密码后调用程序,密码咱没见到,但是发现最后是BeginInvoke是异步调用,可是根本就没有AsyncCallback之类的影子。本就运行不起来的东西。。。。。。。。。。。。。。。
//咱是菜鸟,没见过世面,大家转载的没发现表明出处,也找不到原文是否也是这样的错误。放在自己的原创里让更多人有机会看到然后再找到原文吧。
//这个博客的源代码控件有点用不了


namespace CurrentNameSpace
{

    class Program
    {

        public delegate void MainDelegatePar(string[] args);

        public delegate void MainDelegateValidation(string strpwd, out bool bResult);

        static void Main(string[] args)
        {

            bool bResult = false;

            Stream streamObj = Assembly.GetExecutingAssembly().GetManifestResourceStream("CurrentNameSpace.YourProgramName.exe");

            byte[] b = new byte[streamObj.Length];

            streamObj.Read(b, 0, b.Length);

            Assembly a = Assembly.Load(b);

            Type[] mytypes = a.GetTypes();

            BindingFlags flags = (BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Static | BindingFlags.Instance | BindingFlags.DeclaredOnly);

        OK: foreach (Type t in mytypes)
            {

                MethodInfo[] mi = t.GetMethods(flags);

                Object obj = Activator.CreateInstance(t);

                foreach (MethodInfo m in mi)
       &n

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值