进去od发现 push call 有壳

CrackMe32_i++

 

 脱完 

第一个打开有个弹窗 直接

bp MessageBoxA 下断点
CrackMe32_i++_02

 

 找到关键地方下个断点重新运行分析

CrackMe32_字符串长度_03

 

 判断了当前文件夹是否有reg.dat 文件

CrackMe32_i++_04

 

 接着看他们的窗体事件

CrackMe32_字符串长度_05

 

 应该又是几个失焦事件 来算密码把ok解开 

定位看1第一个事件代码

CrackMe32_字符串_06

 

这段代码是吧 输入值转成十进制储存 

CrackMe32_十进制_07

 

 进去 

CrackMe32_字符串_08

 

 这里发现了 计算方式 name大于5

 CrackMe32_i++_09

 

去name 前4位分别除10

 CrackMe32_i++_10

 

 接着对长度大于2的继续除

CrackMe32_十进制_11

 

 CrackMe32_字符串长度_12

 

 成功解开

  char pName[] = "name1";
    char pNum[4] = {0};
    pNum[0] = pName[0] / 0x0A;
    pNum[1] = pName[2] / 0x0A;
    pNum[2] = pName[3] / 0x0A;
    pNum[3] = pName[4] / 0x0A;
    for ( int i=0;i<4;i++)
    {
        if ( pNum[i]>=0x0A ) // 程序中是通过转为字符串,判断字符串长度
        {
            pNum[i] = pNum[i]/0x0A;
        }
    }
    printf("Num: %d - %d - %d - %d\r\n",pNum[0],pNum[1],pNum[2],pNum[3]);

 

 

 

 

从此山高路远,纵马扬鞭。愿往后旅途,三冬暖,春不寒,天黑有灯,下雨有伞。此生尽兴,不负勇往。