新手逆向练习与详解(8)(详解带有源文件)48-CrackMe

我这里和大家声明一下 我这个是文件 是来自吾爱破解的creakme 160   导航链接  帖子里面有更厉害的思路  

本帖是编号为48的creakme 

其实从上一篇我就开始不上传那些creakme文件了  一是我已经把源文件上传了 大家其实有渠道下载的 二是我感觉也没有多少人看 这样搞也没有什么意思  

然后这一个 creakme 看起来比较好玩

随便点几个格子看看 

看完了这些窗口 我们拖入od观察一下

其实看到了 IsDlgButtonChecked  就可以知道和我们这个按键有关系了

看到这里的分析其实应该就可以懂了

那么那几个字符是什么 我们来看一下 

其实就是我标记的地方(上面有个0x16没有标记上 m其实就是\0的作用)了 这也可以解释上面的ecx为什么等于0x4d 就跳出循环了  然后如果认为可以开心的写注册机了 

那就大错特错了 因为这里有个让人比较让人头疼的地方 那就是 他们控件的值并不是按顺序来的 !!!我一开始还在od里面找规律来着(瑟瑟发抖) 所以需要查看他们的控件顺序  

这里用的工具如下图所示

测出的值是{97,73,94,22,37,38,33,89,83,21,55,49,72,93,12,82,39,29}

那么可以写出注册机了

#include <iostream>
#include <stdio.h>
#include <math.h>
#include <algorithm>
#include <string.h>
using namespace std;
//真正的控件信息 0x4d 是为了最后一位的计算
const long long int TURE=0x328FE;
//实际的信息
long long int slove[20]={97,73,94,22,37,38,33,89,83,21,55,49,72,93,12,82,39,29,0x4d};
long long int slo[20] = {0x16, 0x49, 0x5E, 0x15, 0x27, 0x26, 0x21, 0x25, 0x1D, 0x59, 0x53, 0x37, 0x31, 0x48, 0x5D, 0x0C,0x61, 0x52, 0x4D};
//od 里面的信息
long long int sl[20] = {0x16, 0x49, 0x5E, 0x15, 0x27, 0x26, 0x21, 0x25, 0x1D, 0x59, 0x53, 0x37, 0x31, 0x48, 0x5D, 0x0C,0x61, 0x52, 0x4D};
bool print[20];
void prin()
{
     for(int i=0;i<9;i++)
     {
          printf("%d ",print[i]);
     }
     printf("\n");
     for(int i=9;i<18;i++)
     {
         printf("%d ",print[i]);
     }
}
void sloves(long long int anss,int k)
{
    if(anss>TURE||k>=18)
        return;
    if(anss==TURE)
    {
        prin();
        return;
    }
    for(int i=k;i<18;i++)
    {
          print[i]=1;
          sloves(anss+slove[i],i+1);
          print[i]=0;
    }
}
int main()
{
    memset(print,0,sizeof(print));
    //od里面的计算过程
    for(int i=0;i<18;i++)
    {
        sl[i]*=sl[i+1];
        sl[i]*=(i+1);
    }//不能直接用控件 因为顺序不同会出错
    for(int i=0;i<18;i++)
    {
        for(int j=0;j<18;j++)
        {
             if(slove[i]==slo[j])
             {
                 slove[i]=sl[j];
             }
        }
    }
     sloves(0,0);
    return 0;
}

注册成功!!!!!

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值