吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 4008|回复: 24
收起左侧

[CrackMe] 发一个很简单的CrackMe

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

本帖最后由 zbnysjwsnd8 于 2018-2-8 11:18 编辑

成功提示明显 无花无壳无反调试。



破解成功给加分。
追码成功的分数多一些。

简单说一下为什么成功不是Success
如果仔细分析按钮事件的算法就会发现 这个验证根本就没办法通过,除非爆破,也就是说这个按钮事件是忽悠人的。

本帖子中包含更多资源

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

x

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

pk8900 发表于 2018-1-16 00:49
楼主看下我的测试分析代码,路子对不对?
[C++] 纯文本查看 复制代码
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include <windows.h>
#include <iomanip>
#include <string>
using namespace std;

void main()
{
	char * yourName = new char[260];

	long v16 = 0;
	double v18 = 0;
	double v17 = 0;
	char * pEnd;
	double v3 = strtol(yourName, &pEnd, 10);

	double v4 = v3;
	double v_tmp = 0;
	int jump=0 ;   //分步测试开关
	//0-用户名测试,1-数字算术部分:";
	if (!jump)
	{
		cout << "输入用户名:";
		gets(yourName);
		cout << endl;
		goto test_string;
	}
	else
	{
		cout << "输入测试数字:";
		cin >> v3;
		
    }
	while (1)
	{
		v4 = v18 - v3;
		if (v18 - v3 < 0.0)
			v4 = -v4;
		if (v4 > 0.0000001)
			v17 = v18 + 2.7182818284 / (v18 + 1.0) + 1.0;
		if (v18 - 1000.0 > 0.0000001)
		{
			break;
			cout << "通过了" << endl;
		}
		v_tmp = v3 + 2.7182818284 / (v3 + 1.0) + 1.0 - v17;
		if (v_tmp > 0.0000001)
		{
			cout << "数字没有通过" << endl;
			goto over;
		}
		v18 = v18 + 0.0001;
	}
	goto over;
test_string:
	long length_s = strlen(yourName);
	unsigned char * clist = new unsigned char[0x101];
	cout << "ok" << endl;
	//字符串顺序添充
	for (int x = 0; x <= 0x100; x++)
		clist[x] = x;
	//生成第一次加密表
	int c = 0;
	for (int x = 0; x < 0x100; x++)
	{
		c += yourName[x % length_s];
		c = (c + clist[x]) & 0xFF;
		c &= 0xFF;
		swap(clist[c], clist[x]);
	}
	//输出第一次加密表
	cout << "输出第一次加密表" << endl;
	for (int x = 0; x <= 0x100; x++)
		cout << hex << uppercase <<(int) clist[x] << " ";
	cout << endl;
	//生成第二次加密表即窗口标题字节集
	unsigned char  list02[] = {0x8C, 0x6B, 0x43, 0x27, 0x10, 0x4A, 0xAA, 0x1E, 0x9C, 0xDA, 0xD1, 0x84, 0xF0, 0xA9, 0x00, 0x95};
	int tmp = 0,tmp_2=0,tmp_ebp=0;
	for (int x = 0; x < 0x10; x++)
	{
		tmp++;
		tmp &= 0xFF;
		tmp_2 = clist[tmp];
		tmp_ebp+=tmp_2;
		tmp_ebp &= 0xFF;
		swap(clist[tmp], clist[tmp_ebp]);
		list02[x] ^= clist[(clist[tmp] + clist[tmp_ebp]) & 0xFF];
	}
	double v5 = v3;
//	cout << clist << endl;

	//输出第二次加密表即窗口标题字节集
	cout << "输出第二次加密表即窗口标题字节集" << endl;
	for (int x = 0; x < 0x10; x++)
	{
		cout << hex << uppercase<<(int)list02[x] << " ";
	}
	cout << endl;
over:
	system("pause");
}

免费评分

参与人数 2吾爱币 +2 热心值 +1 收起 理由
焦子航 + 1 666666
zxtsky + 1 + 1 厉害了我的大神

查看全部评分

yAYa 发表于 2018-1-14 23:48
是success! 么?

本帖子中包含更多资源

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

x
t5456290 发表于 2018-1-15 00:18
zxtsky 发表于 2018-1-15 09:52
尝试一下,是这个吗

本帖子中包含更多资源

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

x
暗丶夜 发表于 2018-1-15 12:21
应该不是这个提示吧?是这个提示的话会用搜字符串功能的都会破了呀

本帖子中包含更多资源

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

x
byh3025 发表于 2018-1-15 15:13
按照楼主的水平应该没这么简单吧,一个跳转解决
pk8900 发表于 2018-1-16 00:27
这个感觉一点也不简单啊,可以修改代码吗?算法弄的差不多了,算术部分没找到能通过的数,字符二次加密,要想生成想要的标题,得反推第一次加密生成想要的256个字符加密表,还是解决了算术问题就对了呢?
 楼主| zbnysjwsnd8 发表于 2018-1-16 16:23 来自手机
pk8900 发表于 2018-1-16 00:27
这个感觉一点也不简单啊,可以修改代码吗?算法弄的差不多了,算术部分没找到能通过的数,字符二次加密,要 ...

能找到算法很厉害啊
加油吧。
SuperMaxine 发表于 2018-1-16 20:41
萌新问一句,这种CM是只要跳转出来就可以还是要找到正确值的算法呢?刚把汇编摸一遍了听说这个简单准备第一次上手试一下
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-24 16:05

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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