• ColorSchemer Studio 2 破解


    软件介绍:

    ColorSchemer Studio 2 is a professional color matching application for anyone from hobbyists to advanced professionals.


    Work with a dynamic visual color wheel, instantly explore harmony relationships and even let ColorSchemer Studio intelligently suggest color schemes for you!


    官网:http://www.colorschemer.com/


    从一个论坛上看到的一篇文章,尝试了下。发现这个版本号和他的那个版本号不同,算法也有些不同。

    所以就自己尝试破解了下。

    软件注冊时明文比較。载入起来后直接读取内存就能读到真正的注冊码,我们跟踪一下算法。。

    。。


    1. 载入后,使用字符串找注冊的keyword,就能够找到这个地方


    能够看出注冊过程是,先算出一大坨数据。然后取注冊时输入的code1和code2,连接code1和code2记为CODE,然后比較算出的这一大坨数据是不是和CODE相等,相等则注冊成功,不相等就注冊失败。。

    2. 来到算出一大坨数据的地方


    来到算法的第一部分。计算出一个key1(中间值),它是怎么计算的呢?事情的经过是这个的:取出输入的username的每一位,乘以1024后。求和。

    然后表示成十进制。结果记为KEY1。


    3. 接着向后走,来到


    上面的计算过程是这种:每次计算一个数,(name[i] % 10  + key1[i]) % 10,然后这个数通过以下的CALL 00404DCC进行赋值。



    4. 赋值的过程


    进入00405150后



    5.依据username的长度为8,生成的这八位数字所有赋完值后。就生成了注冊码的后八位。

    而注冊码的前面的八位又是两部分来的:第一部分是固定的“CSS”,第二部分是key1的前五位。


    看上图,堆栈中三个串凑齐了,连接起来就是注冊码。。。。


    自己逆向出来的算法:

    	TCHAR szUserName[256] = {0};
    	::GetDlgItemText(this->m_hWnd, IDC_EDT_UserName, szUserName, 256);
    	if (strlen(szUserName) != 8)
    	{
    		AfxMessageBox("username必须为八位的字母或数字...:)");
    		return ;
    	}
    
    	DWORD key1 = 0;
    	for (int i = 0; i < strlen(szUserName) ; i++)
    	{
    		DWORD dwTemp =   (TCHAR)szUserName[i] * pow(2, 16);
    		key1 += dwTemp;
    	}
    	
    	TCHAR szTempResult[10] = {0};
    	itoa(key1, (TCHAR*)szTempResult, 10);
    	
    	TCHAR strResult[17] = {0};
    	
    	for (i = 0; i < strlen(szUserName); i++)
    	{
    		DWORD dwTemp1 = szUserName[i] % 10;
    		DWORD dwTemp2 = szTempResult[i] - 0x30;
    		DWORD dwTemp3 = dwTemp1 + dwTemp2;
    		DWORD dwTemp4 = dwTemp3 % 10;
    		
    		strResult[i+8] = dwTemp4 + 0x30;
    	}
    	for (i = 0; i < 5; i++)
    	{
    		strResult[i+3] = szTempResult[i];
    	}
    	strResult[0] = 'C';
    	strResult[1] = 'S';
    	strResult[2] = 'S';
    
    	::SetDlgItemText(this->m_hWnd, IDC_EDT_Code, strResult);

    程序和代码都在以下的链接中

    下载地址:http://download.csdn.net/detail/xiaocaiju/7493841  压缩password:xiaoju

  • 相关阅读:
    Git最佳实践
    Git学习笔记
    Error creating bean with name 'enableRedisKeyspaceNotificationsInitializer' defined in class path resource
    Python实现按着文件资源管理器里的顺序获取文件列表
    python excel接口自动化测试框架
    java进行屏幕截图
    Java启动桌面应用程序
    java自建一个获取当前电脑桌面的鼠标信息
    vue收集表单数据给后端交互
    vue路由懒加载(延迟加载)的写法..
  • 原文地址:https://www.cnblogs.com/brucemengbm/p/6752875.html
Copyright © 2020-2023  润新知