免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 7584 | 回复: 12
打印 上一主题 下一主题

请教,如何破解这段代码中的软件注册使用期限 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-01-14 20:46 |只看该作者 |倒序浏览
一个程序过期了。拿到了它的源代码。
请问将注册表xzYear,xzMonth,xzDay三个值改为何值时,软件不会再提示已经过期?

bool CCenterServerManage::getIntTime(CTime * pTime)
{
if (!AfxSocketInit())
{
AfxMessageBox("联网失败");
return FALSE;
}

CString strServer("");
CSocket sockClient;
sockClient.Create(); //创建socket
strServer="time.ien.it";

sockClient.Connect((LPCTSTR)strServer, 37); // strServer:时间服务器网址; 37:端口号

DWORD dwTime = 0; //用来存放服务器传来的标准时间数据
unsigned char nTime[8]; //临时接收数据
memset(nTime, 0, sizeof(nTime));

sockClient.Receive(nTime, sizeof(nTime)); //接收服务器发送来得4个字节的数据
sockClient.Close(); //关闭socket

dwTime += nTime[0] << 24; //整合数据
dwTime += nTime[1] << 16;
dwTime += nTime[2] << 8;
dwTime += nTime[3];

if(0 == dwTime) return FALSE;
COleDateTime t00( 1900, 1, 1, 0, 0, 0 ); // 1900.1.1 00:00:00
COleDateTime t70( 1970, 1, 1, 0, 0, 0 ); // 1970.1.1 00:00:00

COleDateTimeSpan ts70to00 = t70 - t00;
DWORD dwSpan = (DWORD)ts70to00.GetTotalSeconds();
ASSERT( dwSpan == 2208988800L );

//把时间变为基于1970年的,便于用CTime处理
dwTime -= dwSpan;
//考虑网络延迟因素
//dwTime += dwDely;
//构造当前时间的CTime对象
CTime timeNow = (CTime)dwTime;
*pTime = timeNow;
return true;
}
bool CCenterServerManage::isTimeOver()
{
int buff[5];//读取值的存储区
CString s_yearBuff;//存储年
CString s_monthBuff;//存储月
CString s_dayBuff;//存储日
int Read=0;
LPBYTE readYear=new BYTE[5];
LPBYTE readMonth=new BYTE[5];
LPBYTE readDay=new BYTE[10];
DWORD w_Lenth=5;
//time_t ct;  
//time( &ct) ;/// 当前日期
CTime t2(1990, 1, 1, 0, 0, 0);
getIntTime(&t2);
int a=t2.GetYear();
int b=t2.GetMonth();
int c=t2.GetDay();
buff[0]=a;
buff[1]=b;
buff[2]=c;
s_yearBuff.Format("%d",buff[0]);
s_monthBuff.Format("%d",buff[1]);
s_dayBuff.Format("%d",buff[2]);
DWORD s=REG_SZ/*REG_BINARY*/;
HKEY sub;
CString skey="SOFTWARE\\xz";
LONG return0=RegOpenKeyEx(HKEY_LOCAL_MACHINE,skey,0,KEY_ALL_ACCESS,&sub);
LONG return1=::RegQueryValueEx(sub,"xzYear",NULL,&s,/*(LPBYTE)*/readYear,(LPDWORD)&w_Lenth/*(LPDWORD)sBuff.GetLength()*/);
::RegQueryValueEx(sub,"xzMonth",NULL,&s,readMonth,(LPDWORD)&w_Lenth);
::RegQueryValueEx(sub,"xzDay",NULL,&s,readDay,(LPDWORD)&w_Lenth);

if(return0!=ERROR_SUCCESS)//如果注册表中没有字段值,写入
{
LONG l_Error=0;
LONG l_Temp;
l_Temp=::RegCreateKey(HKEY_LOCAL_MACHINE,skey,&sub);
l_Error+=l_Temp;
l_Temp=RegSetValueEx(sub,"xzYear",NULL,REG_SZ,(BYTE*)s_yearBuff.GetBuffer(0),s_yearBuff.GetLength());
l_Error+=l_Temp;
l_Temp=RegSetValueEx(sub,"xzMonth",NULL,REG_SZ,(BYTE*)s_monthBuff.GetBuffer(0),s_monthBuff.GetLength());
l_Error+=l_Temp;
l_Temp=RegSetValueEx(sub,"xzDay",NULL,REG_SZ,(BYTE*)s_dayBuff.GetBuffer(0),s_dayBuff.GetLength());
l_Error+=l_Temp;
if(l_Error!=0)
{
AfxMessageBox("软件注册错误,软件不可运行!");
delete[] readYear;
delete[] readMonth;
delete[] readDay;
::RegCloseKey(sub);
return false;
}
return true;

}
else //如果注册表中有值,读取
{
int n_Year;
int n_Month;
int n_Day;
//::RegQueryValueEx(sub,"xzMonth",NULL,&s,readMonth/*(BYTE *)sBuff.GetBuffer(0)*/,(LPDWORD)&w_Lenth/*(LPDWORD)sBuff.GetLength()*/);
CString s_Year;
CString s_Month;
CString s_Day;
CString ss;
// 转换成int
s_Year.Format("%s",readYear);
n_Year=atoi(s_Year);//cstring转为int
s_Month.Format("%s",readMonth);
n_Month=atoi(s_Month);//cstring转为int
s_Day.Format("%s",readDay);
n_Day=atoi(s_Day);//cstring转为int
int a;//记录天数
a=(buff[1]-n_Month)*30+(buff[2]-n_Day);
if(a>=26)
{
AfxMessageBox(" 软件已经到期!");
delete[] readYear;
delete[] readMonth;
delete[] readDay;
::RegCloseKey(sub);
return false;
}


}
delete[] readYear;
delete[] readMonth;
delete[] readDay;
::RegCloseKey(sub);
return true;
}

论坛徽章:
0
2 [报告]
发表于 2012-01-14 20:51 |只看该作者

我将系统时间调整为2008年(未过期的时间),然后查注册表
xzYear,xzMonth,xzDay三个值分别是
1990,1,1
当我将系统时间调整为正常北京时间时,修改这几个值都无济于事?

论坛徽章:
11
未羊
日期:2013-12-16 12:45:4615-16赛季CBA联赛之青岛
日期:2016-04-11 19:17:4715-16赛季CBA联赛之广夏
日期:2016-04-06 16:34:012015亚冠之卡尔希纳萨夫
日期:2015-11-10 10:04:522015亚冠之大阪钢巴
日期:2015-07-30 18:29:402015亚冠之城南
日期:2015-06-15 17:56:392015亚冠之卡尔希纳萨夫
日期:2015-05-15 15:19:272015亚冠之山东鲁能
日期:2015-05-14 12:38:13金牛座
日期:2014-12-04 15:34:06子鼠
日期:2014-10-16 13:40:4715-16赛季CBA联赛之八一
日期:2016-07-22 09:41:40
3 [报告]
发表于 2012-01-14 22:28 来自手机 |只看该作者
你能拿到源代码却是想怎么破解。。。。你不会是发单骗人干活最后没给钱吧?

论坛徽章:
0
4 [报告]
发表于 2012-01-14 23:42 |只看该作者
回复 3# zylthinking


    你是不是常这么干啊?我是网上下载的源代码。程序也是网上搞的。没你想的那么龌龊

论坛徽章:
0
5 [报告]
发表于 2012-01-16 08:37 |只看该作者
你都有源码了,绕过验证去不就行了,还“破解”什么呢?

论坛徽章:
0
6 [报告]
发表于 2012-01-16 12:40 |只看该作者
if(a>=26)前面加个a=0;

论坛徽章:
2
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:56:11
7 [报告]
发表于 2012-01-16 14:21 |只看该作者
如果这段代码是真的,则直接删除注册表中的时间记录,就可以破解了。

论坛徽章:
0
8 [报告]
发表于 2012-01-16 16:49 |只看该作者
有高手不 想发个单

论坛徽章:
0
9 [报告]
发表于 2012-01-17 10:30 |只看该作者
zylthinking 发表于 2012-01-14 22:28
你能拿到源代码却是想怎么破解。。。。你不会是发单骗人干活最后没给钱吧?


o(∩∩)o...哈哈,一定是这样

论坛徽章:
2
水瓶座
日期:2013-09-04 15:09:57白羊座
日期:2014-04-17 16:48:13
10 [报告]
发表于 2012-01-18 17:21 |只看该作者
你把他验证的那段代码直接删掉不可以么。去破解它里面做什么?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP