有什么工具可以批量生成垃圾代码吗?

时间:2020-12-03 09:06:16

请问各位大神,网上是否有可以批量生成垃圾代码,增加代码量的工具呢?

本人小白,最近在学习C#的混淆加壳资料,发现大多数的混淆和加壳工具都是针对exe和dll文件进行加密的。
通过工具脱壳反编译后,源码基本都可以看的到,破解成本很低。


所以我想通过在C#源码中添加大量垃圾代码来隐藏实际代码,然后再经过混淆加密,相对而言增加了破解的成本。
这些垃圾代码可以自己写,不过工作量有点大,所以想问问是否有适合的工具来生成大量的垃圾代码呢?

8 个解决方案

#1


建议你使用表达式树在运行时产生代码,这样调试非常困难。

#2


using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Expression<Action<int, int>> CalcSum100 = null;     
            CalcSum100 = (i, sum) => (i > 100 ? (Expression<Action>)(() => Console.WriteLine(sum)) : (Expression<Action>)(() => CalcSum100.Compile()(i + 1, sum + i))).Compile()();
            CalcSum100.Compile()(1, 0);
        }
    }
}

比如这是计算1+2+...+100的代码,你反编译看看

#3


引用 2 楼 caozhy 的回复:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Expression<Action<int, int>> CalcSum100 = null;     
            CalcSum100 = (i, sum) => (i > 100 ? (Expression<Action>)(() => Console.WriteLine(sum)) : (Expression<Action>)(() => CalcSum100.Compile()(i + 1, sum + i))).Compile()();
            CalcSum100.Compile()(1, 0);
        }
    }
}

比如这是计算1+2+...+100的代码,你反编译看看

牛逼!

#4


引用 2 楼 caozhy 的回复:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Expression<Action<int, int>> CalcSum100 = null;     
            CalcSum100 = (i, sum) => (i > 100 ? (Expression<Action>)(() => Console.WriteLine(sum)) : (Expression<Action>)(() => CalcSum100.Compile()(i + 1, sum + i))).Compile()();
            CalcSum100.Compile()(1, 0);
        }
    }
}

比如这是计算1+2+...+100的代码,你反编译看看

我用ILSpy (版本2.4.0.1963)成功反编译了啊

#5


引用 1 楼 caozhy 的回复:
建议你使用表达式树在运行时产生代码,这样调试非常困难。
有什么工具可以批量生成垃圾代码吗?

#6


垃圾代码并没有什么用,看代码的时候难道还一行行琢磨么?

#7


确实没有什么难度
有什么工具可以批量生成垃圾代码吗?

#8


引用 2 楼 caozhy 的回复:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Expression<Action<int, int>> CalcSum100 = null;     
            CalcSum100 = (i, sum) => (i > 100 ? (Expression<Action>)(() => Console.WriteLine(sum)) : (Expression<Action>)(() => CalcSum100.Compile()(i + 1, sum + i))).Compile()();
            CalcSum100.Compile()(1, 0);
        }
    }
}

比如这是计算1+2+...+100的代码,你反编译看看


我用reflector反编译,还是可以直接看到源码的。  不过利用这样形式把代码简单代码复杂化,好像也是一个方法。

#1


建议你使用表达式树在运行时产生代码,这样调试非常困难。

#2


using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Expression<Action<int, int>> CalcSum100 = null;     
            CalcSum100 = (i, sum) => (i > 100 ? (Expression<Action>)(() => Console.WriteLine(sum)) : (Expression<Action>)(() => CalcSum100.Compile()(i + 1, sum + i))).Compile()();
            CalcSum100.Compile()(1, 0);
        }
    }
}

比如这是计算1+2+...+100的代码,你反编译看看

#3


引用 2 楼 caozhy 的回复:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Expression<Action<int, int>> CalcSum100 = null;     
            CalcSum100 = (i, sum) => (i > 100 ? (Expression<Action>)(() => Console.WriteLine(sum)) : (Expression<Action>)(() => CalcSum100.Compile()(i + 1, sum + i))).Compile()();
            CalcSum100.Compile()(1, 0);
        }
    }
}

比如这是计算1+2+...+100的代码,你反编译看看

牛逼!

#4


引用 2 楼 caozhy 的回复:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Expression<Action<int, int>> CalcSum100 = null;     
            CalcSum100 = (i, sum) => (i > 100 ? (Expression<Action>)(() => Console.WriteLine(sum)) : (Expression<Action>)(() => CalcSum100.Compile()(i + 1, sum + i))).Compile()();
            CalcSum100.Compile()(1, 0);
        }
    }
}

比如这是计算1+2+...+100的代码,你反编译看看

我用ILSpy (版本2.4.0.1963)成功反编译了啊

#5


引用 1 楼 caozhy 的回复:
建议你使用表达式树在运行时产生代码,这样调试非常困难。
有什么工具可以批量生成垃圾代码吗?

#6


垃圾代码并没有什么用,看代码的时候难道还一行行琢磨么?

#7


确实没有什么难度
有什么工具可以批量生成垃圾代码吗?

#8


引用 2 楼 caozhy 的回复:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Expression<Action<int, int>> CalcSum100 = null;     
            CalcSum100 = (i, sum) => (i > 100 ? (Expression<Action>)(() => Console.WriteLine(sum)) : (Expression<Action>)(() => CalcSum100.Compile()(i + 1, sum + i))).Compile()();
            CalcSum100.Compile()(1, 0);
        }
    }
}

比如这是计算1+2+...+100的代码,你反编译看看


我用reflector反编译,还是可以直接看到源码的。  不过利用这样形式把代码简单代码复杂化,好像也是一个方法。