吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2597|回复: 20
收起左侧

[CrackMe] 来一个简单的CM,欢迎爆破或追码

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

今天做了一道CTF,把它算法部分抽出来做了一个简单的CM,欢迎大家尝试!
VS2015静态编译,32位程序,XP可运行。

爆破,追码,逆算法都可以。

成功:会输出源码压缩包密码,能解压源码压缩包。




PS:爆破真的很简单,别想复杂了,追码不知道,没试。

本帖子中包含更多资源

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

x

免费评分

参与人数 3吾爱币 +8 热心值 +2 收起 理由
万里绿枫叶 + 1 + 1 我很赞同!
CrazyNut + 6 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
bubumao + 1 我很赞同!

查看全部评分

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

jiaocoll 发表于 2020-5-17 18:07
1.我首先尝试了爆破,然后得到了解压缩包密码








之后进入到源码进行查看,现已把源码进行了修改编译,得到了真正的密码
当然自己对它的源码进行了稍微修改,从而避免了一个打印失败的bug
[C] 纯文本查看 复制代码
#include <stdio.h>
#include <string.h>

int main()
{
        //密码表
        int arr[126] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0xCC, 0x3D, 0xCC, 0x9B, 0x33,
                0xC2, 0x33, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0x01, 0x00,
                0x00, 0x00, 0x7E, 0x7D, 0x7C, 0x7B, 0x7A, 0x79, 0x78, 0x77, 0x76, 0x75, 0x74, 0x73, 0x72, 0x71,
                0x70, 0x6F, 0x6E, 0x6D, 0x6C, 0x6B, 0x6A, 0x69, 0x68, 0x67, 0x66, 0x65, 0x64, 0x63, 0x62, 0x61,
                0x60, 0x5F, 0x5E, 0x5D, 0x5C, 0x5B, 0x5A, 0x59, 0x58, 0x57, 0x56, 0x55, 0x54, 0x53, 0x52, 0x51,
                0x50, 0x4F, 0x4E, 0x4D, 0x4C, 0x4B, 0x4A, 0x49, 0x48, 0x47, 0x46, 0x45, 0x44, 0x43, 0x42, 0x41,
                0x40, 0x3F, 0x3E, 0x3D, 0x3C, 0x3B, 0x3A, 0x39, 0x38, 0x37, 0x36, 0x35, 0x34, 0x33, 0x32, 0x31,
                0x30, 0x2F, 0x2E, 0x2D, 0x2C, 0x2B, 0x2A, 0x29, 0x28, 0x27, 0x26, 0x25, 0x24, 0x23, 0x22, 0x21 };

        char ch[20] = {0x44,0x44,0x43,0x54,0x46,0x7B,0x72,0x65,0x76,0x65,0x72,0x73,0x65,0x4D,0x45,0x7D};//密码
        char input[20] = {90,90,91,74,88,35,44,57,40,57,44,43,57,81,89,33};
        for (int i = 0;i<20;i++)//DDCTF{reverseME},逐个比较
        {
                for (int j = 0; j < 126; j++)//查找下标
                {
                        if (arr[j] == ch[i])//找到下标,替换成ASCII字符
                        {
                                ch[i] = j;
                                break;//开始下一次循环
                        }
                }
        }
        for(int i=0;i<20;i++)
        {
            printf("%d",ch[i]);
        }
        printf("\n");
        if (!strcmp(ch, input))
        {
                printf("you are successful!");
        }
    else
    {
            printf("you have filed!");
    }
return 0;
}



本帖子中包含更多资源

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

x

免费评分

参与人数 1吾爱币 +3 热心值 +1 收起 理由
CrazyNut + 3 + 1 用心讨论,共获提升!

查看全部评分

玖公子 发表于 2020-5-17 16:56
细水流长 发表于 2020-5-17 15:24
爆破的确很简单,我想看看源码,密码是什么?

试了试大佬你爆破出来的字符串,成功打开压缩包,密码就是:you are successful!
你们好厉害。
[C] 纯文本查看 复制代码
#include "main.h"

int main()
{
	//密码表
	int arr[126] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0xCC, 0x3D, 0xCC, 0x9B, 0x33,
		0xC2, 0x33, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0x01, 0x00,
		0x00, 0x00, 0x7E, 0x7D, 0x7C, 0x7B, 0x7A, 0x79, 0x78, 0x77, 0x76, 0x75, 0x74, 0x73, 0x72, 0x71,
		0x70, 0x6F, 0x6E, 0x6D, 0x6C, 0x6B, 0x6A, 0x69, 0x68, 0x67, 0x66, 0x65, 0x64, 0x63, 0x62, 0x61,
		0x60, 0x5F, 0x5E, 0x5D, 0x5C, 0x5B, 0x5A, 0x59, 0x58, 0x57, 0x56, 0x55, 0x54, 0x53, 0x52, 0x51,
		0x50, 0x4F, 0x4E, 0x4D, 0x4C, 0x4B, 0x4A, 0x49, 0x48, 0x47, 0x46, 0x45, 0x44, 0x43, 0x42, 0x41,
		0x40, 0x3F, 0x3E, 0x3D, 0x3C, 0x3B, 0x3A, 0x39, 0x38, 0x37, 0x36, 0x35, 0x34, 0x33, 0x32, 0x31,
		0x30, 0x2F, 0x2E, 0x2D, 0x2C, 0x2B, 0x2A, 0x29, 0x28, 0x27, 0x26, 0x25, 0x24, 0x23, 0x22, 0x21 };

	char ch[20] = "DDCTF{reverseME}";//密码
	char *input = (char *)malloc(sizeof(char) * 20);
	scanf_s("%s", input);

	if (!strlen(input))
	{
		printf("you have filed!");
	}

	for (int i = 0; input[i] != 0;i++)//DDCTF{reverseME},逐个比较
	{
		for (int j = 0; j < 126; j++)//查找下标
		{
			if (arr[j] == ch[i])//找到下标,替换成ASCII字符
			{
				ch[i] = j;
				break;//开始下一次循环
			}
		}
	}
	
	if (!strcmp(ch, input))
	{
		printf("you are successful!");
	}

	printf("you have filed!");

	system("pause");
	return 0;
}

免费评分

参与人数 2吾爱币 +3 热心值 +2 收起 理由
万里绿枫叶 + 1 + 1 用心讨论,共获提升!
CrazyNut + 2 + 1 用心讨论,共获提升!

查看全部评分

头像被屏蔽
细水流长 发表于 2020-5-17 15:24
1343450392 发表于 2020-5-17 15:45
很激动呀,第一次爆破成功,花了15分钟左右,这个程序不吃断点,0040129D这里跳转未实现改成实现,继续单步到004012FB这里跳转实现改成未实现,即可实现爆破,追码本人不会,我才刚刚学爆破1月左右

本帖子中包含更多资源

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

x
iTruth 发表于 2020-5-17 16:23
这CM的解不唯一啊..
试试看这个: ZZ[JX#,9(9,+9QY!
htpidk 发表于 2020-5-17 17:20
本帖最后由 htpidk 于 2020-5-17 17:40 编辑


很早就追到这个码了,只不过用这个密码打不开压缩包,所以以为错了,谁知道你说的会输出密码居然是下面的you are successful!,服了,我说用追到的字符串怎么打不开压缩包。

本帖子中包含更多资源

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

x
神之名 发表于 2020-5-18 00:24

这个是哪里有问题?

本帖子中包含更多资源

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

x
神之名 发表于 2020-5-18 00:44
htpidk 发表于 2020-5-17 17:20
很早就追到这个码了,只不过用这个密码打不开压缩包,所以以为错了,谁知道你说的会输出密码居然是下面的 ...

你怎么追到的,怎么做的
htpidk 发表于 2020-5-18 02:22
神之名 发表于 2020-5-18 00:44
你怎么追到的,怎么做的

找到接收输入密码的CALL后在下面下个断点,随意输入几个密码,回车后就断下了,下面就是对比输入密码是否正确的代码了,几分钟就可以找到了

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
神之名 + 1 + 1 谢谢@Thanks!找到了

查看全部评分

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

本版积分规则

返回列表

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

GMT+8, 2024-11-24 13:09

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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