对某软件破解的教训总结

        最近一直在对某个用VB做的软件(出于敬意不说名字)开刀,本人对VB编的软件是极为不屑的,认为那是懒猪干的活。但经过这次经历,发现VB有个好处就是,反汇编的时候简直就是天书中的天书,如果还加了几道壳的话,哭吧。不过我这次练手的软件只加了一道壳,而且有专门的脱壳机。掉外壳后,就开始分析代码。
        这个程序可能在多个地方有检注册的,所以暂时不考虑爆破。
        这是一个重起注册的软件,也就是说它的注册码记录在某个地方,结果它在注册表里记录运算后的注册码。
        注册码运算过程。
        首先,把从公司拿到的外部注册码输入(数字字符串),然后计算得到内部注册码(数字字符串),记录到注册表。
        等到下次软件重起,然后从内部注册码里边取某些数位,组成如a、bc、def一些数,然后取两个 两个的乘积,然后对这些乘积进行正弦(SIN)运算得到一条实数的字符串,再在这条数字字符串的小数部分取连续的三个数字组成内部比较码。然后在判断注册的地方使用。
        经过一番努力,暂时可以从内部比较码推出注册码了。只贴出少量相关函数。
 int zjm3(double x, int pos);
 //得到比较的中间码,x的正弦字符串的pos位置以(C风格排序第一个位置为0),默认长度3。
int zjm3(double x, int pos)
{
    char tmp[20], *cptr;
    int i;
    sprintf(tmp,"%.15f",sin(x));
    cptr=tmp+pos;
    *(cptr+3)='\0';
    sscanf(cptr,"%d",&i);
    return i;
}
        这就是软件把注册码转换为内部比较码的函数,如果大家觉得有用就拿去吧,呵呵。

你可能感兴趣的:(职场,软件,破解,休闲)