新CrackMe160之023 - TraceMe

OD载入程序,搜索错误关键词“序列号错误...”定位到0040110F, 调试发现是在timer里的, 我们上下翻看下代码,上面一点就到顶了,没有关键代码
往下,在0040138F处发现了字符串对比,我们下个断点,测试,发现能停下来,且看到了序列号,那上面就是算法了,
从用户名第4位开始每一位乘以固定串“0C 0A 13 09 0C 0B 0A 08”, 注册机代码如下:

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

int main() {
  char user[21] = {0};
  int code = 0;
  char str[9] = {0x0C,0x0A,0x13,0x09,0x0C,0x0B,0x0A,0x08,0};
  printf("用户名: ");
  fgets(user, sizeof(user), stdin);
  int i, len = strlen(user) - 1; //最后一个\n
  if(len < 5) { printf("用户名需要5位以上"); return 0; } 

  for(i=3; i<len; i++){
    code += user[i] * str[(i - 3) % 8];
  }
  printf("系列号: %d\n", code);
  getchar();
  return 0;
}

运行示例:
用户名: abcde
系列号: 2210

 
 
本节高手录制的视频,点击前往查看

 
 
 

使用的工具连接(工具有点多有点大,可以先下OD,其它的后面慢慢下) 点击前往下载

下面是我的OD的界面布局,我觉得这4个是最常用的界面,其它的我基本上没用到~
OD界面布局

posted @ 2024-12-10 09:06  hankerstudio  阅读(13)  评论(0)    收藏  举报