惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

C
Check Point Blog
Y
Y Combinator Blog
GbyAI
GbyAI
Microsoft Azure Blog
Microsoft Azure Blog
Martin Fowler
Martin Fowler
博客园_首页
大猫的无限游戏
大猫的无限游戏
美团技术团队
S
SegmentFault 最新的问题
T
The Blog of Author Tim Ferriss
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
MyScale Blog
MyScale Blog
小众软件
小众软件
Vercel News
Vercel News
阮一峰的网络日志
阮一峰的网络日志
N
Netflix TechBlog - Medium
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
量子位
博客园 - 【当耐特】
J
Java Code Geeks
F
Fortinet All Blogs
宝玉的分享
宝玉的分享
Stack Overflow Blog
Stack Overflow Blog
博客园 - 司徒正美

博客园 - lifz

捕获asp.net下的未处理异常 延迟加载的一般实现 (ZT)在Struts中使用Validator框架 业界内广为流传的关于项目管理的通俗讲解 IPM 认识到单元测试的重要性 项目小结 SQL Server多事务并发问题 4xx: Client Error 使用者端(浏览器)错误讯息 Audit审计 COM+组件提供的企业级服务 An n-tiered Approach of Asp.Net Stored Procedure Temp Table Excel Template Export .NET企业服务器要点 jsp页面请求过程 asp.net页面处理过程 How to J2EE Asp.net Authorization Asp.net Authentication
加密技巧
lifz · 2005-09-20 · via 博客园 - lifz

选准注册源、经常变动注册算法、加密注册码、管理好注册机防止外流、采用在线式的注册方法

其实,如果程序运行速度的要求不高的话,嘿嘿,我的做法是在代码里到处插入验证是否注册过的检验代码,而且不要用调用函数的形式,注册码明文肯定是不可以有的,可以采用判断完了不进行判断跳转,而是在程序里其他地方要用的某个变量的不可能用到的一个比特上 做个标记,嘿嘿,在别处一个不起眼的地方做判断

还有个方法,监测到已经被破解之后当时不采取措施,悄悄的把某些窗体Free掉。这样当时看不出来问题,用一会儿就会报XXX read fail了。

1、保护你的校验算法,具体的做法就是千万别使用校验函数把你的校验算法嵌入功能代码里是比较保险的,这样破解者至少要花很多精力去研究那一部分是校验算法。当然这还不够,你还可以把检验算法分散到2个地方,当然更多地方效果会更好,只是将来代码维护起来会很麻烦的。

2、用Aspack,upx之类的压缩执行文件工具做进一步的保护。然后检查exe文件特定位置的byte是否变化,以确定软件是否被改动

3、防止暴破:千万不要用明文比较(用byte二进制比较)。再想保护深一点就加入一些冗余代码

#include "stdafx.h"

#include "string.h"
 

void getcpuid(char* CpuId);

int main(int argc, char* argv[])

{
         char cpuid[255];

         getcpuid(cpuid);
         printf(cpuid);printf("\n");
  
   return 0;
}

void getcpuid(char* CpuId)

{

         char szCPUID[129] = {NULL};

         char szTmp[33] = {NULL};

         unsigned long s1 = 0, s2 = 0;

         _asm {

                   mov eax,01h

                            xor edx,edx

                            cpuid

                            mov s1,edx

                            mov s2,eax

         }

         sprintf(szTmp, "%08X %08X ", s1, s2);

         strcpy(szCPUID, szTmp);

         _asm {

                   mov eax,03h

                            xor ecx,ecx

                            xor edx,edx

                            cpuid

                            mov s1,edx

                            mov s2,ecx

         }

         sprintf(szTmp, "%08X %08X", s1, s2);

         strcat(szCPUID, szTmp);

         strcpy(CpuId,szCPUID);
 
}