给天正8.0注册机 注册码的注册码加个使用时间 怎么加?

&如果你如果您觉得此软件好,请
&如果你如果您觉得此软件差,请
&&本地下载地址:
&『 点击下面的地址下载 』
&&软件介绍:
关于photoshop,小编得不得承认这是一款非常不错的图像处理软件,很多平面设计师也在工作中频繁使用。但是由于部分版本未激活,智能使用30天试用期,这对每个人都是一种痛苦。今天小编给大家带来了photoshop cs5注册机,它能够帮助用户快速的获得photoshop cs5的注册码,并且在软件中进行注册,非常方便。友情提示:点Patch时,如果提示失败,则关闭防火墙、杀毒软件等防护工具后再试,因为注册机需要修改hosts文件来绕过网络验证。在就是注册机很容易被杀毒软件当成病毒,其实不是病毒。ps cs5注册机使用方法1、在安装photoshop cs5时,安装到最后一个步骤会让用户填入注册码2、打开注册机,将下面的注册码复制到激活步骤中3、在点击注册机上的patch按钮,提示成功后,4、激活成功
&&相关软件:
我喜欢这个软件 我不喜欢这个软件
图形图像小类
Photoshop是Adobe公司旗下最为出名的图像处理软件之一,集图像扫描、编辑修
此版本由adobeflashprofessionalcs5.5简体中文版制作.版本特点:1、精简了ai
多多小编在这里分享的是AutoCAD2012简体中文精简版,它是由AutoCAD2012官方
CorelDRAWX4作为世界一流的平面矢量绘图软件,被专业设计人员广泛使用,集成环
扣钉盖截屏取图是一款绿色小巧、功能却很丰富的电脑截图软件,拥有快速截屏
软件下载排行
软件详细资料已被复制到粘贴板,直接粘贴既可。
 |  |  |  |  | 
版权所有 Copyright &当前位置:
保护软件版权的实用技巧
保护软件版权的实用技巧
发布日期: 16:45
浏览次数:9476次
标  签:C++
文章评分:5.0
操  作:
称号:未设置简介:...
文章概要:
开发软件的实践中,通常将软件分为几种版木:①②③anti_copy:④⑤dog版本。release为正常的无限制发行版本,后几种受版权保护版本,其中demo版本为限制时间或者功能的版本;anti_copy是防复制版本,只有安装的版本才能使用,实现时安装程序将某个动态库放在指定的路径下,程序运行时验证该文件是否存在;register版本是用户通过向软件开发者提供软件注册申请码,由软件提供者生成注册码,返回给用户,即通过软件中提供的注册码验证机制实现软件系统功能的开放;dog版本通过硬件加密狗实现软件的版权保护。
1 限制软件部分功能
做法一是在软件的功能菜单中将该菜单所对应的功能实现函数全部置空,这样在执行该功能时会弹出提示对话框或者什么动也没有。做法二是为了方便起见,直接将菜单的属性设置为变灰或者非激活状态,这样在运行系统时,该菜单项就会变灰或者没有激活。这种方法虽然简便,但是如果用Visual C++直接以资源方式打开可执行文件的话,就可以将将变灰或者非辙活状态去掉,从而去掉软件部分功能的限制。
2 限制软件试用时间
这里介绍记录时间的时问限制方法。
2.1设置三个时间变量
&&&&&&&&起始时间:int nYear0,nMonth0,nDate0;
&&&&&&&&终止时间:int nYear,nMonth,nD
&&&&&&&&当前时间:int nYearCur,nMonthCur,nDateC
2.2初次运行时给上述变量的赋值
&&&&&&&&对于当前时间:
SYSTEMTIME stC
GetSystemTnne(&stCur);
nYearCUFstCur.wYear.nMonthCur=stCur.wM
nDateCur=stCur.wD
起始时间和终止时间的赋值是在程序第一次运行时将当前时间和预设的期限写入某个文件当中,以后将这两个时间同当前的系统时间进行比较,判断软件是否过期或者试用时间是否到期:
String sFn="c:\\muxuanshe.sys";
FII.E *fp=fopen(sFn,"rb");
nDateO=nDateC
nYear0=n YearC
nMonthO=nMonthC
nDate=nDate0;
nYear=nYear0;
nMonth=nMonth0+1;
if(nMonth&12){
nMonth-=12;
}//跨年度计算依次将起始时间、到期时间和当前时间及文件的字节数写入c:\\muxuanshe sys
2.3比较时间
每次运行时比较当前时间与文件记录中的时间,有两种情况,一是判断是否将系统系统时间提前:
&if(IsPrcTime(nYear0,nMonth0,nDate0)||IsPreTime(nYear01d,nMo nthOld,nDateOJd)))其中nYearOld,nMonthOld,nDateOld为上次运行的时间:
BOOL JsOverTime(int nYear,int nMonth,int nDate)
SYSTEMTIME
GetSysten/rime(&st);
if(st.wYear&nYear)
return TRUE;
else if(st.wYearnMonth)
return TRUE;
else if(st.wMonth==nMonth&&st.wDay&nDate)
return TRUE;
return FALSF;
如果您前移了机器时间则将终止时间nYear=l并写入c:\\muxuanshe.sys,软件以后终止运行!
另一种情况是对于正常的剩余时问计算:IsOverTime(nYear,nMonth,nDate),不再赘述,具体实现请参见示例代码。
这里介绍的方法主要是要注意存放时间的文件要保密,如果知道了时间存放位置,那么时间限制就很容易被解除。也可以用其他更为稳妥的方法将时间存放,如存放在注册表中。
3根据机器码实现软件注册
机器码指与计算机硬件(CPU、网号、硬盘)有关的串号,如硬盘序列号、MAC地址等,编写软件的人常用机器码作为产生软件序列号的依据,目的是区分用户,确保自己的软件使用受控,下面通过读取用户计算机硬盘卷序列号,经一定的加密算法进行换算后,返回给用户一个产品注册码,由于硬盘卷序列号是唯一的,提供的产品注册码也是唯一的,用户利用该注册码通过验证后获得软件全部功能。
在笔者的编程实践中发现有时候由于所使用的函数不正确,常常不能正确获取硬盘的序列号,这里就这一问题进行讨论。
3.1不正确的序列号
利用GetVolumelnformation获取的计算机硬盘卷序列号,不是正确的唯一序列号:
void CWJGISApp::Register()
DWORD VolumeSerialN
GetVolumeInformation("c:\\",NULL,NULL,&VolumeSeriaINumber,NULL,NULL,NULL,NULL);
char charVolumeSerialNumber[l0];
itoa(VolumeSerlalNumber,charVoIumeSerialNumber,10);
CString strT
strTemp.Format("%s",charVolumeSerialNumber);
该函数获取的序列号在硬盘格式化后会发生变化。
3.2正确获取硬盘的序列号
正确获取硬盘序列号代码如下:
//读般硬盘序列号函数
char* CGetHDSerial::GetHDSerial()
m_buffer[0]='\n';
//得到当前操作系统版本
OSVERSIONINFO OSVersionI
OSVersionInfo.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
GetVersionEx(&OSVersionInfo);
if(OSVersionInfo.dwPlatformld != VER_PLATFORM_WIN32_NT)
//Windows 9x/ME下读取硬盘序列号
WORD m_wWin9xl'HDSerial[256];
Win9xReadHDSerial(m_wWin9xHDSerial);
strcpy (m_buffer, WORDToChar(m _wWin9xHDSerial, 10, 19));
//Windows NT/2000/XP下读取硬盘序列弓
DWORD m_wWinNTHDSerial[256];
//判断是否有SCSI硬盘
if (!WinNTReadIDEHDSerial(m_wWinNTHDSerial))
WinNTReadSCSIHDSerial(m_wWinNTHDSerial);
strcpy (m_buffer,DWORDToChar(m_wWinNTHDSerial,10, 19));
//Windows NT/2000/XP下读取IDE硬盘序列号
BOOL CGetHDScriaI::WinNTReadIDEHDSerial(DWORD* buffer)
BYTE JdOutCmd [sizeof(SENDCMDOUTPARAMS)+IDFNTIFY_BUFFER_SIZE - 1];
BOOL bFlag = FALSE;
int drive = 0;
Char driveName[256];
HANDLE hPhysicalDrivelOCTL=0;
Sprintf(driveName,"\\\.\\PhysicalDrive%d",drive);
//Windows NT/2000/XP 下创建文件需要管理员权限
hPhysicalDriveIOCTL=CreateFile(driveName,GENERIC_READ|GENERIC_WRITE,
FILE_SHARE_READ|FILE_SHARE_WRITE,NULL,OPEN_EXISTING,0,NULL);
if(hPhysicalDriveIOCTL!=INVALID_HANDLE_VALUE)
GETVERSIONOUTPARAMS VersionP
DWORD cbBytesReturned=0;
//得到驱动器的I/O控制器版本
memser((void*)&VersionParams,0,sizeof(VersionParams));
if(DeviceIoControl(hPhysicalDriveIOCTL,IOCTL_GET_VERSION,NULL,
0,&VersionPaiams,sizeof(VersionParams),sizeof(VersionParams),
&cbBytesReturned,NULL))
if(VersionParams.bIDEDeviceMap&0)
BYTE bIDCmd=0;//IDE或者ATAPI识别命令
SENDCMDINPARAMS
//如果驱动器是光驱,采用命令IDE_ATAPI_IDENTIFY,command,
否则采用命令IDE_ATA_IDENTIFY读取驱动器信息
bIDCmd=(VersionParams.bIDEDeviceMap&&drive&0x10)?
IDE_ATAPI_IDENTIFY : IDE_ATA_IDENTIFY;
memset(&scip,0,sizeof(scip));
memset(IdOutCmd,0,sizeof(IdOutCmd));
//获取驱动器信息
if(WinNTGetIDEHDInfo(hPhysicalDrivelOCTL,&scip,(PSENDCMDOUTPARMS)&
IdOutCmd,(BYTE)bIDCmd,(BYTE)drive,&cbBytesReturned))
USHORT*pldSector=(USHORT*)((PSENDCMDOUTPARAMS)IdOutCmd)-&bB
for(m=0;m&256;m++)
buffer[m]=pIdSector[m];
bFlag=TRUE;
//读取硬盘信息成功
CloseHandle(hPhysicalDriyeIOCTL); //关闭句柄
4 软件版权保护方法调用&&&&&&&&&
在程序初始化时,根据实际需要调用不同软件保护方法,具体时间如下所示:
BOOL g_nSoftType=0;//0,1,2 anti_3
BOOL CTestApp::InitInstance()
if(g_nSoftType==1){
if(DemoIsOverTime())
return FALSE;
else if(g_nSoftType==2){
if(!IsInstalledSoft())
return FALSE;
else if(g_nSoftType==3){
if(!Dog()){
AfxMessageBox(“您没有安装软件狗,请购买正版软件。\n\n抱歉……”);
return FLASE;
if(!g_bDemo){
CCommandLineInfo
ParseCommandLine(cmdInfo);
以上简单介绍了在Visual C++中实现软件版权保护的方法,显然,保护有效性从高到低依次为硬件dog方法版本、注册码注册方法、功能限制方法、时间限制方法,用户可以根据工作实际需要进行选择。
这些方向都很容易破解
15:13 发表
这些方向都很容易破解
15:13 发表
这些方向都很容易破解
15:13 发表
还不错,了解了解
17:09 发表
19:24 发表
最多还可以输入100字
【VIP年会员制套餐】
【C/C++软件工程师实战能力集训大纲】
VC知识库发布了C/C++业界的“本草纲目”
【牛人都在千人一号群! 加群三步走!!!】
第一步:请必须加VC知识库QQ: 为好友;
第二步:请必须关注本站微博:
第三步:申请加入群:.(必须将关注微博截屏发到QQ方可通过!)
【最新2013:】
全部100% VC++源码提供: E-Form++全新大型SCADA & HMI解决方案源码、CAD解决方案源码、Gis解决方案源码 、电力石油化工仿真与图形建模解决方案源码、大量其他高级制图VC++源码下载!
【 新视频发布】
o o o o o o o o o o
在VC环境中除了我们所常用的Dialog、Menu和Bitmap等标准资源类型之外,它还支持自定义资源类型(Custom Resource),我们自定义的资源类型能做些什么呢?呵呵,用处多多。...
在VC环境中除了我们所常用的Dialog、Menu和Bitmap等标准资源类型之外,它还支持自定义资源类型(Custom Resource),我们自定义的资源类型能做些什么呢?呵呵,用处多多。...
本文介绍了套接字编程的基本知识。...加载中,请稍候...
加载中,请稍候...
商品名称:
京东价:暂无报价
评价得分:
咨询内容:
你好,我朋友在A城市买的用于宠物监控,我在B城市也想通过手机看她宠物的监控,如何设置?电脑客户端软件安装后说需要注册码才可以长期观看,否则只能看一小时,光盘上只有一个注册码,请问可以另外再买注册码么
京东回复:
发表咨询:
声明:您可在购买前对产品包装、颜色、运输、库存等方面进行咨询,我们有专人进行回复!因厂家随时会更改一些产品的包装、颜色、产地等参数,所以该回复仅在当时对提问者有效,其他网友仅供参考!咨询回复的工作时间为:周一至周五,9:00至18:00,请耐心等待工作人员回复。
咨询类型:
库存及配送
发票及保修
促销及赠品
京东承诺:商品均为原装正品行货,自带机打发票,严格执行国家三包政策,享受全国联保服务。
功能咨询:咨询商品功能建议您拨打各品牌的官方客服电话,以便获得更准确的信息。
发货时间:现货:下单后一日内即可发货;在途:一般1-2天发货; 预订:一般1-6天可发货;无货:已售完,相应物流中心覆盖地区内的用户不能购买
运&&&&费:如需查看快递运输收费标准及免运费规则,
货到付款:如需查看开通货到付款地区及运费,
上门自提:上门自提不收取运费,如需查看全部自提点位置、地图、注意事项,
物流中心:京东商城拥有北京、上海、广州三个物流中心,各物流中心覆盖不同的城市,
限&&&&额:如需查看各银行在线支付限额,
大额支付:快钱支付中的招行、工行、建行、农行、广发支持大额支付,最高单笔一次支付10000元
分期付款:单个商品价格在500元以上,可使用中国银行、招商银行发行的信用卡申请分期付款,
货到付款:如需查看开通货到付款地区及运费,
京东承诺:商品均为原装正品行货,自带机打发票,严格执行国家三包政策,享受全国联保服务。
发票类型:京东商城所售商品均自带机打发票,在提供相关企业资料证明后,可申请开取增值税发票。
退 换 货:京东商城为您提供完善的退换货服务,
咨询内容:
&将客服的回复发到我的邮箱给软件添加注册码
  本文宗旨在于提出一种给软件添加注册码的方法。至于所提出的方法是否有效,是否能够经得起一些逆向高手的破解,还得经过验证。我只是提出我个人的看法。一、目标。目标很明确,就是根据需要注册软件的个人信息,产生注册码。并且软件本身必须可以校验该注册码是否有效。并且能够防止别人逆向算出校验算法,产生注册机;能够防止别人用暴力破解方法,直接修改软件执行代码,绕过注册。二、方法论述要做到以上的目标,有两个方面特别重要。一是,注册码产生算法的选择;二是,要使软件具有自身校验机制,防止可执行程序别篡改。下面我们分别论述这两点。1. 注册码产生算法的选择现在很多软件都存在注册机,很大原因是因为软件本身的注册码产生算法太过于简单。破解人员很容易从反汇编代码中抠出注册算法,并且能够很容易的还原成C代码。这些搞破解的算不上大师,但也可以算得上牛人了。我也曾经了解过相关的知识,看懂反汇编的代码不难,难的是在大量的汇编代码中找到彼此的调用关系,并且能够逆向的写出对应的代码;当然有些懒人直接抠出其中的汇编代码,不用理解详细的执行过程就能达到破解的目的。言归正传,不管别人多么NB,他至少要反汇编,至少看的是汇编代码。而如果我们的算法足够强大,他们也就玩完了。纵观如今标准的加密算法,无非就是对称加密和非对称加密。我们也不用去自创算法了,别做些吃力不讨好的事,自己设计的算法,安全性远远比不上现在常用的算法。我先简单列举出常用的算法,并说明为什么要选择我们所要的算法。a. 对称加密算法现在流行的有DES,AES两种,DES算法广泛的用在银行行业,AES出现的比较晚,但是安全性比DES好。所谓的对称就是只有一个密钥,加密和解密使用同一个密码,所以称为对称加密。如果我们用它在产生注册码,那么我们的软件中必须保存这个密钥。不管密钥在哪里,总是要存在在一个地方,而我们又没有办法去保证这个密钥的安全性。原因很简单,破解者只要跟下代码,就知道我们从哪里读出来这个密钥。b. 非对称加密有RSA,和椭圆曲线等,最流行的是RSA。虽然椭圆曲线效率和安全性比RSA好,但比较复杂,我至今没看明白原理,呵呵。所谓的非对称,是因为它有两个密钥,一个称为公钥,一个称为私钥。公钥是可以对外发布的,而私钥是自己保存的。用公钥加密,必须用私钥解密,反之,用私钥加密必须用公钥解密。所以,我们知道,我们可以在软件中保存公钥的内容,这个是可以公开的(当然,把它隐藏在软件内部是必要的,总之可以造成破解的难度的事情我们都可以去尝试)。然后,私钥我们可以自己留着。别人拿不到私钥,根本计算不出注册码来。2. 至此,我们知道我们可以使用RSA算法了,而且可以保证软件的安全。至少无法产生注册机,因为别人没有私钥。但是具体怎么做,我们可以按照下面的流程。a. 注册码产生过程:注册信息(包括用户名等信息)---& RSA私钥加密 ---& 注册码。b. 软件验证注册码过程:注册码 ---& RSA公钥解密 ---& 注册信息。3. 解决了第一个目标,我们还是很难防止别人直接篡改2进制的可执行文件,从而绕过注册码的校验。但是,方法总是有的。为了解决这个问题,我想到了一个方法:软件的自我校验。具体的做法是这样的:a. 我们为自身的软件产生校验值,这里要使用摘要算法。最常用的摘要算法是MD5,相信大家都听过,这里也就不再详述,我们仅仅需要在软件的执行时,读取可执行程序(在Windows下,自身的执行文件是可读的,但是如果自己要改写自己,那就没办法了)并计算校验值。b. 接着,我们可以判断校验值是否正确,如果不正确,我们软件可以直接自杀。但是这里有个问题,我们怎么在软件中保存正确的校验值呢?不可能保存在文件或者注册表中,这样早晚会被知道的。别人可以直接修改该校验值使之与错误的校验值相同,从而骗过软件的校验。这里有个方法:回归到(第1、2点)中描述的方法。如何回归?我们接着说。4. 保存软件的校验值:让校验值融入注册码。我们修改(第2点)的过程如下:a. 注册码产生过程:注册信息(包括用户名等信息)+ 软件校验值 ---& RSA私钥加密 ---& 注册码。b. 软件验证注册码过程:注册码 ---& RSA公钥解密 ---& 注册信息 + 软件校验值。这样子,我们就可以这样判断软件是否已经成功注册。首先根据上面步骤,算出注册信息和软件校验值,然后把这两者和当前的用户信息,和计算出的校验值做比较,如果都匹配,说明软件已经被成功的注册。5. 尝试破解。如果你知道了详细的过程,如何破解该软件?首先我们知道,已经无法写出注册机来了。唯一的办法是暴利破解,但是暴利破解,软件又加了自我校验。但是,百密总有一疏,暴利破解还是可以达到的。我们先回顾一下,如果我们按照上述的办法添加了注册码校验。那么我们的代码差不多是这么写的:int RSA_Check( char * sn ){该函数计算软件的校验值,根据注册码sn解密出校验值和用户信息,然后比较,返回是否校验通过。}....在软件的启动时,我们调用上述的函数。if( RSA_Check( sn ) ){&&&& &--------------------------①在这里,如果校验失败,那就直接exit(0)吧,呵呵~}但是致命弱点就在上述的①位置。因为①位置的汇编差不多是这样的:je xxxxx........仅仅是一条跳转语句,那么,破解人员直接将其改成jne或者别的jmp指令就完事了,我们的努力就全废了。既然如此,我们代码绝不能写成这样,或者我们的方法不该如此简单。至少,我们可以这么做:1. 不要把校验算法写成一个统一的接口。2. 不要仅仅在一个地方做判断。这点其实很简单也很有效,如果你愿意,你可以在软件中对效率要求不高的地方多加几个判断,这对破解人来说是相当痛苦的,至少他无法同时查找到所有的关键位置。只要有一个地方没改成功,那么我们的自我校验就起作用,那么我们就有权利执行后续的动作了。比如,直接删掉本身的程序(当然,这里必须关闭自己,然后调用另一个进程来删除软件)等等。3. 更“贱”的方法是,起一个附加的进程,和主进程互相监视,互相校验。如果校验到对方注册异常了,那就杀掉对方,干掉对方的可执行程序。听起来很贱,但是不是有用,俺也不知道。4. 如果要防止一个注册码到处使用的情况(中国人都是互帮互助的,呵呵),可以在注册信息中添加目标机器的信息,加入到注册信息中。4. 等等的这些方法,就很多了,大家可以自由发挥。三. 总结经过上述的论述,我觉得没有绝对的安全,有时如果你的软件不想被破解,那么您就只能诅咒那些不道德的人了。但是我们可以让他们更加痛苦,至少菜鸟是无法随随便便搞破坏的。在中国,写个软就开源,免费吧,别指望拿它来养家糊口了。四. 附件分类: , 标签: 绿色通道:161(请您对文章做出评价) 上一篇: 下一篇:posted @
阅读(11099) 评论(46)
谢谢楼主共享..话说汇编挂了很久很久..终于清考的时候苦学一个礼拜才过的...看着jne啥的倍感亲切...
那个啥,因为你总有一个判断语句,也就是那个if( RSA_Check( sn ) ){exit(0)}else {.....}如果对方将这个判断语句在可执行文件里面改了,当RSA_Check(sn)为true是直接跳转else语句,而不是exit(0),这样随便输入一个字符串应该就能通过,真正的验证码反而通不过了。这种情况应该如何解决?
或者说完全可以加个goto,跳过你执行校验的这段代码,直接执行真正的程序[楼主]
ocean呵呵,所以我紧接着就说了:“1. 不要把校验算法写成一个统一的接口。”怎么写,我倒是没说,呵呵~怎么分散开来,我倒是没想好。
C#做的程序 ,如果没有加密的,注册码基本无效;[楼主]
058674不懂C#,呵呵~
058674中间语言的特性。其实任何加密都是仿君子不防小人。那些做单机游戏的公司,比如EA,育碧这些,你说他们没实力搞加密啊,当年神乎其神的号称盗版杀人的DNA加密还不是被破了,最终不得不搞个全程联网这样又费马达又费电的东西,还被正版玩家批得体无完肤。他们自己都说了,如果他们的加密能撑的过一个星期,都算是成功了,至少会多一个星期的销量。最后意识到了,要让用户掏钱买,自己的产品就要厚道(理论上来说是这样,但是盗版用户伤不起啊)。
LZ第三条a点,我没记错的话,其实好像可以在内存里修改的,有种技术叫进程注入(好像是这么说的),做过外挂的应该比较熟悉,可以在程序运行期间动态的插入函数到主进程当中进行执行,常用于破解之类的工作,当然,这种技术也可以用于加密。
sweetwxh确实,替换密钥,自校验的去除,有太多人可以搞定了靠谱的还是在上面加一层 VM壳子
软件如果更新了,软件的MD5值发生变化了,怎样去更新用户的注册信息?
sweetwxh:@058674中间语言的特性。其实任何加密都是仿君子不防小人。那些做单机游戏的公司,比如EA,育碧这些,你说他们没实力搞加密啊,当年神乎其神的号称盗版杀人的DNA加密还不是被破了,最终不得不搞个全程联网这样又费马达又费电的东西,还被正版玩家批得体无完肤。他们自己都说了,如果他们的加密能撑的过一个星期,都算是成功了,至少会多一个星期的销量。最后意识到了,要让用户掏钱买,自己的产品就要厚道(理论上来说是这样,但是盗版用户伤不起啊)。把一部分关键代码放在服务器运行,就不存在被破解的可能,只能攻击。所以网络程序都很赚钱。还有用虚拟机方法也是破解不了的,只能先破解虚拟机,这个成本太高。大公司让你盗版只是为了变相做广告。
lz去看看《加密与解密》那本书里有讲到相关内容。你的理解角度没有站在破解角度去考虑。如果你的全部代码(即正版部分)都在客户端,那么本质上就一定存在被破解的可能性。不在于你用何等加密算法,因为破解一般不是研究你的加密方法。[楼主]
hoodlum1980你说的倒是没错,对已破解者开始,开发者总是滞后的。[楼主]
幻元素呵呵,谢谢你认真的看完了,这个问题倒是没想到,呵呵,看来自己想出来的方法不是很好使。[楼主]
ddatsh靠谱的还是在上面加一层 VM壳子-------------您所说的是加层虚拟机吗?那东西需要花时间啊~
谢谢楼主共享..学习了
有没有针对.NET程序有效的加密手段?
好文章,这方面一直是小白,谢谢楼主分享
linxr这种方法我之前也尝试过,觉得太麻烦了,只做了简单的基于rsa的注册机制.
不知道加密狗的安全性咋样
很宝贵的思路!
linxrvm protect,瞬间啊老王的壳子很强大的
不管你怎么加密解密自身校验,总归是要做一个了断:true or false,然后各自goto. 抓住这一点,破解才算入门。另外破解不都是要搞出注册机的,有很多都直接修改exe/dll,让程序直接goto到验证成功后的那个地址,简单替换一下原文件就行了,这种算是“破解补丁”。
往好点想~~~被破解了,说明你的软件有价值的~~嘿嘿,
很强大,就当学点理论知识。支持一下。
自己写VM,自己写loader,自己开发虚拟指令集。
LZ想法不错!顶一下!
下载的只提供demo版,阉割一些功能。付费的再提供完整版本。
单机软件,始终存在破解的可能只有网络版软件(或者云计算)才能避免破解
思路不错,顶一下!
无色:引用sweetwxh:@058674中间语言的特性。其实任何加密都是仿君子不防小人。那些做单机游戏的公司,比如EA,育碧这些,你说他们没实力搞加密啊,当年神乎其神的号称盗版杀人的DNA加密还不是被破了,最终不得不搞个全程联网这样又费马达又费电的东西,还被正版玩家批得体无完肤。他们自己都说了,如果他们的加密能撑的过一个星期,都算是成功了,至少会多一个星期的销量。最后意识到了,要让用户掏钱买,自己的产品就要厚道(理论上来说是这样,但是盗版用户伤不起啊)。把一部分关键代码放在服务器运行,就不存在被破解的可能,只能攻击。所以网络程序都很赚钱。还有用虚拟机方...这种方法育碧在自家的游戏里已经试验了,每隔一点地方搞个要从服务器下载少许文件游戏才可以继续,每次玩到这里都要去下载。结果搞得自己服务器撑不住不说,还是有人获取这部分要下载的文件补到游戏里了。盗版破解是防不住的,软件做好点,获取部分人正版支持还是可以的赚点的。
非常不错,理论讲的比较明白了,改天我也介绍下C#非对称加密方面的 代码吧。
在软件里加广告吧,从广告赚钱
矛盾一直存在
强烈要求C#代码
LZ讲的不错、、、
无色把关键代码放在服务器,那必然要联网,联网的代码也还是在客户端的,然后获取到什么数据,再用获取的数据进行处理,这样破解,只要去除联网功能,将获取的数据处理部分简单的跳转下之类的还是可以破解的..所以计算机上,任何可执行文件 都是可以破解的! 不存在不能破解的东西.最好的办法只能是 尽量复杂化,增加破解的难度,减少被破解成功的概率.我觉得 免费 + Donate 还是很不错的,如果软件大家都喜欢,总有人愿意 donate一些的.免费使用,但是 donate可以获得 软件上增加自己的名称等等,这样更有社会意义.[楼主]
ayanmw支持您的观点,能够留下一点东西给大家代码方便,更加的有意义。只是现在生活的压力都很大,多少时候人总会偏移自己的本意~
linxr嗯理解,我特理解中国为啥盗版软件厉害,因为咱们 人均GDP 每月大约还不到1280,怎么舍得拿几十
几百 去买软件呢..中国人,许多都活的比较累得.(13亿人,2011GDP按照3万亿美元 20亿人民币算)对于商业软件,我也并没有反对,我说的免费+Donate是指 自己开发的小软件,基于兴趣的,不是赚钱的,要赚钱的,那就别这样了,可以加点AD或直接商业运作也行.软件如果好,总有人要破解的.也总有人还是愿意付费的.对于破解,我想我们都保持中立态度了,因为我们也是受益者,但是如果我们开发了商业软件,我们也可能是被盗版的受害者.这和软件的理念,经营有极大的关系.我们大众还是喜欢 Google类的免费服务的.google不是照样赚钱么,经营模式问题而已.一直想学Android开发,但是IOS开发者赚的钱比Android的要多几倍,但是还是Android比较低端和普及,android的赚钱模式看看就知道了,也就是market和嵌入广告..
我是个新手,最近也在搞注册码的问题,始终没找到好的方法。看了楼主的文章,我有个疑问,似乎RSA加密中,公钥是加密用的,私钥是解密用的。文中好像颠倒了吧?[楼主]
赵晓凡RSA签名的时候,有区分用什么密钥加密。对数据加解密就不分谁加密,谁解密了。
linxr我用c#测试了一下,1.私钥加密-&私钥解密=OK2.公钥加密-&私钥解密=OK3.私钥加密-&公钥解密=false4.公钥加密-&公钥解密=false加密的时候都没问题,但是用公钥解密,都是在解密的时候,出现异常。不知道是我理解不对,还是咋的。[楼主]
赵晓凡我只能肯定的告诉你,你的测试肯定不对的。私钥加密,必须用公钥解密。公钥加密,必须用私钥解密。1.私钥加密-&私钥解密=OK这种情况肯定是不存在的。你可以先查查RSA的原理,就知道了。
学习了,飘过!
我现在已经尝试着给壹些比较好用,注册费用又适中的软件付费支持了,目前为止已经买过四個软件了。安卓应用已经买了几十個了。
来自:&&&《》
更多精彩,关注微信号:360doc
馆友评论(0)
您好,请&&或者&&后再进行评论
合作登录:}

我要回帖

更多关于 cdrx6注册机使用教程 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信