吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1628|回复: 11
上一主题 下一主题
收起左侧

[KeyGenMe] 一个net的简单小程序

[复制链接]
跳转到指定楼层
楼主
lzh173 发表于 2026-1-17 10:08 回帖奖励
CM是什么?Crackme是什么?这是什么东西?楼主发的什么?
他们都是一些公开给别人尝试破解的小程序,制作 Crackme 的人可能是程序员,想测试一下自己的软件保护技术,也可能是一位 Cracker,想挑战一下其它 Cracker 的破解实力,也可能是一些正在学习破解的人,自己编一些小程序给自己破解,KeyGenMe是要求别人做出它的 keygen (序号产生器), ReverseMe 要求别人把它的算法做出逆向分析, UnpackMe 是要求别人把它成功脱壳,本版块禁止回复非技术无关水贴。


使用壳:.NET Reactor 7.3.0
新手写的,比较简单,大佬们可以当个练习玩玩

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册[Register]

x

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

推荐
 楼主| lzh173 发表于 2026-1-19 18:14 |楼主
weikun444 发表于 2026-1-19 15:34
去混淆不可能,弄算法更不可能,拖入DNSPY,运行,中断与入口点,单步追,无奈,只能这样了。

dnspy现在已经不行了,建议使用ILspy试试
推荐
466640010 发表于 2026-1-19 20:07

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册[Register]

x

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
lzh173 + 1 + 1 我很赞同!

查看全部评分

4#
tangweisyz 发表于 2026-1-19 12:27
谢谢分享

免费评分

参与人数 1吾爱币 -15 违规 +1 收起 理由
bian96 -15 + 1 警告:CM区等技术板块禁止回复与主题无关非技术内容,违者重罚!

查看全部评分

5#
weikun444 发表于 2026-1-19 15:34
去混淆不可能,弄算法更不可能,拖入DNSPY,运行,中断与入口点,单步追,无奈,只能这样了。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册[Register]

x
6#
ps122 发表于 2026-1-19 20:58
楼上大佬速度好快



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册[Register]

x
7#
heayyy 发表于 2026-1-20 07:18
谢谢分享

免费评分

参与人数 1吾爱币 -15 违规 +1 收起 理由
bian96 -15 + 1 警告:CM区等技术板块禁止回复与主题无关非技术内容,违者重罚!

查看全部评分

8#
xiaowang1993 发表于 2026-1-20 13:59
感谢分享

免费评分

参与人数 1吾爱币 -15 违规 +1 收起 理由
bian96 -15 + 1 警告:CM区等技术板块禁止回复与主题无关非技术内容,违者重罚!

查看全部评分

9#
go4399 发表于 2026-1-21 14:12
本帖最后由 go4399 于 2026-1-21 14:24 编辑

dnSpy单步调试得到

using System.Runtime.CompilerServices;
using System.Text;

namespace Crackme
{
    internal class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Crackme-v1");
            Console.WriteLine("请根据下面的字符串计算出密码");
            Console.WriteLine();
            var text = RandomString(30);
            var text2 = text + "Z";
            Console.WriteLine(text2 ?? "");
            Console.Write("请输入密码: ");
            var text3 = Console.ReadLine();
            var text4 = EncryptString(text, GetKey());
            if (text3 == text4 && text3.Length == 30)
            {
                Console.WriteLine("\n🎉 恭喜!挑战成功!");
                Console.WriteLine("Flag: CTF{" + text4 + "}");
            }
            else
            {
                Console.WriteLine("\n❌ 验证失败!");
                Console.WriteLine("正确答案应该是: " + text4);
                var dish = new DefaultInterpolatedStringHandler(7, 1);
                dish.AppendLiteral("长度: ");
                dish.AppendFormatted(text4.Length);
                dish.AppendLiteral(" 字符");
                Console.WriteLine(dish.ToStringAndClear());
            }
            Console.WriteLine("\n按任意键退出...");
            Console.ReadKey();
        }

        private static string RandomString(int len)
        {
            var text = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
            var sb = new StringBuilder();
            var rand = new Random();
            for (int i = 0; i < len; i++)
            {
                sb.Append(text[rand.Next(text.Length)]);
            }
            return sb.ToString();
        }

        private static byte[] GetKey()
        {
            return
            [
                4, 0, 1, 3, 2, 4, 2, 1, 0, 1, 2,
                4, 1, 2, 3, 4, 3, 4, 2, 4, 1, 4
            ];
        }

        private static string EncryptString(string str, byte[] key)
        {
            foreach (var c in key)
            {
                switch (c)
                {
                case 0:
                    str = Encrypt0(str);
                    break;
                case 1:
                    str = Encrypt1(str);
                    break;
                case 2:
                    str = Encrypt2(str);
                    break;
                case 3:
                    str = Encrypt3(str);
                    break;
                case 4:
                    str = Encrypt4(str);
                    break;
                }
            }
            return str;
        }

        private static string Encrypt0(string str)
        {
            return str.Replace('A', 'Z');
        }

        private static string Encrypt1(string str)
        {
            var text = str.Substring(5, 15);
            return str.Replace(text, "") + text;
        }

        private static string Encrypt2(string str)
        {
            var text = str.Substring(10, 10);
            return text + str.Replace(text, "");
        }

        private static string Encrypt3(string str)
        {
            return str.Replace('Z', 'C');
        }

        private static string Encrypt4(string str)
        {
            return str.Replace('C', 'A');
        }
    }
}
10#
3yu3 发表于 2026-1-21 15:37
本帖最后由 3yu3 于 2026-1-21 15:38 编辑
go4399 发表于 2026-1-21 14:12
[md]dnSpy单步调试得到

```

这么牛,完全还原,啥个方法?
小白只能还原成这样。





本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册[Register]

x
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - 52pojie.cn ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2026-5-13 02:14

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表