小萌新的第六个crack算法分析(keyfile保护)
2020-02-13 21:29:30 Author: bbs.pediy.com(查看原文) 阅读量:236 收藏

[原创]小萌新的第六个crack算法分析(keyfile保护)

3天前 347

[原创]小萌新的第六个crack算法分析(keyfile保护)

一个小萌新的crackme算法分析(keyfile保护)

Lixu

2020年2月9日 22:18:43

这个crack依然是来自看雪的,希望自己可以加油!!!

一:Peid查壳,很显然啥都没有。

 

二:进入OD后使用字符串查找功能查找所有文本参考字符串,找到了破解成功的提示,选中后回车进入。

 

三:找到成功提示 ,跟进去然后往上翻很快找到creatFile函数也就是查询keyfile文件的函数,你也可以刚开始就bp CreatFileA 也可以定位到这里。到了这里我们就可以进行分析。

第一步:判断有无keyfile文件:

 

第二步:判断内容是否是八个字节

 

第三步:读取文件内容,看内容是否为0,关闭文件。

 

第四步:进行算法变化,先将前四字节循环左移五位,然后前四字节加0xF,再将后四个字节循环右移0x7位,再将后四位整体减0x5,然后先将后四字节和0xC642D8BD进行比较,如果不相同就结束。相同的话再将前四字节和0x2E8E09FC进行比较,如果正确就出现成功的提示信息,不相同的话就提示结束。(这样的算法和验证方式是比较经典的,也不难)

 

第五步:成功演示:


第六步:算法:

算法如下,就是注意将大小端进行转逆,windows的存储方式和我们的书写方式不同:

计算结果是一串hex值,大家按照Ascii表找出来就行,也有函数可以用,我没找,大家可以将注册机完善一下。

#include "stdafx.h"

#include "string.h"

#include <stdlib.h>

void main()

{  

unsigned long a = 0x2E8E09FC, b=0xC642D8BD;

unsigned long sn1,sn2;

    char serial1[9],serial2[9];

a = a-0xF;

a = (a<<(32-5))|(a>>5);

b = b+0x5;  

b = (b>>(32-7))|(b<<7);

sn1=(a<<0x18)|(a<<0x8&0xff0000)|(a>>0x8&0xff00)|(a>>0x18&0xff);

  sn2=(b<<0x18)|(b<<0x8&0xff0000)|(b>>0x8&0xff00)|(b>>0x18&0xff);

ltoa(sn1,serial1,16);

ltoa(sn2,serial2,16);

printf("Serial:%s %s",serial1,serial2);

  getchar();

}

2020安全开发者峰会(2020 SDC)议题征集 中国.北京 7月!


文章来源: https://bbs.pediy.com/thread-257594.htm
如有侵权请联系:admin#unsafe.sh