CrackMe01

CrackMe01

 

 程序有明显弹框 猜测调用MessageBoxA 或者MessageBoxW 直接在这个函数下断点

CrackMe01

加函数断点 bp MessageBoxA  在点击成功步入到断点位置 肯定是多调用 继续出函数看调用位置 CrackMe01

 

 

或者直接看调用栈

CrackMe01

 

 返回调用是成功发现 

CrackMe01

 

知道了登录成功失败的调用call 直接还原代码

代码比较简单 几分钟看完

CrackMe01

 

 CrackMe01

 

 

 CrackMe01

 

还原成c代码

 

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>



int main(void)
{
    char name[255] = { 0 };
    char pass[255] = { 0 };
    int test = 0;
    scanf("%s %s", &name, &pass);

    if (strlen(name)<4)
    {
        printf("lose");
    }

    test = (int)name[0];
    test*= 41;
    test *= 2;

    sprintf(name, "CW-%d-CRACKED", test);

    if (strcmp(name, pass)==0)
    {
        printf("succeed");
    }
    else
    {
        printf("lose");
    }



}

 

 

 

上一篇:生产消费模型


下一篇:大数据之数据仓库Data Warehouse总结